From 4f3d3596b24b5bd86a4fd92801d0ffb68711d06a Mon Sep 17 00:00:00 2001 From: euronion Date: Tue, 1 Jul 2025 11:40:25 +0200 Subject: [PATCH 01/30] dev: Use cases, design and context --- docs/class-diagram.puml | 232 +++++++++++++++++++++++++ docs/copilot-context.md | 22 +++ docs/design.md | 374 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 628 insertions(+) create mode 100644 docs/class-diagram.puml create mode 100644 docs/copilot-context.md create mode 100644 docs/design.md diff --git a/docs/class-diagram.puml b/docs/class-diagram.puml new file mode 100644 index 00000000..0bbdbdf1 --- /dev/null +++ b/docs/class-diagram.puml @@ -0,0 +1,232 @@ +@startuml Class Diagram +class UnitValue { + - value: float + - unit: str +} + +note left of UnitValue::unit + Unit should be able to accomodate any unit of measurement, + currencies+years, LHVs and different energy carriers. + e.g. EUR_2020, kWh_electricity, kWh_hydrogen_LHV +end note + +class Source { + - name: str + - authors: str + - url: str + - url_archive: str + - urldate: str + - urldate_archive: str + + + store_in_wayback() + + retrieve_from_wayback() +} + +note right of Source::store_in_wayback + Stores the source in the Internet Archive's Wayback Machine, + to keep it accessible in the future. +end note + +note right of Source::retrieve_from_wayback + Retrieves the archive of the source, e.g., from a URL. +end note + +class Parameter { + - quantity: UnitValue + - provenance: str + - note: str + - sources: SourceContainer +} + +Parameter --> UnitValue : quantity + +note right of Parameter + Encapsulates a value, its unit (via UnitValue, as quantity), + data provenance (via sources). +end note + +class Technology { + - region: str + - case: str + - year: int + - technology: str + - detailed_technology: str + - capacity: Parameter + - investment: Parameter + - specific_investment: Parameter + - lifetime: Parameter + - wacc: Parameter + // Parameters are examples + // The user should be able to freely add more parameters + - ...: Parameter + // To distinguish different inputs/outputs, use prefixes like + - input-hydrogen: Parameter + - input-electricity: Parameter + - ... + - output-hydrogen: Parameter + - output-electricity: Parameter + + + adjust_currency(): Technology // or inplace + + adjust_region(): Technology // or inplace + + adjust_scale(): Technology // or inplace + + calculate_EAC(): Parameter // or inplace + + calculate_efficiency(): Parameter // or inplace + + calculate_specific_investment(): Parameter // or inplace +} + +note right of Technology::inputs + A technology generally represents a conversion between + an input and an output. These are all the inputs, e.g. + quantity of water and electricity. +end note + +note right of Technology::outputs + A technology generally represents a conversion between + an input and an output. These are all the outputs, e.g. + quantity hydrogen, oxygen and heat. +end note + +note right of Technology::adjust_currency + Changes the currency used by all attributes using currencies. +end note + +note right of Technology::adjust_region + Based on yet-to-be-determined logic and inputs, change the + attributes of the Technology to match a different region. +end note + +note right of Technology::adjust_scale + Scales some members values (e.g., capacity, investment) to a + different capacity based on a scaling factor. +end note + +note right of Technology::calculate_EAC + The `calculate_XXX` methods use attributes from the + Technology object to calculate the values of missing attributes + (or potentially calculate and then compare with current values + to check for consistency). +end note + +class Container { + - schema_name: str + - schema_path: Path + + get(**criteria): object | Container | None + + to_csv() + + to_excel() + + to_dataframe() +} + +note top of Container + Consider 'Container' as abstract base class for all containers + for unifying the common export and schema-related functionality + required by all data-holding classes. +end note + +note left of Container::schema_name + The name of the schema used for this container, e.g. currently "technologies" or "sources". + This is used to identify the type of data contained in the container. +end note + +note left of Container::get + Provides a generic get(**criteria) + method to retrieve contained objects matching selection criteria: + - If exactly one object matches, returns that object or a Container with this one object. + - If multiple objects match, returns a Container of the same type with the matches. + - If no matches, returns None or an empty Container. +end note + +note left of Container::to_csv + Export the data to a csv file for sharing / usage in e.g. Excel, ... . + Aligned with datapackage schema. + e.g. all {technology} or {source} objects. + Like the current Technologies(...).to_csv() method. +end note + +note left of Container::to_excel + Export all the data to a excel file for usage in Excel and similar tools, ... . + Aligned with datapackage schema. +end note + +note left of Container::to_dataframe + Flatten the Container and its members into a pandas DataFrame, that can be manipulated. + Dataframe should be compatible with the datapackage schema, such that it can be used for e.g. the to_csv() method. +end note + + +class TechnologyContainer { + - technologies: Iterable + + get(**criteria): Technology | TechnologyContainer | None + + create_projection(): TechnologyContainer + ' TODO: Think about more methods here +} + +note right of TechnologyContainer::get + Implements the generic get method from "Container" for "TechnologyContainer". + Filters contained Technology objects by the attributes and returns matches: + region, case, year, technology, detailed_technology. + - If exactly one Technology matches, returns that Technology. + - If multiple Technologies match, returns a TechnologyContainer with the matches. + - If no matches, returns None or an empty TechnologyContainer. +end note + +note right of TechnologyContainer::create_projection + e.g. learning curve, interpolation, extrapolation; + based on the Technology objects in the container. + Either returns a new TechnologyContainer or adds the + Technology objects to the current container. +end note + +class SourceContainer { + - sources: Iterable + + retrieve_all_archives() +} + +note left of SourceContainer::retrieve_all_archives + Triggers the retrieve_from_wayback method for all sources + and stores the files locally. +end note + +class Datapackage { + - name: str + - path: Path + - technologies: TechnologyContainer + - sources: SourceContainer + - // potentially other Containers in the future + + to_datapackage() +} + +note top of Datapackage + Represents a datapackage, which is a collection of data files + and metadata that describes the data. + Our package includes pre-packaged data in this format and allows + enables to read and write data in this standardised way. + Currently implemented through frictionless with .csv and schema.json files. +end note + +note right of Datapackage::name + Currently we use "source" as a reference to pre-packaged data and for a column in "technologies.csv". + The Datapackage.name would substitute for referencing to pre-packaged data, e.g. "example01" would be + a packaged data included with `technologydata`. +end note + +note right of Datapackage::technologies + Derived from the TechnologyContainer. +end note + +note right of Datapackage::sources + Derived from all Source objects that are related to the TechnologyContainer (i.e., all sources referenced by technologies and their parameters). +end note + +note right of Datapackage::to_datapackage + Exports all member Source and TechnologyContainer to a folder following the datapackage + specification, including the schema .json files and the .csv files. +end note + +Container <|-- TechnologyContainer +Container <|-- SourceContainer +Parameter --> SourceContainer : sources +Technology --> "*" Parameter : uses for its members +TechnologyContainer --> "*" Technology : consists of +SourceContainer --> "*" Source : consists of +Datapackage --> "1" TechnologyContainer : contains +@enduml \ No newline at end of file diff --git a/docs/copilot-context.md b/docs/copilot-context.md new file mode 100644 index 00000000..48efa9d9 --- /dev/null +++ b/docs/copilot-context.md @@ -0,0 +1,22 @@ +## General + +* Description of use cases in `docs/design.md` +* Class diagramm in `docs/class-diagram.puml` + +## Tools + +* `ruff` for formatting and linting +* `uv` for package management with `pyproject.toml` for configuration and package metadata +* `pytest` for testing all classes and methods + * a `tests/conftest.py` for all the fixtures + * a `tests//input` and `tests//output` for input and output files +* `mypy` for type checking +* `pre-commit` for setting up linting, formatting and checking hooks, configured via `.pre-commit-config.yaml` +* `pydantic` for data validation +* `mkdocs` for documentation generation, configured via `docs/mkdocs.yaml` + +## Packages to depend on + +* `pydeflate` for currency conversions and inflation adjustments +* `pint` for unit conversions +* `savepagenow` for archiving web pages using the Wayback Machine \ No newline at end of file diff --git a/docs/design.md b/docs/design.md new file mode 100644 index 00000000..31064d38 --- /dev/null +++ b/docs/design.md @@ -0,0 +1,374 @@ +# Design + +1. [Design](#design) + 1. [Target audience](#target-audience) + 2. [Use Cases](#use-cases) + 1. [🧾 UC-001: Screen techno-economic inputs for validity and completeness](#uc-001-screen-techno-economic-inputs-for-validity-and-completeness) + 2. [🧾 UC-002: Harmonize multiple input datasets](#uc-002-harmonize-multiple-input-datasets) + 3. [🧾 UC-003: Transform assumptions into model-ready formats](#uc-003-transform-assumptions-into-model-ready-formats) + 4. [🧾 UC-004: Compare techno-economic indicators across datasets](#uc-004-compare-techno-economic-indicators-across-datasets) + 5. [🧾 UC-005: Audit data provenance and transformation trace](#uc-005-audit-data-provenance-and-transformation-trace) + + +`technologydata` is designed for energy system modellers in mind. +It intendeds to serve common use cases encountered during the design, development and execution of energy system model experiments, such as: + +* Screening techno-economic inputs for energy systems +* Comparing techno-economics indicators +* Harmonizing inputs +* Modelling of input assumptions for gap filling +* Transformation of assumptions into model-ready input formats + +The project was started for PyPSA-Eur and has since then been expanded to serve more models and purposes. +As such it has been leaning towards serving the purposes of PyPSA-Eur and related models. +We hope to expand it to serve the wider energy system modeling community and a such welcome suggestions and contributions. + +## Target audience + +The users we target are Energy System Modellers and Analysts. +We assume they are all: + +* Familiar with the concept of techno-economics on how to describe technical and economic parameters of technologies for energy system models +* Familiar with the methodology of transforming techno-economic parameters for alignment and harmonization + +The users differ in their experience in these fields, but are generally aware of the methodological background behind +the transformations that we make available, like inflation adjustments, currency conversions or unit conversions. + +* They prefer simplicity and robustness in use over being able to customize the transformations. +* They would like to be offered a range of options to choose from, but not too many. +* They would like to be able to use the package without having to read too much documentation, but require clear documentation on the transformations that are applied. +* Data provenance and reproducibility are important to them, so they need to be able to trace data back to its source and understand all individual steps that were applied in the transformation process to the data. + +The users differ in their experience with Python and programming in general, we aim to serve three main user types: + +1. Programmers and Data Engineers: + * Well familiar with using Python and object-oriented programming languages, data processing and exchange formats. + * Interacts with the package through Python scripts, Python modules and Jupyter notebooks. +2. Energy System Modeller: + * Only basic Python programming skills. + * Interacts with the package through a Jupyter notebook or a Python script; may want to simply access and inspect the data without writing and executing code. +3. Energy Analyst: + * No programming skills or only very basic Python skills like using pandas or DataFrames. + * Interacts with the package either through a Jupyter notebook or wants to be able to use csv / Spreadsheet files for inspection and use of the data. + +## Use Cases + +Below follow central use cases that we want to serve with `technologydata`. + +### 🧾 UC-001: Screen techno-economic inputs for validity and completeness + +#### πŸ§‘β€πŸ’» Actor(s) +- **Primary**: Energy System Modeller, Programmer +- **Secondary**: Energy Analyst (if reviewing pre-screened data) + +#### 🎯 Goal +Detect and correct inconsistencies or omissions in techno-economic input data, ensuring it adheres to the package's schema and parameter constraints. + +#### πŸ“š Pre-conditions +- Python environment with `technologydata` installed +- Input data provided as: + - JSON (conforming to data schema) + - package-provided JSON files (conforming to schema) + - user-provided e.g. through the `technologydata` class-interface or through a special pandas DataFrame +- Users are familiar with the structure of `Technology`, `Parameter`, and `Source` classes + +#### 🚦 Trigger +- Instantiation of one or more `Technology` object with user-provided or pre-compiled data +- Manual invocation of validation or consistency-check method + +#### 🧡 Main Flow + +1. User gets/loads or defines technology input (via JSON, DataFrame, or the packaged data). +2. `Technology` object is instantiated, triggering automatic validation. +3. Schema checks enforce: + - Presence of required fields (e.g., name, parameter value, unit, source) + - Consistency between parameters (e.g., energy unit alignment) +4. User manually runs `.check_consistency()` or similar method to detect conflicting or incomplete parameters. +5. User manually runs `.calculate_parameters()` to derive + - specific missing parameters based on known rules (e.g., specific investment, EAC), or + - all missing parameters that can be derived from the existing parameters +6. The User can manually update parameters, either overwriting existing or adding missing ones. +7. Validated and completed `Technology` object is now ready for transformation or analysis. + +#### πŸ” Alternate Flows + +- **Invalid schema**: + - System raises a validation exception and rejects the data. +- **Inconsistent parameters**: + - Warnings are logged; object remains instantiable but marked as incomplete. +- **Partial data**: + - User is able to complete missing fields to the `Technology` object + +#### βœ… Post-conditions +- One or more `Technology` objects validated and completed with all parameters that can be derived, or +- Errors on schema-violations and Warning about inconsistencies are logged. + +#### πŸ§ͺ Sample Input/Output + +```python +from technologydata import DataPackage, Parameter, Technology, Source +dp = DataPackage.from_json("path/to/data_package") # triggers validation +techs = dp.technologies # Access the TechnologyContainer + +techs.check_consistency() # Checks all technologies for consistency +techs = techs.calculate_parameters(parameters=["specific-investment", "eac"]) + +tech = techs[0] # Access a specific Technology object + +tech.check_consistency() # Check consistency of a single Technology object +tech = tech.calculate_parameters(parameters="") # Calculate missing parameters + +# Manually created Technology object +src = Source(name="A source", url="http://example.com/source") +src2 = Source(name="Another source", url="http://example.com/source2") +tech = Technology( + name="Example Technology", + parameters={ + "specific-investment": Parameter(value=1000, unit="EUR_2020/kW", sources=src), + "investment": Parameter(value=9000, unit="EUR_2020", sources=src2), + "lifetime": Parameter(value=20, unit="years", sources=[src,src2]) + }, +) + +print(tech["lifetime"]) # Access and show a specific parameter (value, unit, sources) +tech["lifetime"].value = 50 # Update a parameter value +``` + +#### πŸ“Š Importance & Frequency + +* Importance: High +* Usage Frequency: Frequent, core workflow entry point + +#### πŸ“Œ Notes + +* Consistency logic includes checks for units, and dependency constraints between parameters (e.g. one parameter may be derived from one or more other parameters). +* Schema-based validation is extensible to new parameter types and sources. + +### 🧾 UC-002: Harmonize multiple input datasets + +#### πŸ§‘β€πŸ’» Actor(s) +- **Primary**: Energy System Modeller, Energy Analyst +- **Secondary**: Data Engineer + +#### 🎯 Goal +Enable the user to bring multiple techno-economic datasets to a common basis (currency, year, units) using explicit, user-invoked transformation methods, so that they can be compared or combined. + +#### πŸ“š Pre-conditions +- Python environment with `technologydata` installed +- One or more Technology objects loaded as `DataPackage` or `TechnologyContainer` objects +- User is familiar with available transformation methods (e.g., `adjust_currency`, `adjust_scale`, `adjust_region`) + +#### 🚦 Trigger +- User loads multiple datasets and wishes to harmonize them for comparison or integration + +#### 🧡 Main Flow + +1. User loads datasets (e.g., from JSON, CSV, or DataFrame) into separate `DataPackage` or `TechnologyContainer` objects or creates them programmatically through the package's class interface. +2. User inspects the datasets to identify differences in currency, year, units, or other conventions. +3. User applies transformation methods as needed: + - `.adjust_currency(target_currency)` + - `.adjust_scale(target_capacity, scaling_exponent)` + - `.adjust_region(target_region)` + - Unit conversions per parameter via Technology or TechnologyContainer level methods +4. User repeats or chains transformations as required or desired for each dataset. +5. User verifies harmonization by inspecting key parameters and units. +6. Harmonized datasets are now ready for comparison, merging, or further analysis. + +#### πŸ” Alternate Flows + +- **Unsupported transformation**: System raises an error if a requested transformation is not supported due to missing parameters in one or more of the Technology objects. +- **Partial harmonization**: User can harmonize only a subset of parameters. + +#### βœ… Post-conditions +- All datasets are harmonized to the user-specified conventions, e.g. currency, currency year, units. + +#### πŸ§ͺ Sample Input/Output + +```python +from technologydata import DataPackage + +dp1 = DataPackage.from_json("dataset1.json") +dp2 = DataPackage.from_json("dataset2.json") + +dp1.technologies = dp1.technologies.adjust_currency(to_currency="EUR_2020") +dp2.technologies = dp2.technologies.adjust_currency(to_currency="EUR_2020") +dp1.technologies = dp1.technologies.adjust_scale(to_capacity=100, scaling_exponent=0.5) +dp2.technologies = dp2.technologies.adjust_scale(to_capacity=100, scaling_exponent=0.5) + +dp1.technologies = dp1.technologies.adjust_region(to_region="EUR") +dp2.technologies = dp2.technologies.adjust_region(to_region="EUR") + +dp1.technologies = dp1.technologies.adjust_units(parameter="specific-investment", to_unit="EUR/kW") +# ... further harmonization as needed +``` + +#### πŸ“Š Importance & Frequency + +* Importance: High +* Usage Frequency: Frequent, especially when integrating or comparing datasets + +#### πŸ“Œ Notes + +* All harmonization steps are explicit and user-driven; no automatic harmonization is performed. +* The user is responsible for the order and combination of transformations. +* Optionally, each transformation could be logged as data provenance, allowing users to trace back the steps taken and record them in e.g. a output file for documentation. + +### 🧾 UC-003: Transform assumptions into model-ready formats + +#### πŸ§‘β€πŸ’» Actor(s) +- **Primary**: Energy System Modeller, Programmer + +#### 🎯 Goal +Allow the user to derive and access all model-relevant parameters (e.g., EAC, specific investment) from harmonized data, ready for direct use in energy system models such as PyPSA-Eur. + +#### πŸ“š Pre-conditions +- One `Technology` object or multiple in a `TechnologyContainer` or `DataPackage` available +- User knows which parameters are required for the target model + +#### 🚦 Trigger +- User wants to prepare data for model input, e.g., for PyPSA-Eur + +#### 🧡 Main Flow + +1. User ensures all required base parameters (e.g., WACC, lifetime, investment) are present and harmonized. +2. User invokes calculation methods to derive model-ready parameters: + - `.calculate_parameters(parameters="EAC")` + - `.calculate_parameters(parameters="specific-investment")` +3. System computes and adds the derived parameters to the relevant `Technology` objects. +4. User accesses the parameters directly from the `Technology` objects for export or further use. + +#### πŸ” Alternate Flows + +- **Missing base parameters**: System raises an error if parameters required for the calculation are missing. +- **Calculation error**: System logs the error and aborts the calculation. + +#### βœ… Post-conditions +- All required model parameters are present and accessible in the `Technology` objects, ready for export or direct use. + +#### πŸ§ͺ Sample Input/Output + +```python +techs = dp.technologies +techs = techs.calculate_parameters(parameters=["specific-investment"]) + +tech = techs[0] # Access a specific Technology object +tech.calculate_parameters(parameters="EAC") +tech["EAC"].value # Access the calculated EAC parameter value +``` + +#### πŸ“Š Importance & Frequency + +* Importance: High +* Usage Frequency: Frequent, especially before running model scenarios + +#### πŸ“Œ Notes + +- + +### 🧾 UC-004: Compare techno-economic indicators across datasets + +#### πŸ§‘β€πŸ’» Actor(s) +- **Primary**: Energy Analyst, Energy System Modeller + +#### 🎯 Goal +Enable the user to systematically compare key techno-economic parameters (e.g., CAPEX, OPEX, efficiency) across multiple harmonized datasets in a tabular format. + +#### πŸ“š Pre-conditions +- Two or more `Technology` objects available as `TechnologyContainer` or `DataPackage` objects +- User knows which parameters and technologies to compare + +#### 🚦 Trigger +- User wants to compare indicators across datasets for quality control, reporting, or analysis + +#### 🧡 Main Flow + +1. User selects datasets for comparison and technologies based on similar features, e.g. the same technology name. +2. User aligns datasets on specified parameters. +3. User generates a comparison table (e.g., pandas DataFrame) showing values from each dataset side by side. +4. User reviews the DataFrame, exports it for further analysis and optionally creates visualizations using external tools. + +#### πŸ” Alternate Flows + +- **Manually created comparison**: User can manually create a comparison table by selecting specific parameters and technologies individually through their `.values` attributes. + +#### βœ… Post-conditions +- Tabular comparison of selected parameters across datasets is available for review and export. + +#### πŸ§ͺ Sample Input/Output + +```python +from technologydata import DataPackage + +dp = DataPackage([dp1, dp2]) + +techs = dp.technologies + +techs = techs.get(technology="Solar PV", region="EUR") +comparison_df.to_dataframe() + +techs["lifetime"].values # Access lifetime values across technologies +``` + +#### πŸ“Š Importance & Frequency + +* Importance: Medium +* Usage Frequency: Regular, especially for data quality checks and exploring values to be included into a model + +#### πŸ“Œ Notes + +* Tabular comparison is the core feature; visualizations can be build on top of the DataFrame by the user themselves. +* Optional: Outlier detection and summary statistics could be a nice feature, but are also part of `pandas` already, so we can put this into the documentation as a suggestion for the user to explore themselves. + +### 🧾 UC-005: Audit data provenance and transformation trace + +#### πŸ§‘β€πŸ’» Actor(s) +- **Primary**: Energy System Modeller +- **Secondary**: Energy Analyst + +#### 🎯 Goal +Allow the user to trace the origin and transformation history of each data point, enabling transparency and reproducibility. + +#### πŸ“š Pre-conditions +- Data loaded and/or transformed using `technologydata` + +#### 🚦 Trigger +- User requests provenance or transformation history for a specific parameter, object or Container. + +#### 🧡 Main Flow + +1. User selects a `parameter` of a `Technology` object. +2. The user requests the provenance information for that parameter. +3. System provides the information about: + - Original source(s) of the data (from `Source` and `SourceContainer`) of the parameter + - All transformations applied by our package (e.g., currency adjustment, scaling, calculations, including the values that were used for these transformations) +4. User can export or document the provenance trace for reporting or documentation. + +#### πŸ” Alternate Flows + +- **Manually changed information**: If the user made manual changes at some point, then the system only notifies and provides trace over what was done by the package; User changes are not tracked. +- **Requesting provenance for a Technology or TechnologyContainer**: The user can access the provenance information for all parameters of a Technology or TechnologyContainer by exporting it to a DataFrame or JSON. + +#### βœ… Post-conditions +- User has access to a detailed provenance and transformation trace for any data point. +- Reports or logs can be exported for documentation. + +#### πŸ§ͺ Sample Input/Output + +```python +print(tech["EAC].provenance) + +techs = dp.technologies +techs.to_dataframe() # Includes provenance information in the DataFrame as a dedicated column + +dp.to_json("") # Includes provenance information in the JSON output +``` + +#### πŸ“Š Importance & Frequency + +* Importance: Medium (for transparency and reproducibility) +* Usage Frequency: Occasional, but critical for future-us, report writing and rapport + +#### πŸ“Œ Notes + +* Only transformations performed by the package are tracked; user-made changes must be recorded manually. +* Provenance tracking should be automatic and cover all package-driven transformations. From b099964e63c66263f882d022b5cf05798fea39a2 Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Mon, 21 Jul 2025 11:02:46 +0200 Subject: [PATCH 02/30] code: initial new package structure (#13) * code: initial new package structure * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: add licensing with reuse * code: update .gitignore * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: changes to datapackage.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * update class diagram * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: implementation * code: new additions * code: modify puml file * code: add test_commons.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: new changes * new changes to source * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: add test_source.py * code: implement SourceCollection * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: source_collection * update puml * code: doc changes * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * pre-commit * doc: update design.md * code: modify example in parameter.py * doc: remove Collection class * code: export json schema * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * doc: remove Collection * pre-commit changes * doc: Container -> Collection * code: expand Source Collection * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update .github/workflows/ci.yaml remove pydeflate from CI Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update .gitignore remove pydeflate from .gitignore Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update .pre-commit-config.yaml quarterly updates Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update REUSE.toml remove pydeflate from REUSE.toml Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update REUSE.toml Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update technologydata/technology.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * new changes * Update technologydata/unit_value.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * code: update __init__.py description * Update REUSE.toml Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update REUSE.toml Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update REUSE.toml Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update REUSE.toml Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update pyproject.toml Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * code: remove params check in conftest.py * Update pyproject.toml Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * add author * Update technologydata/parameter.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update technologydata/datapackage.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update technologydata/source_collection.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * code: rework imports * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: fix imports * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update technologydata/source_collection.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * code: modify method name * Update technologydata/source_collection.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * code: update source_collection * code: kwargs source_collection * code: update to_json * code: modify from_json * code: add get method for SourceCollection * code: unit test get method for source_collection * Update technologydata/source_collection.py --------- Co-authored-by: Fabrizio Finozzi Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> --- .codespell.ignore | 3 + .github/workflows/ci.yaml | 41 + .gitignore | 74 + .pre-commit-config.yaml | 68 + LICENSES/CC-BY-4.0.txt | 156 + LICENSES/MIT.txt | 18 + REUSE.toml | 15 + docs/{copilot-context.md => CLAUDE.md} | 8 +- docs/class-diagram.puml | 127 +- docs/design.md | 49 +- pyproject.toml | 127 + technologydata/__init__.py | 24 + technologydata/datapackage.py | 86 + technologydata/parameter.py | 84 + technologydata/source.py | 375 +++ technologydata/source_collection.py | 199 ++ technologydata/technology.py | 182 ++ technologydata/unit_value.py | 71 + technologydata/utils/__init__.py | 13 + technologydata/utils/commons.py | 269 ++ test/conftest.py | 97 + test/test_commons.py | 141 + .../sources.json | 20 + .../technologies.json | 276 ++ .../technologies.json | 166 ++ test/test_source.py | 124 + test/test_source_collection.py | 219 ++ uv.lock | 2583 +++++++++++++++++ 28 files changed, 5516 insertions(+), 99 deletions(-) create mode 100644 .codespell.ignore create mode 100644 .github/workflows/ci.yaml create mode 100644 .gitignore create mode 100644 .pre-commit-config.yaml create mode 100644 LICENSES/CC-BY-4.0.txt create mode 100644 LICENSES/MIT.txt create mode 100644 REUSE.toml rename docs/{copilot-context.md => CLAUDE.md} (85%) create mode 100644 pyproject.toml create mode 100644 technologydata/__init__.py create mode 100644 technologydata/datapackage.py create mode 100644 technologydata/parameter.py create mode 100644 technologydata/source.py create mode 100644 technologydata/source_collection.py create mode 100644 technologydata/technology.py create mode 100644 technologydata/unit_value.py create mode 100644 technologydata/utils/__init__.py create mode 100644 technologydata/utils/commons.py create mode 100644 test/conftest.py create mode 100644 test/test_commons.py create mode 100644 test/test_data/solar_photovoltaics_example_03/sources.json create mode 100644 test/test_data/solar_photovoltaics_example_03/technologies.json create mode 100644 test/test_data/solar_photovoltaics_example_04/technologies.json create mode 100644 test/test_source.py create mode 100644 test/test_source_collection.py create mode 100644 uv.lock diff --git a/.codespell.ignore b/.codespell.ignore new file mode 100644 index 00000000..cf2749ba --- /dev/null +++ b/.codespell.ignore @@ -0,0 +1,3 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml new file mode 100644 index 00000000..e5c703bb --- /dev/null +++ b/.github/workflows/ci.yaml @@ -0,0 +1,41 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT +name: Technologydata prototype CI + +on: + push: + branches: [prototype] + pull_request: + branches: [prototype] + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.13" + + - name: Cache Python dependencies + uses: actions/cache@v3 + with: + path: ~/.cache/pip + key: ${{ runner.os }}-pip-${{ hashFiles('**/uv.lock') }} + restore-keys: | + ${{ runner.os }}-pip- + - name: Install package and dependencies + run: | + python -m pip install uv + uv lock + uv sync + + - name: Run unit tests + run: | + uv run pytest diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..3ce78b52 --- /dev/null +++ b/.gitignore @@ -0,0 +1,74 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +# Byte-compiled / optimized / DLL files +*__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +*.egg-info/ +.installed.cfg +*.egg + +# Virtual environments +.env/ +.venv/ +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# PyInstaller +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# PyCharm +.idea/ + +# VS Code +.vscode/ + +# macOS +.DS_Store + +# Jupyter Notebook +.ipynb_checkpoints/ + +# mypy +.mypy_cache/ +.dmypy.json diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 00000000..60665819 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,68 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +ci: + autoupdate_schedule: quarterly + +repos: + # Basic pre-commit hooks for whitespace, merge conflicts, etc. +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v5.0.0 + hooks: + - id: check-merge-conflict + - id: check-added-large-files + args: ['--maxkb=1000'] + - id: trailing-whitespace + - id: end-of-file-fixer + + # Ruff: Python linter and formatter +- repo: https://github.com/astral-sh/ruff-pre-commit + rev: v0.11.8 + hooks: + - id: ruff + args: [--fix] + - id: ruff-format + + # Codespell: Checks for common misspellings +- repo: https://github.com/codespell-project/codespell + rev: v2.4.1 + hooks: + - id: codespell + args: ['--ignore-regex="(\b[A-Z]+\b)"', '--ignore-words=.codespell.ignore'] + types_or: [python, rst, markdown] + + # Jupyter notebook cleanup +- repo: https://github.com/aflc/pre-commit-jupyter + rev: v1.2.1 + hooks: + - id: jupyter-notebook-cleanup + args: ['--remove-kernel-metadata'] + + # Pretty-format-yaml: YAML formatter +- repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks + rev: v2.14.0 + hooks: + - id: pretty-format-yaml + args: [--autofix, --indent, '2', --preserve-quotes] + + # Mypy: Static type checker for Python +- repo: https://github.com/pre-commit/mirrors-mypy + rev: 'v1.15.0' + hooks: + - id: mypy + args: [--strict, --ignore-missing-imports, --config-file=pyproject.toml] + additional_dependencies: [tokenize-rt==3.2.0] + + # Pyupgrade: Automatically upgrades Python syntax +- repo: https://github.com/asottile/pyupgrade + rev: v3.16.0 + hooks: + - id: pyupgrade + args: ["--py311-plus"] + + # REUSE: Checks for REUSE license compliance +- repo: https://github.com/fsfe/reuse-tool + rev: v5.0.2 + hooks: + - id: reuse diff --git a/LICENSES/CC-BY-4.0.txt b/LICENSES/CC-BY-4.0.txt new file mode 100644 index 00000000..13ca539f --- /dev/null +++ b/LICENSES/CC-BY-4.0.txt @@ -0,0 +1,156 @@ +Creative Commons Attribution 4.0 International + + Creative Commons Corporation (β€œCreative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an β€œas-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. + +Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors. + +Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public. + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. + +Section 1 – Definitions. + + a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + + d. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. + + g. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights under this Public License. + + i. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. + +Section 2 – Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: + + A. reproduce and Share the Licensed Material, in whole or in part; and + + B. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. + + 3. Term. The term of this Public License is specified in Section 6(a). + + 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. Downstream recipients. + + A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. + + B. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. + + 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). + +b. Other rights. + + 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this Public License. + + 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. + +Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified form), You must: + + A. retain the following if it is supplied by the Licensor with the Licensed Material: + + i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + + v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + + B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and + + C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. + + 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License. + +Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; + + b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. +For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. + + a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. + + b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You. + + c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. + +Section 6 – Term and Termination. + + a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. + + d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. + + e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +Section 7 – Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. + +Section 8 – Interpretation. + + a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. + + c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. + + d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. + +Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the β€œLicensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark β€œCreative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt new file mode 100644 index 00000000..d817195d --- /dev/null +++ b/LICENSES/MIT.txt @@ -0,0 +1,18 @@ +MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO +EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/REUSE.toml b/REUSE.toml new file mode 100644 index 00000000..a6ee5e76 --- /dev/null +++ b/REUSE.toml @@ -0,0 +1,15 @@ +version = 1 +SPDX-PackageName = "technologydata" +SPDX-PackageSupplier = "The technology-data authors" +SPDX-PackageDownloadLocation = "https://github.com/pypsa/technology-data" + +[[annotations]] +path = ["uv.lock"] +SPDX-FileCopyrightText = "The technology-data authors" +SPDX-License-Identifier = "MIT" + + +[[annotations]] +path = ["test/test_data/*/*"] +SPDX-FileCopyrightText = "The technology-data authors" +SPDX-License-Identifier = "CC-BY-4.0" diff --git a/docs/copilot-context.md b/docs/CLAUDE.md similarity index 85% rename from docs/copilot-context.md rename to docs/CLAUDE.md index 48efa9d9..1713f9f3 100644 --- a/docs/copilot-context.md +++ b/docs/CLAUDE.md @@ -1,7 +1,11 @@ + ## General * Description of use cases in `docs/design.md` -* Class diagramm in `docs/class-diagram.puml` +* Class diagram in `docs/class-diagram.puml` ## Tools @@ -19,4 +23,4 @@ * `pydeflate` for currency conversions and inflation adjustments * `pint` for unit conversions -* `savepagenow` for archiving web pages using the Wayback Machine \ No newline at end of file +* `savepagenow` for archiving web pages using the Wayback Machine diff --git a/docs/class-diagram.puml b/docs/class-diagram.puml index 0bbdbdf1..15db0fff 100644 --- a/docs/class-diagram.puml +++ b/docs/class-diagram.puml @@ -1,3 +1,8 @@ +/' +SPDX-FileCopyrightText: The technology-data authors +SPDX-License-Identifier: MIT +'/ + @startuml Class Diagram class UnitValue { - value: float @@ -18,6 +23,7 @@ class Source { - urldate: str - urldate_archive: str + + ensure_in_wayback() + store_in_wayback() + retrieve_from_wayback() } @@ -35,7 +41,7 @@ class Parameter { - quantity: UnitValue - provenance: str - note: str - - sources: SourceContainer + - sources: SourceCollection } Parameter --> UnitValue : quantity @@ -107,92 +113,64 @@ note right of Technology::calculate_EAC to check for consistency). end note -class Container { - - schema_name: str - - schema_path: Path - + get(**criteria): object | Container | None - + to_csv() - + to_excel() - + to_dataframe() -} - -note top of Container - Consider 'Container' as abstract base class for all containers - for unifying the common export and schema-related functionality - required by all data-holding classes. -end note - -note left of Container::schema_name - The name of the schema used for this container, e.g. currently "technologies" or "sources". - This is used to identify the type of data contained in the container. -end note - -note left of Container::get - Provides a generic get(**criteria) - method to retrieve contained objects matching selection criteria: - - If exactly one object matches, returns that object or a Container with this one object. - - If multiple objects match, returns a Container of the same type with the matches. - - If no matches, returns None or an empty Container. -end note - -note left of Container::to_csv - Export the data to a csv file for sharing / usage in e.g. Excel, ... . - Aligned with datapackage schema. - e.g. all {technology} or {source} objects. - Like the current Technologies(...).to_csv() method. -end note - -note left of Container::to_excel - Export all the data to a excel file for usage in Excel and similar tools, ... . - Aligned with datapackage schema. -end note - -note left of Container::to_dataframe - Flatten the Container and its members into a pandas DataFrame, that can be manipulated. - Dataframe should be compatible with the datapackage schema, such that it can be used for e.g. the to_csv() method. -end note - - -class TechnologyContainer { +class TechnologyCollection { - technologies: Iterable - + get(**criteria): Technology | TechnologyContainer | None - + create_projection(): TechnologyContainer + + get(**criteria): Technology | TechnologyCollection | None + + create_projection(): TechnologyCollection ' TODO: Think about more methods here } -note right of TechnologyContainer::get - Implements the generic get method from "Container" for "TechnologyContainer". +note right of TechnologyCollection::get Filters contained Technology objects by the attributes and returns matches: region, case, year, technology, detailed_technology. - If exactly one Technology matches, returns that Technology. - - If multiple Technologies match, returns a TechnologyContainer with the matches. - - If no matches, returns None or an empty TechnologyContainer. + - If multiple Technologies match, returns a TechnologyCollection with the matches. + - If no matches, returns None or an empty TechnologyCollection. end note -note right of TechnologyContainer::create_projection +note right of TechnologyCollection::create_projection e.g. learning curve, interpolation, extrapolation; - based on the Technology objects in the container. - Either returns a new TechnologyContainer or adds the - Technology objects to the current container. + based on the Technology objects in the collection. + Either returns a new TechnologyCollection or adds the + Technology objects to the current collection. end note -class SourceContainer { +class SourceCollection { - sources: Iterable - + retrieve_all_archives() + + retrieve_all_from_wayback() + + to_json() + + to_csv() + + to_dataframe() + + from_json() } -note left of SourceContainer::retrieve_all_archives +note left of SourceCollection::retrieve_all_from_wayback Triggers the retrieve_from_wayback method for all sources and stores the files locally. end note +note left of SourceCollection::to_csv + Export the source collection into a csv file. +end note + +note left of SourceCollection::to_json + Export the source collection into a json file. +end note + +note left of SourceCollection::to_dataframe + Export the source collection into a Pandas dataframe. +end note + class Datapackage { - name: str - path: Path - - technologies: TechnologyContainer - - sources: SourceContainer - - // potentially other Containers in the future + - technologies: TechnologyCollection + - sources: SourceCollection + - // potentially other Collections in the future + to_datapackage() + + from_json() + + to_json() + + get_source_collection() } note top of Datapackage @@ -201,32 +179,31 @@ note top of Datapackage Our package includes pre-packaged data in this format and allows enables to read and write data in this standardised way. Currently implemented through frictionless with .csv and schema.json files. + Please note that the "sources" field is built in the background from "technologies" end note note right of Datapackage::name Currently we use "source" as a reference to pre-packaged data and for a column in "technologies.csv". The Datapackage.name would substitute for referencing to pre-packaged data, e.g. "example01" would be - a packaged data included with `technologydata`. + a packaged data included with `technologydata`. It is meant to be independent of the "TechnologyCollection" or its members. end note note right of Datapackage::technologies - Derived from the TechnologyContainer. + Derived from the TechnologyCollection. end note note right of Datapackage::sources - Derived from all Source objects that are related to the TechnologyContainer (i.e., all sources referenced by technologies and their parameters). + Built in the background with the get_source_collection() method, which derives it from all Source objects that are related to the TechnologyCollection (i.e., all sources referenced by technologies and their parameters). end note note right of Datapackage::to_datapackage - Exports all member Source and TechnologyContainer to a folder following the datapackage + Exports all member Source and TechnologyCollection to a folder following the datapackage specification, including the schema .json files and the .csv files. end note -Container <|-- TechnologyContainer -Container <|-- SourceContainer -Parameter --> SourceContainer : sources +Parameter --> SourceCollection : sources Technology --> "*" Parameter : uses for its members -TechnologyContainer --> "*" Technology : consists of -SourceContainer --> "*" Source : consists of -Datapackage --> "1" TechnologyContainer : contains -@enduml \ No newline at end of file +TechnologyCollection --> "*" Technology : consists of +SourceCollection --> "*" Source : consists of +Datapackage --> "1" TechnologyCollection : contains +@enduml diff --git a/docs/design.md b/docs/design.md index 31064d38..ffcc09fd 100644 --- a/docs/design.md +++ b/docs/design.md @@ -1,3 +1,7 @@ + # Design 1. [Design](#design) @@ -108,7 +112,7 @@ Detect and correct inconsistencies or omissions in techno-economic input data, e ```python from technologydata import DataPackage, Parameter, Technology, Source dp = DataPackage.from_json("path/to/data_package") # triggers validation -techs = dp.technologies # Access the TechnologyContainer +techs = dp.technologies # Access the TechnologyCollection techs.check_consistency() # Checks all technologies for consistency techs = techs.calculate_parameters(parameters=["specific-investment", "eac"]) @@ -119,19 +123,20 @@ tech.check_consistency() # Check consistency of a single Technology object tech = tech.calculate_parameters(parameters="") # Calculate missing parameters # Manually created Technology object -src = Source(name="A source", url="http://example.com/source") -src2 = Source(name="Another source", url="http://example.com/source2") +src = Source(title="A source", authors="example authors", url="http://example.com/source") +src2 = Source(title="Another source", authors="example authors", url="http://example.com/source2") +params: dict[str, Parameter] = { + "efficiency": Parameter(value=0.85, unit="fraction"), + "cost": Parameter(value=1500.0, unit="USD/kW"), +} tech = Technology( - name="Example Technology", - parameters={ - "specific-investment": Parameter(value=1000, unit="EUR_2020/kW", sources=src), - "investment": Parameter(value=9000, unit="EUR_2020", sources=src2), - "lifetime": Parameter(value=20, unit="years", sources=[src,src2]) - }, + name="Solar Photovoltaic", + region="North America", + year=2023, + parameters=params, + case="Best Case", + detailed_technology="Monocrystalline Solar Panels" ) - -print(tech["lifetime"]) # Access and show a specific parameter (value, unit, sources) -tech["lifetime"].value = 50 # Update a parameter value ``` #### πŸ“Š Importance & Frequency @@ -144,7 +149,7 @@ tech["lifetime"].value = 50 # Update a parameter value * Consistency logic includes checks for units, and dependency constraints between parameters (e.g. one parameter may be derived from one or more other parameters). * Schema-based validation is extensible to new parameter types and sources. -### 🧾 UC-002: Harmonize multiple input datasets +### 🧾 UC-002: Harmonize multiple input datasets #### πŸ§‘β€πŸ’» Actor(s) - **Primary**: Energy System Modeller, Energy Analyst @@ -155,7 +160,7 @@ Enable the user to bring multiple techno-economic datasets to a common basis (cu #### πŸ“š Pre-conditions - Python environment with `technologydata` installed -- One or more Technology objects loaded as `DataPackage` or `TechnologyContainer` objects +- One or more Technology objects loaded as `DataPackage` or `TechnologyCollection` objects - User is familiar with available transformation methods (e.g., `adjust_currency`, `adjust_scale`, `adjust_region`) #### 🚦 Trigger @@ -163,13 +168,13 @@ Enable the user to bring multiple techno-economic datasets to a common basis (cu #### 🧡 Main Flow -1. User loads datasets (e.g., from JSON, CSV, or DataFrame) into separate `DataPackage` or `TechnologyContainer` objects or creates them programmatically through the package's class interface. +1. User loads datasets (e.g., from JSON, CSV, or DataFrame) into separate `DataPackage` or `TechnologyCollection` objects or creates them programmatically through the package's class interface. 2. User inspects the datasets to identify differences in currency, year, units, or other conventions. 3. User applies transformation methods as needed: - `.adjust_currency(target_currency)` - `.adjust_scale(target_capacity, scaling_exponent)` - `.adjust_region(target_region)` - - Unit conversions per parameter via Technology or TechnologyContainer level methods + - Unit conversions per parameter via Technology or TechnologyCollection level methods 4. User repeats or chains transformations as required or desired for each dataset. 5. User verifies harmonization by inspecting key parameters and units. 6. Harmonized datasets are now ready for comparison, merging, or further analysis. @@ -222,7 +227,7 @@ dp1.technologies = dp1.technologies.adjust_units(parameter="specific-investment" Allow the user to derive and access all model-relevant parameters (e.g., EAC, specific investment) from harmonized data, ready for direct use in energy system models such as PyPSA-Eur. #### πŸ“š Pre-conditions -- One `Technology` object or multiple in a `TechnologyContainer` or `DataPackage` available +- One `Technology` object or multiple in a `TechnologyCollection` or `DataPackage` available - User knows which parameters are required for the target model #### 🚦 Trigger @@ -274,7 +279,7 @@ tech["EAC"].value # Access the calculated EAC parameter value Enable the user to systematically compare key techno-economic parameters (e.g., CAPEX, OPEX, efficiency) across multiple harmonized datasets in a tabular format. #### πŸ“š Pre-conditions -- Two or more `Technology` objects available as `TechnologyContainer` or `DataPackage` objects +- Two or more `Technology` objects available as `TechnologyCollection` or `DataPackage` objects - User knows which parameters and technologies to compare #### 🚦 Trigger @@ -332,21 +337,21 @@ Allow the user to trace the origin and transformation history of each data point - Data loaded and/or transformed using `technologydata` #### 🚦 Trigger -- User requests provenance or transformation history for a specific parameter, object or Container. +- User requests provenance or transformation history for a specific parameter, object or Collection. #### 🧡 Main Flow 1. User selects a `parameter` of a `Technology` object. 2. The user requests the provenance information for that parameter. 3. System provides the information about: - - Original source(s) of the data (from `Source` and `SourceContainer`) of the parameter + - Original source(s) of the data (from `Source` and `SourceCollection`) of the parameter - All transformations applied by our package (e.g., currency adjustment, scaling, calculations, including the values that were used for these transformations) 4. User can export or document the provenance trace for reporting or documentation. #### πŸ” Alternate Flows - **Manually changed information**: If the user made manual changes at some point, then the system only notifies and provides trace over what was done by the package; User changes are not tracked. -- **Requesting provenance for a Technology or TechnologyContainer**: The user can access the provenance information for all parameters of a Technology or TechnologyContainer by exporting it to a DataFrame or JSON. +- **Requesting provenance for a Technology or TechnologyCollection**: The user can access the provenance information for all parameters of a Technology or TechnologyCollection by exporting it to a DataFrame or JSON. #### βœ… Post-conditions - User has access to a detailed provenance and transformation trace for any data point. @@ -355,7 +360,7 @@ Allow the user to trace the origin and transformation history of each data point #### πŸ§ͺ Sample Input/Output ```python -print(tech["EAC].provenance) +print(tech["EAC"].provenance) techs = dp.technologies techs.to_dataframe() # Includes provenance information in the DataFrame as a dedicated column diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..535a6247 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,127 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +[build-system] +requires = ["setuptools>=64", "setuptools_scm>=8"] +build-backend = "setuptools.build_meta" + +[project] +name = "technologydata" +dynamic = ["version"] +keywords = ["energy", "modelling", "techno-economics", "macroeconomics"] # TODO update +description = "Package for providing common data assumptions for energy system modelling on techno-economics and macro-economics." +readme = "README.md" +authors = [ + { name = "Contributors to technologydata", email = "johannes.hampp@openenergytransition.org" }, + { name = "Contributors to technologydata", email = "fabrizio.finozzi.business@gmail.com" }, +] +classifiers=[ + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Development Status :: 3 - Alpha", + "Environment :: Console", + "Intended Audience :: Science/Research", + "Natural Language :: English", + "Operating System :: OS Independent", +] +requires-python = ">=3.12" +dependencies = [ + "ipykernel>=6.29.5", # this one can go into optional as "dev" + "mypy>=1.15.0", + "pandas>=2.2.3", + "pre-commit>=4.2.0", # this one can go into optional as "dev" + "pytest>=8.3.5", # this one can go into optional as "dev" + "requests>=2.32.3", + "savepagenow>=1.3.0", +] + +[project.urls] +Homepage = "https://github.com/PyPSA/technology-data" +Source = "https://github.com/PyPSA/technology-data" +BugTracker = "https://github.com/PyPSA/technology-data/issues" +Changelog = "https://github.com/PyPSA/technology-data/releases" + +[project.optional-dependencies] +docs = [ + "mkdocs-autolinks-plugin>=0.7.1", + "mkdocs-git-revision-date-localized-plugin>=1.4.7", + "mkdocs-material>=9.6.14", + "mkdocs-minify-plugin>=0.8.0", + "mkdocs-open-in-new-tab>=1.0.8", + "mkdocstrings>=0.29.1", + "mkdocstrings-python>=1.16.11", +] + + +# Setuptools_scm settings + +[tool.uv] +package = true + +[tool.setuptools_scm] +version_scheme = "no-guess-dev" + +[tool.setuptools.packages.find] +include = ["technologydata"] + +# Static type checker settings + +[tool.mypy] +exclude = ['dev/*', 'examples/*', 'doc/*', 'test/*'] +ignore_missing_imports = true +no_implicit_optional = true +warn_unused_ignores = true +show_error_code_links = true +disallow_any_generics = true +warn_return_any = true + +[[tool.mypy.overrides]] +module = "technologydata" +disallow_untyped_defs = true +check_untyped_defs = true + +[[tool.mypy.overrides]] +module = "requests" +ignore_missing_imports = true + +[[tool.mypy.overrides]] +module = "dateutil" +ignore_missing_imports = true + +# Formatter and linter settings + +[tool.ruff] +extend-include = ['*.ipynb'] + +[tool.ruff.lint] +select = [ + 'F', # pyflakes + 'E', # pycodestyle: Error + 'W', # pycodestyle: Warning + 'I', # isort + 'D', # pydocstyle + 'UP', # pyupgrade + 'ANN', # flake-8 annotations + 'TID', # flake8-tidy-imports + 'NPY', # numpy + 'PD', # pandas + 'RUF013', # ruff +] + +ignore = [ + 'ANN401', # Dynamically typed expressions are forbidden + 'E501', # line too long + 'D203', # 1 blank line required before class docstring + 'D212', # Multi-line docstring summary should start at the second line + ] + + +[tool.ruff.lint.per-file-ignores] +"{test}/**"=[ + 'ANN' # flake8-annotations +] + +[tool.ruff.lint.flake8-tidy-imports] +# Disallow all relative imports. +ban-relative-imports = "all" diff --git a/technologydata/__init__.py b/technologydata/__init__.py new file mode 100644 index 00000000..d3380162 --- /dev/null +++ b/technologydata/__init__.py @@ -0,0 +1,24 @@ +# SPDX-FileCopyrightText: The technology-data authors +# SPDX-License-Identifier: MIT + +"""technologydata: A package for managing and analyzing technology data used for energy system models.""" + +from technologydata.datapackage import DataPackage +from technologydata.parameter import Parameter +from technologydata.source import Source +from technologydata.source_collection import SourceCollection +from technologydata.technology import Technology +from technologydata.unit_value import UnitValue +from technologydata.utils.commons import Commons, DateFormatEnum, FileExtensionEnum + +__all__ = [ + "Commons", + "DateFormatEnum", + "FileExtensionEnum", + "UnitValue", + "Technology", + "Parameter", + "Source", + "SourceCollection", + "DataPackage", +] diff --git a/technologydata/datapackage.py b/technologydata/datapackage.py new file mode 100644 index 00000000..27ed5182 --- /dev/null +++ b/technologydata/datapackage.py @@ -0,0 +1,86 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +""" +DataPackage class for managing collections of Technology objects and batch operations. + +Examples +-------- +>>> dp = DataPackage.from_json("path/to/data_package.json") + +""" + +import pathlib + +import pydantic + +from technologydata.source_collection import SourceCollection + +# from technologydata.technology_collection import TechnologyCollection + + +# TODO complete class +class DataPackage(pydantic.BaseModel): # type: ignore + """ + Container for a collection of Technology objects and/or Source objects, with batch operations and loading utilities. + + Parameters + ---------- + name : str + The short-name code of the source + technologies : List[Technology] + List of Technology objects. + + Attributes + ---------- + technologies : List[Technology] + List of Technology objects. + + """ + + name: str + path: pathlib.Path + # technologies: TechnologyCollection + sources: SourceCollection + + # @classmethod + # def from_json(cls, path: pathlib.Path) -> technologydata.DataPackage: + # """ + # Load a DataPackage from a JSON file. + # + # Parameters + # ---------- + # path : Path + # Path to the JSON file. + # + # Returns + # ------- + # DataPackage + # The loaded DataPackage instance. + # + # """ + # with open(path) as f: + # data = json.load(f) + # techs = technologydata.TechnologyCollection( + # [technologydata.Technology(**t) for t in data.get("technologies", [])] + # ) + # # TODO: redo this part once an example JSON is available + # techs = technologydata.TechnologyCollection( + # [technologydata.Technology(**t) for t in data.get("technologies", [])] + # ) + # # You should also handle 'name', 'sources', etc. as needed + # return cls( + # name=data.get("name", ""), + # path=path, + # technologies=techs, + # sources=technologydata.SourceCollection(data.get("sources", [])), + # ) + # + # @classmethod + # def to_json(cls, path: pathlib.Path) -> None: + # pass + # + # @classmethod + # def to_datapackage(cls, path: pathlib.Path) -> None: + # pass diff --git a/technologydata/parameter.py b/technologydata/parameter.py new file mode 100644 index 00000000..10f94bc6 --- /dev/null +++ b/technologydata/parameter.py @@ -0,0 +1,84 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +""" +Parameter class for encapsulating a value, its unit, provenance, notes, and sources. + +Examples +-------- +>>> from technologydata.unit_value import UnitValue +>>> from technologydata.source import Source +>>> uv = UnitValue(value=1000, unit="EUR_2020/kW") +>>> src = Source(name="Example Source", authors="some authors", url="http://example.com") +>>> param = Parameter(quantity=uv, provenance="literature", note="Estimated", sources=[src]) + +""" + +import pydantic + +from technologydata.source_collection import SourceCollection +from technologydata.unit_value import UnitValue + + +# TODO rework class logic +class Parameter(pydantic.BaseModel): # type: ignore + """ + Encapsulate a value with its unit, provenance, notes, and sources. + + Parameters + ---------- + quantity : UnitValue + The value and its unit. + provenance : Optional[str] + Description of the data's provenance. + note : Optional[str] + Additional notes about the parameter. + sources : SourceCollection + One or more sources for the parameter. + + Attributes + ---------- + quantity : UnitValue + The value and its unit. + provenance : Optional[str] + Description of the data's provenance. + note : Optional[str] + Additional notes about the parameter. + sources : SourceCollection + List of sources for the parameter. + + """ + + quantity: UnitValue = pydantic.Field(..., description="The value and its unit.") + provenance: str | None = pydantic.Field(None, description="Data provenance.") + note: str | None = pydantic.Field(None, description="Additional notes.") + sources: SourceCollection = pydantic.Field( + ..., description="Collection of Sources." + ) + + @property + def value(self) -> float: + """ + The numerical value of the parameter. + + Returns + ------- + float + The value. + + """ + return self.quantity.value + + @property + def unit(self) -> str: + """ + The unit of the parameter. + + Returns + ------- + str + The unit. + + """ + return self.quantity.unit diff --git a/technologydata/source.py b/technologydata/source.py new file mode 100644 index 00000000..3b1fd1f7 --- /dev/null +++ b/technologydata/source.py @@ -0,0 +1,375 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +""" +Source class for representing bibliographic and web sources, with archiving support. + +Examples +-------- +>>> src = Source(title="Example Source", authors="The Authors") +>>> src.store_in_wayback() +>>> src.retrieve_from_wayback() + +""" + +import logging +import pathlib +import typing + +import pydantic +import requests +import savepagenow + +import technologydata + +logger = logging.getLogger(__name__) + + +class Source(pydantic.BaseModel): # type: ignore + """ + Represent a data source, including bibliographic and web information. + + Parameters + ---------- + title : str + Title of the source. + authors : str + Authors of the source. + url : Optional[str] + URL of the source. + url_archive : Optional[str] + Archived URL (e.g., from the Wayback Machine). + url_date : Optional[str] + Date the URL was accessed. + url_date_archive : Optional[str] + Date the URL was archived. + + Attributes + ---------- + title : str + Title of the source. + authors : str + Authors of the source. + url : Optional[str] + URL of the source. + url_archive : Optional[str] + Archived URL. + url_date : Optional[str] + Date the URL was accessed. + url_date_archive : Optional[str] + Date the URL was archived. + + """ + + title: str = pydantic.Field(..., description="Title of the source.") + authors: str = pydantic.Field(..., description="Authors of the source.") + url: str | None = pydantic.Field(None, description="URL of the source.") + url_archive: str | None = pydantic.Field(None, description="Archived URL.") + url_date: str | None = pydantic.Field( + None, description="Date the URL was accessed." + ) + url_date_archive: str | None = pydantic.Field( + None, description="Date the URL was archived." + ) + + def ensure_in_wayback(self) -> None: + """ + Ensure that the source URL is archived in the Wayback Machine. + + This method checks if the source's `url` attribute is set and whether + an archived URL or archive date is already present. If neither is available, it attempts to archive the + URL using the Wayback Machine and updates the corresponding attributes. + + Parameters + ---------- + None + + Returns + ------- + None + This method updates the Source object's `url_archive` and `url_date_archive` attributes in place. + + Raises + ------ + ValueError + If the `url` attribute is not set (None or NaN). + + Examples + -------- + >>> from technologydata import Source + >>> source = Source(url="http://example.com", title="Example Site", authors="The Authors") + >>> source.ensure_in_wayback() + A new snapshot has been stored for the url http://example.com with timestamp 2023-10-01T12:00:00Z and Archive.org url http://web.archive.org/web/20231001120000/http://example.com. + >>> source.url_archive + 'http://web.archive.org/web/20231001120000/http://example.com' + >>> source.url_date_archive + '2023-10-01T12:00:00Z' + + """ + if self.url is None: + raise ValueError( + f"The url attribute of the source {self.title} is not set or contains a NaN value." + ) + + if self.url_archive is None and self.url_date_archive is None: + archived_info = self.store_in_wayback(self.url) + if archived_info is not None: + archived_url, new_capture_flag, timestamp = archived_info + if new_capture_flag: + logger.info( + f"A new snapshot has been stored for the url {self.url} with timestamp {timestamp} and Archive.org url {archived_url}." + ) + else: + logger.info( + f"There is already a snapshot for the url {self.url} with timestamp {timestamp} and Archive.org url {archived_url}." + ) + self.url_date_archive = timestamp + self.url_archive = archived_url + + @staticmethod + def store_in_wayback( + url_to_archive: str, + ) -> tuple[typing.Any, bool | None, str | None] | None: + """ + Store a snapshot of the given URL on the Wayback Machine and extract the timestamp. + + The method captures the specified URL using the Wayback Machine and retrieves the + corresponding archive URL along with a formatted timestamp. The timestamp is extracted + from the archive URL and converted to a more readable format. + + Parameters + ---------- + url_to_archive : str + The URL that you want to archive on the Wayback Machine. + + Returns + ------- + tuple[str, bool, str] | None + A tuple containing the archive URL, a boolean indicating if a new capture was conducted (if the boolean is + True, archive.org conducted a new capture. If it is False, archive.org has returned a recently cached capture + instead, likely taken in the previous minutes) and the formatted timestamp (with format YYYY-MM-DD hh:mm:ss) + if the operation is successful. Returns None if the timestamp cannot be extracted due to a ValueError (e.g., + if the expected substrings are not found in the archive URL). + + Examples + -------- + >>> from technologydata import Source + >>> some_url = "some_url" + >>> archived_info = Source.store_in_wayback(some_url) + + """ + archive_url = savepagenow.capture_or_cache(url_to_archive) + try: + # The timestamp is between "web/" and the next "/" afterward + # Find the starting index of "web/" + start_index = archive_url[0].index("web/") + len("web/") + # Find the ending index of the timestamp by locating the next "/" after the start_index + end_index = archive_url[0].index("/", start_index) + # Extract the timestamp substring + timestamp = archive_url[0][start_index:end_index] + output_timestamp = technologydata.Commons.change_datetime_format( + timestamp, + technologydata.DateFormatEnum.SOURCES_CSV, + ) + return archive_url[0], archive_url[1], output_timestamp + except ValueError: + # If "web/" or next "/" not found, return empty string + return None + + def retrieve_from_wayback( + self, download_directory: pathlib.Path + ) -> pathlib.Path | None: + """ + Download a file from the Wayback Machine and save it to a specified path. + + The method retrieves an archived file from the Wayback Machine using the URL + from the url_archive attribute of the instance. The file is saved in the + specified format based on its Content-Type field in the Response Header or the extension + that can be extracted from the URL. + + Parameters + ---------- + download_directory : pathlib.Path + The base path where the file will be saved. + + + Returns + ------- + pathlib.Path | None + The specified path where the file is stored, or None if an error occurs. + + Raises + ------ + requests.exceptions.RequestException + If there is an issue with the HTTP request. + + Notes + ----- + - The attribute "url_archived" should contain a valid URL. + + Examples + -------- + >>> from technologydata import Source + >>> source = Source(title="example01", authors="The Authors") + >>> output_path = source.retrieve_from_wayback(pathlib.Path("base_path")) + + """ + if self.url_archive is None: + logger.error( + f"The url_archive attribute of source {self.title} is not set." + ) + return None + if download_directory is None: + logger.error(f"The base path of the source {self.title} is not set.") + return None + + source_title = technologydata.Commons.replace_special_characters(self.title) + save_path = self._get_save_path( + self.url_archive, download_directory, source_title + ) + + if save_path is None: + logger.warning( + f"It was not possible to determine a file path for the source {source_title}." + ) + return None + + if save_path.is_file(): + logger.warning( + f"There is already a file stored at the path {save_path}. Not downloading or overwriting this file." + ) + return None + + storage_path = self._download_file(self.url_archive, save_path) + return storage_path + + @staticmethod + def _get_save_path( + url_archived: str, source_path: pathlib.Path, source_title: str + ) -> pathlib.Path | None: + """ + Determine the save path based on the content type or archived URL. + + The method retrieves the content type of the archived URL and determines the appropriate + file extension based on the content type or based on the archived URL. It constructs the full save path using + the provided source path and source title. + + Parameters + ---------- + url_archived : str + The URL of the archived file from which the content type will be determined. + source_path : pathlib.Path + The base path where the file will be saved. + source_title : str + The title of the given source from sources.csv, used as the filename. + + Returns + ------- + pathlib.Path | None + The full path where the file should be saved, including the appropriate file extension, + or None if the content type is unsupported or an error occurs. + + Raises + ------ + ValueError + If the extension is not among the supported ones. + + """ + content_type = Source._get_content_type(url_archived) + if content_type is None: + return None + + extension = technologydata.FileExtensionEnum.get_extension( + content_type + ) or technologydata.FileExtensionEnum.search_file_extension_in_url(url_archived) + if extension is None: + raise ValueError( + f"Unable to infer file extension from content type: {content_type} or URL: {url_archived}" + ) + + if source_path is not None and source_title is not None: + return pathlib.Path(source_path, source_title + extension) + else: + return None + + @staticmethod + def _get_content_type(url_archived: str) -> typing.Any: + """ + Fetch the content type of the archived URL. + + The method sends a HEAD request to the specified archived URL to retrieve the + Content-Type from the response headers. It returns the content type as a string + if the request is successful; otherwise, it logs an error and returns None. + + Parameters + ---------- + url_archived : str + The URL of the archived resource for which the content type is to be fetched. + + Returns + ------- + str | None + The Content-Type of the archived URL if the request is successful, or None + if an error occurs during the request. + + Raises + ------ + requests.exceptions.RequestException + If there is an issue with the HTTP request, an error is logged, and None is returned. + + """ + try: + response = requests.head(url_archived) + response.raise_for_status() + return response.headers.get("Content-Type") + except requests.exceptions.RequestException as e: + raise requests.exceptions.RequestException( + f"Failed to retrieve content type: {e}" + ) + + @staticmethod + def _download_file( + url_archived: str, save_path: pathlib.Path + ) -> pathlib.Path | None: + """ + Download the file and save it to the specified path. + + The method retrieves the content from the specified archived URL and saves it + to the provided file path. It handles HTTP errors and logs appropriate messages + based on the outcome of the download operation. + + Parameters + ---------- + url_archived : str + The URL of the archived file to be downloaded. + + save_path : pathlib.Path + The path where the downloaded file will be saved, including the file name. + + Returns + ------- + pathlib.Path | None + The path where the file has been saved if the download is successful, or None + if an error occurs during the download process. + + Raises + ------ + requests.exceptions.RequestException + If there is an issue with the HTTP request, an error is logged, and None is returned. + + """ + try: + response = requests.get(url_archived) + response.raise_for_status() # Check for HTTP errors + + with open(save_path, "wb") as file: + file.write(response.content) + + logger.info(f"File downloaded successfully and saved to {save_path}") + return save_path + except requests.exceptions.RequestException as e: + requests.exceptions.RequestException( + f"An error occurred during file download: {e}" + ) + return None diff --git a/technologydata/source_collection.py b/technologydata/source_collection.py new file mode 100644 index 00000000..8dfd1714 --- /dev/null +++ b/technologydata/source_collection.py @@ -0,0 +1,199 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +"""SourceCollection class for representing an iterable of Source Objects.""" + +import csv +import json +import pathlib +import re + +import pandas +import pydantic + +from technologydata.source import Source + + +class SourceCollection(pydantic.BaseModel): # type: ignore + """ + Represent a collection of sources. + + Parameters + ---------- + sources : List[Source] + List of Source objects. + + Attributes + ---------- + sources : List[Source] + List of Source objects. + + """ + + sources: list[Source] = pydantic.Field(..., description="List of Source objects.") + + def get(self, title: str, authors: str) -> "SourceCollection": + """ + Filter sources based on regex patterns for non-optional attributes. + + Parameters + ---------- + title : str + Regex pattern to filter titles. + authors : str + Regex pattern to filter authors. + + Returns + ------- + SourceCollection + A new SourceCollection with filtered sources. + + """ + filtered_sources = self.sources + + if title is not None: + pattern_title = re.compile(title, re.IGNORECASE) + filtered_sources = [ + s for s in filtered_sources if pattern_title.search(s.title) + ] + + if authors is not None: + pattern_authors = re.compile(authors, re.IGNORECASE) + filtered_sources = [ + s for s in filtered_sources if pattern_authors.search(s.authors) + ] + + return SourceCollection(sources=filtered_sources) + + def __len__(self) -> int: + """ + Return the number of sources in this collection. + + Returns + ------- + int + The number of Source objects in the sources list. + + """ + return len(self.sources) + + def retrieve_all_from_wayback( + self, download_directory: pathlib.Path + ) -> list[pathlib.Path | None]: + """ + Download archived files for all sources in the collection using retrieve_from_wayback. + + Parameters + ---------- + download_directory : pathlib.Path + The base directory where all files will be saved. + + Returns + ------- + list[pathlib.Path | None] + List of paths where each file was stored, or None if download failed for a source. + + """ + return [ + source.retrieve_from_wayback(download_directory) for source in self.sources + ] + + def to_dataframe(self) -> pandas.DataFrame: + """ + Convert the SourceCollection to a pandas DataFrame. + + Returns + ------- + pd.DataFrame + A DataFrame containing the source data. + + """ + return pandas.DataFrame([source.model_dump() for source in self.sources]) + + def to_csv(self, **kwargs: pathlib.Path | str | bool) -> None: + """ + Export the SourceCollection to a CSV file. + + Parameters + ---------- + **kwargs : dict + Additional keyword arguments passed to pandas.DataFrame.to_csv(). + Common options include: + - path_or_buf : str or pathlib.Path or file-like object, optional + File path or object, if None, the result is returned as a string. + Default is None. + - sep : str + String of length 1. Field delimiter for the output file. + Default is ','. + - index : bool + Write row names (index). Default is True. + - encoding : str + String representing the encoding to use in the output file. + Default is 'utf-8'. + + Notes + ----- + The method converts the collection to a pandas DataFrame using + `self.to_dataframe()` and then writes it to a CSV file using the provided + kwargs. + + """ + default_kwargs = { + "sep": ",", + "index": False, + "encoding": "utf-8", + "quoting": csv.QUOTE_ALL, + } + + # Merge default_kwargs with user-provided kwargs, giving precedence to user kwargs + merged_kwargs = {**default_kwargs, **kwargs} + output_dataframe = self.to_dataframe() + output_dataframe.to_csv(**merged_kwargs) + + def to_json( + self, file_path: pathlib.Path, schema_path: pathlib.Path | None = None + ) -> None: + """ + Export the SourceCollection to a JSON file, together with a data schema. + + Parameters + ---------- + file_path : pathlib.Path + The path to the JSON file to be created. + schema_path : pathlib.Path + The path to the JSON schema file to be created. By default created with a `schema` suffix next to `file_path`. + + """ + if schema_path is None: + schema_path = file_path.with_suffix(".schema.json") + + # Export the model's schema with descriptions to a dict + schema = self.model_json_schema() + + # Save the schema (which includes descriptions) to a JSON file + with open(schema_path, "w") as f: + json.dump(schema, f, indent=4) + + with open(file_path, mode="w", encoding="utf-8") as jsonfile: + json_data = self.model_dump_json(indent=4) # Convert to JSON string + jsonfile.write(json_data) + + @classmethod + def from_json(cls, file_path: pathlib.Path | str) -> "SourceCollection": + """ + Import the SourceCollection from a JSON file. + + Parameters + ---------- + file_path : pathlib.Path + The path to the JSON file to be imported. + + """ + if isinstance(file_path, pathlib.Path | str): + file_path = pathlib.Path(file_path) + else: + raise TypeError("file_path must be a pathlib.Path or str") + with open(file_path, encoding="utf-8") as jsonfile: + json_data = json.load(jsonfile) + return cls(**json_data) diff --git a/technologydata/technology.py b/technologydata/technology.py new file mode 100644 index 00000000..ca09967e --- /dev/null +++ b/technologydata/technology.py @@ -0,0 +1,182 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + + +# TODO replaceholder + +"""Technology class for representing a technology with parameters and transformation methods.""" + +import typing + +import pydantic + +import technologydata + + +class Technology(pydantic.BaseModel): # type: ignore + """ + Represent a technology with region, year, and a flexible set of parameters. + + Parameters + ---------- + name : str + Name of the technology. + region : str + Region identifier. + year : Optional[int] + Year of the data. + parameters : Dict[str, Parameter] + Dictionary of parameter names to Parameter objects. + case : Optional[str] + Case or scenario identifier. + detailed_technology : Optional[str] + More detailed technology name. + + Attributes + ---------- + name : str + Name of the technology. + region : str + Region identifier. + year : Optional[int] + Year of the data. + parameters : Dict[str, Parameter] + Dictionary of parameter names to Parameter objects. + case : Optional[str] + Case or scenario identifier. + detailed_technology : Optional[str] + More detailed technology name. + + """ + + name: str = pydantic.Field(..., description="Name of the technology.") + region: str = pydantic.Field(..., description="Region identifier.") + year: int | None = pydantic.Field(None, description="Year of the data.") + parameters: dict[str, technologydata.Parameter] = pydantic.Field( + default_factory=dict, description="Parameters." + ) + case: str | None = pydantic.Field(None, description="Case or scenario identifier.") + detailed_technology: str | None = pydantic.Field( + None, description="Detailed technology name." + ) + + def __getitem__(self, key: str) -> technologydata.Parameter: + """ + Access a parameter by name. + + Parameters + ---------- + key : str + Parameter name. + + Returns + ------- + Parameter + The requested parameter. + + """ + return self.parameters[key] + + def __setitem__(self, key: str, value: technologydata.Parameter) -> None: + """ + Set a parameter by name. + + Parameters + ---------- + key : str + Parameter name. + value : Parameter + The parameter to set. + + """ + self.parameters[key] = value + + def check_consistency(self) -> bool: + """ + Check for consistency and completeness of parameters. + + Returns + ------- + bool + True if consistent, False otherwise. + + """ + # Example: check required parameters + required = ["specific_investment", "investment", "lifetime"] + missing = [p for p in required if p not in self.parameters] + return len(missing) == 0 + + def calculate_parameters( + self, parameters: typing.Any | None = None + ) -> "Technology": + """ + Calculate missing or derived parameters. + + Parameters + ---------- + parameters : Optional[Any] + List of parameter names to calculate, or "" for all missing. + + Returns + ------- + Technology + A new Technology object with calculated parameters. + + """ + # Placeholder: implement calculation logic as needed + return self + + def adjust_currency(self, target_currency: str) -> "Technology": + """ + Adjust all currency parameters to a target currency. + + Parameters + ---------- + target_currency : str + The target currency (e.g., 'EUR_2020'). + + Returns + ------- + Technology + A new Technology object with adjusted currency. + + """ + # Placeholder: implement currency adjustment logic + return self + + def adjust_region(self, target_region: str) -> "Technology": + """ + Adjust technology parameters to match a different region. + + Parameters + ---------- + target_region : str + The target region. + + Returns + ------- + Technology + A new Technology object with adjusted region. + + """ + # Placeholder: implement region adjustment logic + return self + + def adjust_scale(self, scaling_factor: float) -> "Technology": + """ + Scale parameter values by a scaling factor. + + Parameters + ---------- + scaling_factor : float + The scaling factor to apply. + + Returns + ------- + Technology + A new Technology object with scaled parameters. + + """ + # Placeholder: implement scaling logic + return self diff --git a/technologydata/unit_value.py b/technologydata/unit_value.py new file mode 100644 index 00000000..0b42cddb --- /dev/null +++ b/technologydata/unit_value.py @@ -0,0 +1,71 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT +# TODO implement (Johannes) +""" +UnitValue class for representing a value with an associated unit. + +This class is designed to support flexible units, including energy carriers, currencies with years, and more. + +Examples +-------- +>>> uv = UnitValue(value=100, unit="EUR_2020") +>>> uv.value +100 +>>> uv.unit +"EUR_2020" + +""" + +import pint +import pydantic + +ureg = pint.UnitRegistry() + + +class UnitValue(pydantic.BaseModel): # type: ignore + """ + Represent a numerical value with an associated unit of measurement. + + Parameters + ---------- + value : float + The numerical value. + unit : str + The unit of measurement (e.g., 'EUR_2020', 'kWh_electricity', 'kWh_hydrogen_LHV'). + + Attributes + ---------- + value : float + The numerical value. + unit : str + The unit of measurement. + + """ + + value: float = pydantic.Field(..., description="The numerical value.") + unit: str = pydantic.Field(..., description="The unit of measurement.") + + def to(self, new_unit: str) -> "UnitValue": + """ + Convert the value to a new unit using pint. + + Parameters + ---------- + new_unit : str + The unit to convert to. + + Returns + ------- + UnitValue + A new UnitValue instance with the converted value and unit. + + Raises + ------ + pint.errors.DimensionalityError + If the units are not compatible. + + """ + q = self.value * ureg(self.unit) + q_converted = q.to(new_unit) + return UnitValue(value=q_converted.magnitude, unit=str(q_converted.units)) diff --git a/technologydata/utils/__init__.py b/technologydata/utils/__init__.py new file mode 100644 index 00000000..d7f45354 --- /dev/null +++ b/technologydata/utils/__init__.py @@ -0,0 +1,13 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +"""Provide classes and utilities for handling techno-economic data for energy system modeling.""" + +from technologydata.utils.commons import Commons, DateFormatEnum, FileExtensionEnum + +__all__ = [ + "Commons", + "DateFormatEnum", + "FileExtensionEnum", +] diff --git a/technologydata/utils/commons.py b/technologydata/utils/commons.py new file mode 100644 index 00000000..cb9b2cf1 --- /dev/null +++ b/technologydata/utils/commons.py @@ -0,0 +1,269 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +"""Classes for Commons methods.""" + +import enum +import logging +import re +import typing + +import dateutil + +logger = logging.getLogger(__name__) + + +class DateFormatEnum(str, enum.Enum): + """ + Enum for date formats used in different sources. + + Attributes + ---------- + SOURCES_CSV : str + Date format for CSV sources, e.g., "2023-10-01 12:00:00". + WAYBACK : str + Date format for Wayback Machine, e.g., "20231001120000". + NONE : str + Represents an empty date format. + + """ + + SOURCES_CSV = "%Y-%m-%d %H:%M:%S" + WAYBACK = "%Y%m%d%H%M%S" + NONE = "" + + +class FileExtensionEnum(enum.Enum): + """ + An enumeration that maps various file extensions to their corresponding MIME types. + + This Enum provides a structured way to associate common file extensions with their respective + MIME types, facilitating easy retrieval of file extensions based on content types. Each member + of the enumeration is a tuple containing the file extension and its associated MIME type. + + Members + -------- + TEXT_PLAIN : tuple + Represents the MIME type "text/plain" with the file extension ".txt". + TEXT_HTML : tuple + Represents the MIME type "text/html" with the file extension ".html". + TEXT_CSV : tuple + Represents the MIME type "text/csv" with the file extension ".csv". + TEXT_XML : tuple + Represents the MIME type "text/xml" with the file extension ".xml". + APPLICATION_MS_EXCEL : tuple + Represents the MIME type "application/vnd.ms-excel" with the file extension ".xls". + APPLICATION_ODS : tuple + Represents the MIME type "application/vnd.oasis.opendocument.spreadsheet" with the file extension ".ods". + APPLICATION_OPENXML_EXCEL : tuple + Represents the MIME type "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + with the file extension ".xlsx". + APPLICATION_JSON : tuple + Represents the MIME type "application/json" with the file extension ".json". + APPLICATION_XML : tuple + Represents the MIME type "application/xml" with the file extension ".xml". + APPLICATION_PDF : tuple + Represents the MIME type "application/pdf" with the file extension ".pdf". + APPLICATION_PARQUET : tuple + Represents the MIME type "application/parquet" with the file extension ".parquet". + APPLICATION_VDN_PARQUET : tuple + Represents the MIME type "application/vdn.apache.parquet" with the file extension ".parquet". + APPLICATION_RAR_WINDOWS : tuple + Represents the MIME type "application/x-rar-compressed" with the file extension ".rar". + APPLICATION_RAR : tuple + Represents the MIME type "application/vnd.rar" with the file extension ".rar". + APPLICATION_ZIP : tuple + Represents the MIME type "application/zip" with the file extension ".zip". + APPLICATION_ZIP_WINDOWS : tuple + Represents the MIME type "application/x-zip-compressed" with the file extension ".zip". + """ + + TEXT_PLAIN = (".txt", "text/plain") + TEXT_HTML = (".html", "text/html") + TEXT_CSV = (".csv", "text/csv") + TEXT_XML = (".xml", "text/xml") + APPLICATION_MS_EXCEL = (".xls", "application/vnd.ms-excel") + APPLICATION_ODS = (".ods", "application/vnd.oasis.opendocument.spreadsheet") + APPLICATION_OPENXML_EXCEL = ( + ".xlsx", + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + ) + APPLICATION_JSON = (".json", "application/json") + APPLICATION_XML = (".xml", "application/xml") + APPLICATION_PDF = (".pdf", "application/pdf") + APPLICATION_PARQUET = (".parquet", "application/parquet") + APPLICATION_VDN_PARQUET = (".parquet", "application/vdn.apache.parquet") + APPLICATION_RAR_WINDOWS = (".rar", "application/x-rar-compressed") + APPLICATION_RAR = (".rar", "application/vnd.rar") + APPLICATION_ZIP = (".zip", "application/zip") + APPLICATION_ZIP_WINDOWS = (".zip", "application/x-zip-compressed") + + @classmethod + def get_extension(cls, content_type: str) -> str | None: + """ + Retrieve the file extension associated with a given MIME type. + + Parameters + ---------- + content_type : str + The MIME type for which the corresponding file extension is to be retrieved. + + Returns + ------- + str | None + The file extension associated with the given MIME type, or None if the + MIME type is not supported. + + Examples + -------- + >>> FileExtensionEnum.get_extension("application/pdf") + >>> '.pdf' + + >>> FileExtensionEnum.get_extension("application/unknown") + >>> None + + """ + for member in cls: + if member.value[1] == content_type: + return member.value[0] + return None + + @classmethod + def search_file_extension_in_url(cls, url: str) -> str | None: + """ + Search for the file extension in a given URL. + + Parameters + ---------- + url : str + The URL to search for the file extension. + + Returns + ------- + str | None + The file extension, or None if no match is found. + + Examples + -------- + >>> FileExtensionEnum.search_file_extension_in_url("https://example.com/file.pdf") + '.pdf' + + >>> FileExtensionEnum.search_file_extension_in_url("https://example.com/file.unknown") + None + + """ + for member in cls: + if re.search(r"\b" + re.escape(member.value[0]) + r"\b", url): + return member.value[0] + return None + + +class Commons: + """ + A utility class for various helper functions. + + This class provides static methods for common tasks, such as changing the format of datetime strings and replacing + special characters in strings. The methods are stateless and can be called without instantiating the class. + + Methods + ------- + change_datetime_format(input_datetime_string: str, output_datetime_format: DateFormatEnum) -> str | None: + Change the format of a given datetime string to a specified output format. + replace_special_characters(input_string: str) -> str: + Replace special characters and spaces in a string with underscores. + + Examples + -------- + >>> Commons.change_datetime_format("20250520144500", DateFormatEnum.SOURCES_CSV) + '2025-05-20 14:45:00' + >>> Commons.replace_special_characters("Hello, World! Welcome to Python @ 2023.") + 'hello_world_welcome_to_python_2023' + + """ + + @staticmethod + def change_datetime_format( + input_datetime_string: str, + output_datetime_format: DateFormatEnum, + ) -> str | typing.Any: + """ + Change the format of a given datetime string to a specified output format. + + The method takes a datetime string and automatically detects its format, then converts it to the specified output format. + If the input string cannot be parsed, it logs an error and returns None. + + Parameters + ---------- + input_datetime_string : str + datetime string that needs to be reformatted + + output_datetime_format : DateFormatEnum + desired format for the output datetime string, following the strftime format codes. + + Returns + ------- + str | None + reformatted datetime string if successful, otherwise None + + Raises + ------ + ValueError + If the input datetime string cannot be parsed. + + Examples + -------- + >>> Commons.change_datetime_format("20250520144500", DateFormatEnum.SOURCES_CSV) + >>> "2025-05-20 14:45:00" + + """ + try: + # Automatically detect the format of the input datetime string + dt = dateutil.parser.parse(input_datetime_string) + logger.debug(f"The datetime string has been parsed successfully: {dt}") + output_datetime_string = dt.strftime(output_datetime_format.value) + logger.debug(f"The format is now changed to {output_datetime_format.value}") + return output_datetime_string + except ValueError as e: + raise ValueError(f"Error during datetime formatting: {e}") + + @staticmethod + def replace_special_characters(input_string: str) -> str: + """ + Replace special characters and spaces in a string. + + The method replaces special characters and spaces in a string with underscores, + collapsing multiple consecutive underscores into a single underscore. Finally, it lowercases all characters of the string and removes leading or + trailing underscores. + + Parameters + ---------- + input_string : str + The input string from which special characters and spaces will be replaced. + + Returns + ------- + str + A new string with all special characters and spaces replaced by a single underscore + where consecutive underscores occur. + + Examples + -------- + >>> replace_special_characters("Hello, World! Welcome to Python @ 2023.") + 'hello_world_welcome_to_python_2023' + + >>> replace_special_characters("Special#Characters$Are%Fun!") + 'special_characters_are_fun' + + """ + # Replace any character that is not a word character or whitespace with underscore + replaced = re.sub(r"[^\w\s]", "_", input_string) + # Replace whitespace with underscore + replaced = replaced.replace(" ", "_") + # Collapse multiple consecutive underscores into a single underscore + replaced = re.sub(r"_+", "_", replaced) + # Remove leading and trailing underscores + replaced = replaced.strip("_") + # Lower case the string + replaced = replaced.casefold() + return replaced diff --git a/test/conftest.py b/test/conftest.py new file mode 100644 index 00000000..a0d1fc81 --- /dev/null +++ b/test/conftest.py @@ -0,0 +1,97 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +""" +The module is used to define sharable pytest fixtures. + +Fixtures are a way to provide a fixed baseline upon which tests can +rely. They allow for setup code to be reused and can help manage +resources needed for tests, such as database connections, test data, +or configuration settings. +By placing fixtures in this file, they become accessible to all test +modules in the same directory and subdirectories, promoting code +reusability and organization. +""" + +import pathlib +import sys + +import pytest + +import technologydata + +sys.path.append("./technology-data") +path_cwd = pathlib.Path.cwd() + + +def create_source_from_params(params: dict[str, str]) -> technologydata.Source: + """ + Create a Source object from a parameter dictionary with validation. + + This function takes a dictionary of parameters and validates that the required fields are present. + If any required fields are missing, a ValueError is raised. If all required fields are present, + a new Source object is created and returned. + + Parameters + ---------- + params : dict[str, str] + A dictionary containing the parameters for creating a Source object. + Must include the keys "source_title" and "source_authors". + Other keys are optional. + + Returns + ------- + td.Source + A Source object initialized with the provided parameters. + + Raises + ------ + ValueError + If any of the required fields ("source_title", "source_authors") are missing from the params. + + Examples + -------- + >>> params_dict = { + ... "source_title": "Example Title", + ... "source_authors": "John Doe", + ... "source_url": "http://example.com", + ... "source_url_archive": "http://web.archive.org/web/20231001120000/http://example.com", + ... "source_url_date": "2023-10-01", + ... "source_url_date_archive": "2023-10-01T12:00:00Z" + ... } + >>> source = create_source_from_params(params_dict) + + """ + return technologydata.Source( + title=params["source_title"], + authors=params["source_authors"], + url=params.get("source_url"), + url_archive=params.get("source_url_archive"), + url_date=params.get("source_url_date"), + url_date_archive=params.get("source_url_date_archive"), + ) + + +@pytest.fixture(scope="function") # type: ignore +def example_source(request: pytest.FixtureRequest) -> technologydata.Source: + """Fixture to create an example source.""" + return create_source_from_params(request.param) + + +@pytest.fixture(scope="function") # type: ignore +def example_source_collection( + request: pytest.FixtureRequest, +) -> technologydata.SourceCollection: + """ + Fixture to create an example SourceCollection from a list of parameter dicts. + + Each dict in the list must contain the following keys: + - source_title + - source_authors + + This fixture is compatible with pytest parametrize. + """ + sources_params: list[dict[str, str]] = request.param + sources = [create_source_from_params(params) for params in sources_params] + return technologydata.SourceCollection(sources=sources) diff --git a/test/test_commons.py b/test/test_commons.py new file mode 100644 index 00000000..95bf5ad8 --- /dev/null +++ b/test/test_commons.py @@ -0,0 +1,141 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +"""Test the utility methods.""" + +import typing + +import pytest + +import technologydata + + +@pytest.mark.parametrize( + "input_datetime_string, date_format, expected_date", + [ + ( + "2025-05-20 14:45:00", + technologydata.DateFormatEnum.SOURCES_CSV, + "2025-05-20 14:45:00", + ), + ( + "20250520144500", + technologydata.DateFormatEnum.SOURCES_CSV, + "2025-05-20 14:45:00", + ), + ( + "2025-05-20 14:45:00", + technologydata.DateFormatEnum.WAYBACK, + "20250520144500", + ), + ("20250520144500", technologydata.DateFormatEnum.WAYBACK, "20250520144500"), + ("2025-05-20 14:45:00", technologydata.DateFormatEnum.NONE, ""), + ("invalid-date-string", technologydata.DateFormatEnum.SOURCES_CSV, ValueError), + ("2025/13/01", technologydata.DateFormatEnum.SOURCES_CSV, ValueError), + ], +) # type: ignore +def test_change_datetime_format( + input_datetime_string: str, + date_format: technologydata.DateFormatEnum, + expected_date: str | typing.Any, +) -> None: + """Check if the datetime is correctly transformed to a new format.""" + if expected_date is ValueError: + with pytest.raises(ValueError, match="Error during datetime formatting"): + technologydata.Commons.change_datetime_format( + input_datetime_string, date_format + ) + else: + result = technologydata.Commons.change_datetime_format( + input_datetime_string, date_format + ) + assert result == expected_date + + +@pytest.mark.parametrize( + "input_string, expected_string", + [ + ( + "Hello, World! Welcome to Python @ 2023.", + "hello_world_welcome_to_python_2023", + ), + ( + " Special#Characters$Are%Fun! ", + "special_characters_are_fun", + ), + ( + "!!!LeadingAndTrailing!!!", + "leadingandtrailing", + ), + ], +) # type: ignore +def test_replace_special_characters( + input_string: str, + expected_string: str, +) -> None: + """Check if the special characters are removed from a string and the string is lowercased.""" + assert ( + technologydata.Commons.replace_special_characters(input_string) + == expected_string + ) + + +@pytest.mark.parametrize( + "input_string, expected_string", + [ + ("text/plain", ".txt"), + ("text/html", ".html"), + ("text/csv", ".csv"), + ("text/xml", ".xml"), + ("application/vnd.ms-excel", ".xls"), + ("application/vnd.oasis.opendocument.spreadsheet", ".ods"), + ("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", ".xlsx"), + ("application/json", ".json"), + ("application/xml", ".xml"), + ("application/pdf", ".pdf"), + ("application/parquet", ".parquet"), + ("application/vdn.apache.parquet", ".parquet"), + ("application/x-rar-compressed", ".rar"), + ("application/vnd.rar", ".rar"), + ("application/zip", ".zip"), + ("application/x-zip-compressed", ".zip"), + ], +) # type: ignore +def test_get_extension( + input_string: str, + expected_string: str, +) -> None: + """Check if the correct file extension is associated to a given MIME type.""" + assert ( + technologydata.FileExtensionEnum.get_extension(input_string) == expected_string + ) + + +@pytest.mark.parametrize( + "input_string, expected_string", + [ + ("https://example.com/file.txt", ".txt"), + ("https://example.com/file.html", ".html"), + ("https://example.com/file.csv", ".csv"), + ("https://example.com/file.xml", ".xml"), + ("https://example.com/file.xls", ".xls"), + ("https://example.com/file.ods", ".ods"), + ("https://example.com/file.xlsx", ".xlsx"), + ("https://example.com/file.json", ".json"), + ("https://example.com/file.pdf", ".pdf"), + ("https://example.com/file.parquet", ".parquet"), + ("https://example.com/file.rar", ".rar"), + ("https://example.com/file.zip", ".zip"), + ("https://example.com/file.unknown", None), + ], +) # type: ignore +def test_search_file_extension_in_url( + input_string: str, + expected_string: str, +) -> None: + """Check if the correct file extension is found in a given url.""" + assert ( + technologydata.FileExtensionEnum.search_file_extension_in_url(input_string) + == expected_string + ) diff --git a/test/test_data/solar_photovoltaics_example_03/sources.json b/test/test_data/solar_photovoltaics_example_03/sources.json new file mode 100644 index 00000000..770b0e69 --- /dev/null +++ b/test/test_data/solar_photovoltaics_example_03/sources.json @@ -0,0 +1,20 @@ +{ + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] +} diff --git a/test/test_data/solar_photovoltaics_example_03/technologies.json b/test/test_data/solar_photovoltaics_example_03/technologies.json new file mode 100644 index 00000000..02712257 --- /dev/null +++ b/test/test_data/solar_photovoltaics_example_03/technologies.json @@ -0,0 +1,276 @@ +[ + { + "region": "DEU", + "case": "example-scenario", + "year": 2022, + "technology": "Solar photovoltaics", + "detailed_technology": "Si-HC", + "capacity": { + "quantity": { + "value": 1, + "unit": "MW" + }, + "provenance": "Model calculation", + "note": "Average capacity factor of 22% assumed", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + }, + "investment": { + "quantity": { + "value": 500, + "unit": "EUR_2022/KW_el" + }, + "provenance": "Industry report", + "note": "Average overnight cost", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + }, + "specific_investment": { + "quantity": { + "value": 0.95, + "unit": "USD/W" + }, + "provenance": "Derived", + "note": "Calculated from investment/capacity", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + }, + "lifetime": { + "quantity": { + "value": 30, + "unit": "years" + }, + "provenance": "Manufacturer specification", + "note": "With performance degradation guarantee", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + }, + "wacc": { + "quantity": { + "value": 0.05, + "unit": "fraction" + }, + "provenance": "Financial analysis", + "note": "Nominal weighted average cost of capital", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + } + }, + { + "region": "DEU", + "case": "example-project", + "year": 2022, + "technology": "Solar photovoltaics", + "detailed_technology": "Si-HC", + "capacity": { + "quantity": { + "value": 1.0, + "unit": "MW" + }, + "provenance": "Model calculation", + "note": "Average capacity factor of 25% assumed", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + }, + "investment": { + "quantity": { + "value": 350, + "unit": "EUR_2022/KW_el" + }, + "provenance": "Industry report", + "note": "Average overnight cost for another tech", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + }, + "specific_investment": { + "quantity": { + "value": 0.95, + "unit": "USD/W" + }, + "provenance": "Derived", + "note": "Calculated from investment/capacity", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + }, + "lifetime": { + "quantity": { + "value": 30, + "unit": "years" + }, + "provenance": "Manufacturer specification", + "note": "With performance degradation guarantee", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + }, + "wacc": { + "quantity": { + "value": 0.05, + "unit": "fraction" + }, + "provenance": "Financial analysis", + "note": "Nominal weighted average cost of capital", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + } + } +] diff --git a/test/test_data/solar_photovoltaics_example_04/technologies.json b/test/test_data/solar_photovoltaics_example_04/technologies.json new file mode 100644 index 00000000..964b37ae --- /dev/null +++ b/test/test_data/solar_photovoltaics_example_04/technologies.json @@ -0,0 +1,166 @@ +[ + { + "region": "DEU", + "case": "example-scenario", + "year": 2022, + "technology": "Solar photovoltaics", + "detailed_technology": "Si-HC", + "capacity": { + "quantity": { + "value": 1, + "unit": "MW" + }, + "provenance": "Model calculation", + "note": "Average capacity factor of 22% assumed", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] + }, + "investment": { + "quantity": { + "value": 500, + "unit": "EUR_2022/KW_el" + }, + "provenance": "Industry report", + "note": "Average overnight cost", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] + }, + "specific_investment": { + "quantity": { + "value": 0.95, + "unit": "USD/W" + }, + "provenance": "Derived", + "note": "Calculated from investment/capacity", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] + }, + "lifetime": { + "quantity": { + "value": 30, + "unit": "years" + }, + "provenance": "Manufacturer specification", + "note": "With performance degradation guarantee", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] + }, + "wacc": { + "quantity": { + "value": 0.05, + "unit": "fraction" + }, + "provenance": "Financial analysis", + "note": "Nominal weighted average cost of capital", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] + } + }, + { + "region": "DEU", + "case": "example-project", + "year": 2022, + "technology": "Solar photovoltaics", + "detailed_technology": "Si-HC", + "capacity": { + "quantity": { + "value": 1.0, + "unit": "MW" + }, + "provenance": "Model calculation", + "note": "Average capacity factor of 25% assumed", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] + }, + "investment": { + "quantity": { + "value": 350, + "unit": "EUR_2022/KW_el" + }, + "provenance": "Industry report", + "note": "Average overnight cost for another tech", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] + }, + "specific_investment": { + "quantity": { + "value": 0.95, + "unit": "USD/W" + }, + "provenance": "Derived", + "note": "Calculated from investment/capacity", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] + }, + "lifetime": { + "quantity": { + "value": 30, + "unit": "years" + }, + "provenance": "Manufacturer specification", + "note": "With performance degradation guarantee", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] + }, + "wacc": { + "quantity": { + "value": 0.05, + "unit": "fraction" + }, + "provenance": "Financial analysis", + "note": "Nominal weighted average cost of capital", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] + } + } +] diff --git a/test/test_source.py b/test/test_source.py new file mode 100644 index 00000000..f2a521fc --- /dev/null +++ b/test/test_source.py @@ -0,0 +1,124 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +"""Test the initialization and methods of the Source class.""" + +import datetime +import pathlib + +import pytest + +import technologydata + +path_cwd = pathlib.Path.cwd() + + +@pytest.mark.parametrize( + "example_source", + [ + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_date": "2025-05-22 15:08:02", + "source_url_date_archive": "2025-05-22 15:08:02", + }, + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + "source_url": "https://ens.dk/media/3273/download", + "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + ], + indirect=True, +) # type: ignore +def test_retrieve_from_wayback(example_source: technologydata.Source) -> None: + """Check if the example source is downloaded from the Internet Archive Wayback Machine.""" + storage_path = example_source.retrieve_from_wayback(path_cwd) + # Check if storage_paths is not None and is a list + assert storage_path is not None, "Expected a valid storage path, but got None." + assert isinstance(storage_path, pathlib.Path), ( + "Expected storage_path to be a pathlib.Path." + ) + assert storage_path is not None, "Expected a valid storage path, but got None." + assert storage_path.is_file(), ( + f"Expected {storage_path} to be a file, but it does not exist." + ) + # Delete the downloaded file + storage_path.unlink(missing_ok=True) + + +def test_store_in_wayback() -> None: + """Check if a given url is correctly stored as a snapshot on Internet Archive Wayback Machine.""" + url_to_archive = "https://openenergytransition.org/outputs.html" + archived_info = technologydata.Source.store_in_wayback(url_to_archive) + + # Check if archived_info is None + assert archived_info is not None, "archived_info should not be None" + + archived_url, new_capture, output_timestamp = archived_info + + assert "https://web.archive.org/web/" in archived_url + assert url_to_archive in archived_url + assert isinstance(new_capture, bool) + + assert output_timestamp is not None, "output_timestamp should not be None" + try: + datetime.datetime.strptime( + output_timestamp, technologydata.DateFormatEnum.SOURCES_CSV + ) + except ValueError: + pytest.fail("Valid date-time string did not match the format") + + +@pytest.mark.parametrize( + "example_source", + [ + { + "source_title": "OET project page", + "source_authors": "Open Energy Transition gGmbH", + "source_url": "https://openenergytransition.org/outputs.html", + }, + ], + indirect=["example_source"], +) # type: ignore +def test_ensure_in_wayback(example_source: technologydata.Source) -> None: + """Check if the snapshot URL is created correctly.""" + # Ensure the snapshot is created + example_source.ensure_in_wayback() + assert example_source.url_date_archive is not None + assert example_source.url_archive is not None + + +@pytest.mark.parametrize( + "url_archived, source_path, source_title, expected_path", + [ + ( + "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + path_cwd, + "title", + pathlib.Path(path_cwd, "title.pdf"), + ), + ( + "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + path_cwd, + "title", + pathlib.Path(path_cwd, "title.parquet"), + ), + ], +) # type: ignore +def test_get_save_path( + url_archived: str, + source_path: pathlib.Path, + source_title: str, + expected_path: pathlib.Path, +) -> None: + """Check if the path where to store the file to download follows the requested pattern.""" + assert ( + technologydata.Source._get_save_path(url_archived, source_path, source_title) + == expected_path + ) diff --git a/test/test_source_collection.py b/test/test_source_collection.py new file mode 100644 index 00000000..41d65f68 --- /dev/null +++ b/test/test_source_collection.py @@ -0,0 +1,219 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +"""Test the initialization and methods of the SourceCollection class.""" + +import pathlib + +import pandas +import pytest + +import technologydata + +path_cwd = pathlib.Path.cwd() + + +@pytest.mark.parametrize( + "example_source_collection", + [ + [ + { + "source_title": "Source 1", + "source_authors": "Author 1", + }, + { + "source_title": "Source 2", + "source_authors": "Author 2", + }, + ] + ], + indirect=True, +) # type: ignore +def test_example_source_collection( + example_source_collection: technologydata.SourceCollection, +) -> None: + """Check if the example source collection is instantiated correctly.""" + # Check that the returned object is a SourceCollection + assert isinstance(example_source_collection, technologydata.SourceCollection) + + # Check the number of sources + assert len(example_source_collection.sources) == 2 + + # Check the titles of the sources + assert example_source_collection.sources[0].title == "Source 1" + assert example_source_collection.sources[1].title == "Source 2" + assert example_source_collection.sources[0].authors == "Author 1" + assert example_source_collection.sources[1].authors == "Author 2" + + +@pytest.mark.parametrize( + "example_source_collection", + [ + [ + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_date": "2025-05-22 15:08:02", + "source_url_date_archive": "2025-05-22 15:08:02", + }, + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + "source_url": "https://ens.dk/media/3273/download", + "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + ], + ], + indirect=True, +) # type: ignore +def test_retrieve_all_from_wayback( + example_source_collection: technologydata.SourceCollection, +) -> None: + """Check if the example source collection is downloaded from the Internet Archive Wayback Machine.""" + storage_paths = example_source_collection.retrieve_all_from_wayback(path_cwd) + + # Check if storage_paths is not None and is a list + assert storage_paths is not None, "Expected storage_paths to be not None." + assert isinstance(storage_paths, list), "Expected storage_paths to be a list." + + # Filter out None values and check the remaining paths + valid_paths = [path for path in storage_paths if path is not None] + + assert all(isinstance(path, pathlib.Path) for path in valid_paths), ( + f"Expected all elements in {valid_paths} to be instances of pathlib.Path." + ) + assert all(path.is_file() for path in valid_paths), ( + f"Expected all elements in {valid_paths} to be a file, but it does not exist." + ) + + # Delete the downloaded files + for path in valid_paths: + path.unlink(missing_ok=True) + + +@pytest.mark.parametrize( + "example_source_collection", + [ + [ + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_date": "2025-05-22 15:08:02", + "source_url_date_archive": "2025-05-22 15:08:02", + }, + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + "source_url": "https://ens.dk/media/3273/download", + "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + ], + ], + indirect=True, +) # type: ignore +def test_to_csv(example_source_collection: technologydata.SourceCollection) -> None: + """Check if the example source collection is exported to CSV.""" + output_file = pathlib.Path(path_cwd, "export.csv") + example_source_collection.to_csv(path_or_buf=output_file) + assert output_file.is_file() + output_file.unlink(missing_ok=True) + + +@pytest.mark.parametrize( + "example_source_collection", + [ + [ + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_date": "2025-05-22 15:08:02", + "source_url_date_archive": "2025-05-22 15:08:02", + }, + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + "source_url": "https://ens.dk/media/3273/download", + "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + ], + ], + indirect=True, +) # type: ignore +def test_to_json(example_source_collection: technologydata.SourceCollection) -> None: + """Check if the example source collection is exported to JSON.""" + output_file = pathlib.Path(path_cwd, "sources.json") + schema_file = pathlib.Path(path_cwd, "source_collection_schema.json") + example_source_collection.to_json(pathlib.Path(output_file)) + assert output_file.is_file() + assert schema_file.is_file() + output_file.unlink(missing_ok=True) + schema_file.unlink(missing_ok=True) + + +@pytest.mark.parametrize( + "example_source_collection", + [ + [ + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_date": "2025-05-22 15:08:02", + "source_url_date_archive": "2025-05-22 15:08:02", + }, + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + "source_url": "https://ens.dk/media/3273/download", + "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + ], + ], + indirect=True, +) # type: ignore +def test_to_dataframe( + example_source_collection: technologydata.SourceCollection, +) -> None: + """Check if the example source collection is exported to pandas dataframe.""" + assert isinstance(example_source_collection.to_dataframe(), pandas.DataFrame) + + +def test_from_json() -> None: + """Check if the example source collection is exported to JSON.""" + input_file = pathlib.Path( + path_cwd, "test", "test_data", "solar_photovoltaics_example_03", "sources.json" + ) + source_collection = technologydata.SourceCollection.from_json(input_file) + assert isinstance(source_collection, technologydata.SourceCollection) + assert len(source_collection) == 2 + + +@pytest.mark.parametrize( + "title_pattern, authors_pattern", + [["ATB", "nrel"], ["TECH_DATA", "danish"]], +) # type: ignore +def test_get(title_pattern: str, authors_pattern: str) -> None: + """Check if the example source collection is filtered as requested.""" + input_file = pathlib.Path( + path_cwd, "test", "test_data", "solar_photovoltaics_example_03", "sources.json" + ) + + source_collection = technologydata.SourceCollection.from_json(input_file) + result = source_collection.get(title=title_pattern, authors=authors_pattern) + assert len(result.sources) == 1 diff --git a/uv.lock b/uv.lock new file mode 100644 index 00000000..9a3db3d3 --- /dev/null +++ b/uv.lock @@ -0,0 +1,2583 @@ +version = 1 +revision = 2 +requires-python = ">=3.12" + +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload_time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload_time = "2024-05-20T21:33:24.1Z" }, +] + +[[package]] +name = "appnope" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload_time = "2024-02-06T09:43:11.258Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload_time = "2024-02-06T09:43:09.663Z" }, +] + +[[package]] +name = "asttokens" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978, upload_time = "2024-11-30T04:30:14.439Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload_time = "2024-11-30T04:30:10.946Z" }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload_time = "2025-03-13T11:10:22.779Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload_time = "2025-03-13T11:10:21.14Z" }, +] + +[[package]] +name = "babel" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload_time = "2025-02-01T15:17:41.026Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload_time = "2025-02-01T15:17:37.39Z" }, +] + +[[package]] +name = "backrefs" +version = "5.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/a7/312f673df6a79003279e1f55619abbe7daebbb87c17c976ddc0345c04c7b/backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59", size = 5765857, upload_time = "2025-06-22T19:34:13.97Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/4d/798dc1f30468134906575156c089c492cf79b5a5fd373f07fe26c4d046bf/backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f", size = 380267, upload_time = "2025-06-22T19:34:05.252Z" }, + { url = "https://files.pythonhosted.org/packages/55/07/f0b3375bf0d06014e9787797e6b7cc02b38ac9ff9726ccfe834d94e9991e/backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf", size = 392072, upload_time = "2025-06-22T19:34:06.743Z" }, + { url = "https://files.pythonhosted.org/packages/9d/12/4f345407259dd60a0997107758ba3f221cf89a9b5a0f8ed5b961aef97253/backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa", size = 397947, upload_time = "2025-06-22T19:34:08.172Z" }, + { url = "https://files.pythonhosted.org/packages/10/bf/fa31834dc27a7f05e5290eae47c82690edc3a7b37d58f7fb35a1bdbf355b/backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b", size = 399843, upload_time = "2025-06-22T19:34:09.68Z" }, + { url = "https://files.pythonhosted.org/packages/fc/24/b29af34b2c9c41645a9f4ff117bae860291780d73880f449e0b5d948c070/backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9", size = 411762, upload_time = "2025-06-22T19:34:11.037Z" }, + { url = "https://files.pythonhosted.org/packages/41/ff/392bff89415399a979be4a65357a41d92729ae8580a66073d8ec8d810f98/backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60", size = 380265, upload_time = "2025-06-22T19:34:12.405Z" }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload_time = "2025-04-15T17:05:13.836Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload_time = "2025-04-15T17:05:12.221Z" }, +] + +[[package]] +name = "certifi" +version = "2025.7.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/de/8a/c729b6b60c66a38f590c4e774decc4b2ec7b0576be8f1aa984a53ffa812a/certifi-2025.7.9.tar.gz", hash = "sha256:c1d2ec05395148ee10cf672ffc28cd37ea0ab0d99f9cc74c43e588cbd111b079", size = 160386, upload_time = "2025-07-09T02:13:58.874Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/66/f3/80a3f974c8b535d394ff960a11ac20368e06b736da395b551a49ce950cce/certifi-2025.7.9-py3-none-any.whl", hash = "sha256:d842783a14f8fdd646895ac26f719a061408834473cfc10203f6a575beb15d39", size = 159230, upload_time = "2025-07-09T02:13:57.007Z" }, +] + +[[package]] +name = "cffi" +version = "1.17.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload_time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload_time = "2024-09-04T20:44:12.232Z" }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload_time = "2024-09-04T20:44:13.739Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload_time = "2024-09-04T20:44:15.231Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload_time = "2024-09-04T20:44:17.188Z" }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload_time = "2024-09-04T20:44:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload_time = "2024-09-04T20:44:20.248Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload_time = "2024-09-04T20:44:21.673Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload_time = "2024-09-04T20:44:23.245Z" }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload_time = "2024-09-04T20:44:24.757Z" }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload_time = "2024-09-04T20:44:26.208Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload_time = "2024-09-04T20:44:27.578Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload_time = "2024-09-04T20:44:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload_time = "2024-09-04T20:44:30.289Z" }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload_time = "2024-09-04T20:44:32.01Z" }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload_time = "2024-09-04T20:44:33.606Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload_time = "2024-09-04T20:44:35.191Z" }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload_time = "2024-09-04T20:44:36.743Z" }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload_time = "2024-09-04T20:44:38.492Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload_time = "2024-09-04T20:44:40.046Z" }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload_time = "2024-09-04T20:44:41.616Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload_time = "2024-09-04T20:44:43.733Z" }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload_time = "2024-09-04T20:44:45.309Z" }, +] + +[[package]] +name = "cfgv" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload_time = "2023-08-12T20:38:17.776Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload_time = "2023-08-12T20:38:16.269Z" }, +] + +[[package]] +name = "chardet" +version = "5.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618, upload_time = "2023-08-01T19:23:02.662Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385, upload_time = "2023-08-01T19:23:00.661Z" }, +] + +[[package]] +name = "charset-normalizer" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload_time = "2025-05-02T08:34:42.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload_time = "2025-05-02T08:32:33.712Z" }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload_time = "2025-05-02T08:32:35.768Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload_time = "2025-05-02T08:32:37.284Z" }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload_time = "2025-05-02T08:32:38.803Z" }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload_time = "2025-05-02T08:32:40.251Z" }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload_time = "2025-05-02T08:32:41.705Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload_time = "2025-05-02T08:32:43.709Z" }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload_time = "2025-05-02T08:32:46.197Z" }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload_time = "2025-05-02T08:32:48.105Z" }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload_time = "2025-05-02T08:32:49.719Z" }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload_time = "2025-05-02T08:32:51.404Z" }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload_time = "2025-05-02T08:32:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload_time = "2025-05-02T08:32:54.573Z" }, + { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload_time = "2025-05-02T08:32:56.363Z" }, + { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload_time = "2025-05-02T08:32:58.551Z" }, + { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload_time = "2025-05-02T08:33:00.342Z" }, + { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload_time = "2025-05-02T08:33:02.081Z" }, + { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload_time = "2025-05-02T08:33:04.063Z" }, + { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload_time = "2025-05-02T08:33:06.418Z" }, + { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload_time = "2025-05-02T08:33:08.183Z" }, + { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload_time = "2025-05-02T08:33:09.986Z" }, + { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload_time = "2025-05-02T08:33:11.814Z" }, + { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload_time = "2025-05-02T08:33:13.707Z" }, + { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload_time = "2025-05-02T08:33:15.458Z" }, + { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload_time = "2025-05-02T08:33:17.06Z" }, + { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload_time = "2025-05-02T08:33:18.753Z" }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload_time = "2025-05-02T08:34:40.053Z" }, +] + +[[package]] +name = "click" +version = "8.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload_time = "2025-05-20T23:19:49.832Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload_time = "2025-05-20T23:19:47.796Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload_time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload_time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "comm" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210, upload_time = "2024-03-12T16:53:41.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180, upload_time = "2024-03-12T16:53:39.226Z" }, +] + +[[package]] +name = "contourpy" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload_time = "2025-04-15T17:47:53.79Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload_time = "2025-04-15T17:37:03.105Z" }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload_time = "2025-04-15T17:37:07.026Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688, upload_time = "2025-04-15T17:37:11.481Z" }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331, upload_time = "2025-04-15T17:37:18.212Z" }, + { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963, upload_time = "2025-04-15T17:37:22.76Z" }, + { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681, upload_time = "2025-04-15T17:37:33.001Z" }, + { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674, upload_time = "2025-04-15T17:37:48.64Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480, upload_time = "2025-04-15T17:38:06.7Z" }, + { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489, upload_time = "2025-04-15T17:38:10.338Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042, upload_time = "2025-04-15T17:38:14.239Z" }, + { url = "https://files.pythonhosted.org/packages/2e/61/5673f7e364b31e4e7ef6f61a4b5121c5f170f941895912f773d95270f3a2/contourpy-1.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de39db2604ae755316cb5967728f4bea92685884b1e767b7c24e983ef5f771cb", size = 271630, upload_time = "2025-04-15T17:38:19.142Z" }, + { url = "https://files.pythonhosted.org/packages/ff/66/a40badddd1223822c95798c55292844b7e871e50f6bfd9f158cb25e0bd39/contourpy-1.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f9e896f447c5c8618f1edb2bafa9a4030f22a575ec418ad70611450720b5b08", size = 255670, upload_time = "2025-04-15T17:38:23.688Z" }, + { url = "https://files.pythonhosted.org/packages/1e/c7/cf9fdee8200805c9bc3b148f49cb9482a4e3ea2719e772602a425c9b09f8/contourpy-1.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71e2bd4a1c4188f5c2b8d274da78faab884b59df20df63c34f74aa1813c4427c", size = 306694, upload_time = "2025-04-15T17:38:28.238Z" }, + { url = "https://files.pythonhosted.org/packages/dd/e7/ccb9bec80e1ba121efbffad7f38021021cda5be87532ec16fd96533bb2e0/contourpy-1.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de425af81b6cea33101ae95ece1f696af39446db9682a0b56daaa48cfc29f38f", size = 345986, upload_time = "2025-04-15T17:38:33.502Z" }, + { url = "https://files.pythonhosted.org/packages/dc/49/ca13bb2da90391fa4219fdb23b078d6065ada886658ac7818e5441448b78/contourpy-1.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:977e98a0e0480d3fe292246417239d2d45435904afd6d7332d8455981c408b85", size = 318060, upload_time = "2025-04-15T17:38:38.672Z" }, + { url = "https://files.pythonhosted.org/packages/c8/65/5245ce8c548a8422236c13ffcdcdada6a2a812c361e9e0c70548bb40b661/contourpy-1.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:434f0adf84911c924519d2b08fc10491dd282b20bdd3fa8f60fd816ea0b48841", size = 322747, upload_time = "2025-04-15T17:38:43.712Z" }, + { url = "https://files.pythonhosted.org/packages/72/30/669b8eb48e0a01c660ead3752a25b44fdb2e5ebc13a55782f639170772f9/contourpy-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c66c4906cdbc50e9cba65978823e6e00b45682eb09adbb78c9775b74eb222422", size = 1308895, upload_time = "2025-04-15T17:39:00.224Z" }, + { url = "https://files.pythonhosted.org/packages/05/5a/b569f4250decee6e8d54498be7bdf29021a4c256e77fe8138c8319ef8eb3/contourpy-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b7fc0cd78ba2f4695fd0a6ad81a19e7e3ab825c31b577f384aa9d7817dc3bef", size = 1379098, upload_time = "2025-04-15T17:43:29.649Z" }, + { url = "https://files.pythonhosted.org/packages/19/ba/b227c3886d120e60e41b28740ac3617b2f2b971b9f601c835661194579f1/contourpy-1.3.2-cp313-cp313-win32.whl", hash = "sha256:15ce6ab60957ca74cff444fe66d9045c1fd3e92c8936894ebd1f3eef2fff075f", size = 178535, upload_time = "2025-04-15T17:44:44.532Z" }, + { url = "https://files.pythonhosted.org/packages/12/6e/2fed56cd47ca739b43e892707ae9a13790a486a3173be063681ca67d2262/contourpy-1.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e1578f7eafce927b168752ed7e22646dad6cd9bca673c60bff55889fa236ebf9", size = 223096, upload_time = "2025-04-15T17:44:48.194Z" }, + { url = "https://files.pythonhosted.org/packages/54/4c/e76fe2a03014a7c767d79ea35c86a747e9325537a8b7627e0e5b3ba266b4/contourpy-1.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f", size = 285090, upload_time = "2025-04-15T17:43:34.084Z" }, + { url = "https://files.pythonhosted.org/packages/7b/e2/5aba47debd55d668e00baf9651b721e7733975dc9fc27264a62b0dd26eb8/contourpy-1.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c85bb486e9be652314bb5b9e2e3b0d1b2e643d5eec4992c0fbe8ac71775da739", size = 268643, upload_time = "2025-04-15T17:43:38.626Z" }, + { url = "https://files.pythonhosted.org/packages/a1/37/cd45f1f051fe6230f751cc5cdd2728bb3a203f5619510ef11e732109593c/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:745b57db7758f3ffc05a10254edd3182a2a83402a89c00957a8e8a22f5582823", size = 310443, upload_time = "2025-04-15T17:43:44.522Z" }, + { url = "https://files.pythonhosted.org/packages/8b/a2/36ea6140c306c9ff6dd38e3bcec80b3b018474ef4d17eb68ceecd26675f4/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970e9173dbd7eba9b4e01aab19215a48ee5dd3f43cef736eebde064a171f89a5", size = 349865, upload_time = "2025-04-15T17:43:49.545Z" }, + { url = "https://files.pythonhosted.org/packages/95/b7/2fc76bc539693180488f7b6cc518da7acbbb9e3b931fd9280504128bf956/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6c4639a9c22230276b7bffb6a850dfc8258a2521305e1faefe804d006b2e532", size = 321162, upload_time = "2025-04-15T17:43:54.203Z" }, + { url = "https://files.pythonhosted.org/packages/f4/10/76d4f778458b0aa83f96e59d65ece72a060bacb20cfbee46cf6cd5ceba41/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc829960f34ba36aad4302e78eabf3ef16a3a100863f0d4eeddf30e8a485a03b", size = 327355, upload_time = "2025-04-15T17:44:01.025Z" }, + { url = "https://files.pythonhosted.org/packages/43/a3/10cf483ea683f9f8ab096c24bad3cce20e0d1dd9a4baa0e2093c1c962d9d/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d32530b534e986374fc19eaa77fcb87e8a99e5431499949b828312bdcd20ac52", size = 1307935, upload_time = "2025-04-15T17:44:17.322Z" }, + { url = "https://files.pythonhosted.org/packages/78/73/69dd9a024444489e22d86108e7b913f3528f56cfc312b5c5727a44188471/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd", size = 1372168, upload_time = "2025-04-15T17:44:33.43Z" }, + { url = "https://files.pythonhosted.org/packages/0f/1b/96d586ccf1b1a9d2004dd519b25fbf104a11589abfd05484ff12199cca21/contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1", size = 189550, upload_time = "2025-04-15T17:44:37.092Z" }, + { url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214, upload_time = "2025-04-15T17:44:40.827Z" }, +] + +[[package]] +name = "csscompressor" +version = "0.9.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/2a/8c3ac3d8bc94e6de8d7ae270bb5bc437b210bb9d6d9e46630c98f4abd20c/csscompressor-0.9.5.tar.gz", hash = "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05", size = 237808, upload_time = "2017-11-26T21:13:08.238Z" } + +[[package]] +name = "cycler" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload_time = "2023-10-07T05:32:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload_time = "2023-10-07T05:32:16.783Z" }, +] + +[[package]] +name = "debugpy" +version = "1.8.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444, upload_time = "2025-04-10T19:46:10.981Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268, upload_time = "2025-04-10T19:46:26.044Z" }, + { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077, upload_time = "2025-04-10T19:46:27.464Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127, upload_time = "2025-04-10T19:46:29.467Z" }, + { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249, upload_time = "2025-04-10T19:46:31.538Z" }, + { url = "https://files.pythonhosted.org/packages/4d/e4/395c792b243f2367d84202dc33689aa3d910fb9826a7491ba20fc9e261f5/debugpy-1.8.14-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:329a15d0660ee09fec6786acdb6e0443d595f64f5d096fc3e3ccf09a4259033f", size = 2485676, upload_time = "2025-04-10T19:46:32.96Z" }, + { url = "https://files.pythonhosted.org/packages/ba/f1/6f2ee3f991327ad9e4c2f8b82611a467052a0fb0e247390192580e89f7ff/debugpy-1.8.14-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f920c7f9af409d90f5fd26e313e119d908b0dd2952c2393cd3247a462331f15", size = 4217514, upload_time = "2025-04-10T19:46:34.336Z" }, + { url = "https://files.pythonhosted.org/packages/79/28/b9d146f8f2dc535c236ee09ad3e5ac899adb39d7a19b49f03ac95d216beb/debugpy-1.8.14-cp313-cp313-win32.whl", hash = "sha256:3784ec6e8600c66cbdd4ca2726c72d8ca781e94bce2f396cc606d458146f8f4e", size = 5254756, upload_time = "2025-04-10T19:46:36.199Z" }, + { url = "https://files.pythonhosted.org/packages/e0/62/a7b4a57013eac4ccaef6977966e6bec5c63906dd25a86e35f155952e29a1/debugpy-1.8.14-cp313-cp313-win_amd64.whl", hash = "sha256:684eaf43c95a3ec39a96f1f5195a7ff3d4144e4a18d69bb66beeb1a6de605d6e", size = 5297119, upload_time = "2025-04-10T19:46:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230, upload_time = "2025-04-10T19:46:54.077Z" }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload_time = "2025-02-24T04:41:34.073Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload_time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "distlib" +version = "0.3.9" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload_time = "2024-10-09T18:35:47.551Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload_time = "2024-10-09T18:35:44.272Z" }, +] + +[[package]] +name = "et-xmlfile" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234, upload_time = "2024-10-25T17:25:40.039Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059, upload_time = "2024-10-25T17:25:39.051Z" }, +] + +[[package]] +name = "executing" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload_time = "2025-01-22T15:41:29.403Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload_time = "2025-01-22T15:41:25.929Z" }, +] + +[[package]] +name = "filelock" +version = "3.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload_time = "2025-03-14T07:11:40.47Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload_time = "2025-03-14T07:11:39.145Z" }, +] + +[[package]] +name = "flexcache" +version = "0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/b0/8a21e330561c65653d010ef112bf38f60890051d244ede197ddaa08e50c1/flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656", size = 15816, upload_time = "2024-03-09T03:21:07.555Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/cd/c883e1a7c447479d6e13985565080e3fea88ab5a107c21684c813dba1875/flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32", size = 13263, upload_time = "2024-03-09T03:21:05.635Z" }, +] + +[[package]] +name = "flexparser" +version = "0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/82/99/b4de7e39e8eaf8207ba1a8fa2241dd98b2ba72ae6e16960d8351736d8702/flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2", size = 31799, upload_time = "2024-11-07T02:00:56.249Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/5e/3be305568fe5f34448807976dc82fc151d76c3e0e03958f34770286278c1/flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846", size = 27625, upload_time = "2024-11-07T02:00:54.523Z" }, +] + +[[package]] +name = "fonttools" +version = "4.58.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/97/5735503e58d3816b0989955ef9b2df07e4c99b246469bd8b3823a14095da/fonttools-4.58.5.tar.gz", hash = "sha256:b2a35b0a19f1837284b3a23dd64fd7761b8911d50911ecd2bdbaf5b2d1b5df9c", size = 3526243, upload_time = "2025-07-03T14:04:47.736Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/68/66b498ee66f3e7e92fd68476c2509508082b7f57d68c0cdb4b8573f44331/fonttools-4.58.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c3af3fefaafb570a03051a0d6899b8374dcf8e6a4560e42575843aef33bdbad6", size = 2754751, upload_time = "2025-07-03T14:03:52.976Z" }, + { url = "https://files.pythonhosted.org/packages/f1/1e/edbc14b79290980c3944a1f43098624bc8965f534964aa03d52041f24cb4/fonttools-4.58.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:688137789dbd44e8757ad77b49a771539d8069195ffa9a8bcf18176e90bbd86d", size = 2322342, upload_time = "2025-07-03T14:03:54.957Z" }, + { url = "https://files.pythonhosted.org/packages/c1/d7/3c87cf147185d91c2e946460a5cf68c236427b4a23ab96793ccb7d8017c9/fonttools-4.58.5-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2af65836cf84cd7cb882d0b353bdc73643a497ce23b7414c26499bb8128ca1af", size = 4897011, upload_time = "2025-07-03T14:03:56.829Z" }, + { url = "https://files.pythonhosted.org/packages/a0/d6/fbb44cc85d4195fe54356658bd9f934328b4f74ae14addd90b4b5558b5c9/fonttools-4.58.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d2d79cfeb456bf438cb9fb87437634d4d6f228f27572ca5c5355e58472d5519d", size = 4942291, upload_time = "2025-07-03T14:03:59.204Z" }, + { url = "https://files.pythonhosted.org/packages/4d/c8/453f82e21aedf25cdc2ae619c03a73512398cec9bd8b6c3b1c571e0b6632/fonttools-4.58.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0feac9dda9a48a7a342a593f35d50a5cee2dbd27a03a4c4a5192834a4853b204", size = 4886824, upload_time = "2025-07-03T14:04:01.517Z" }, + { url = "https://files.pythonhosted.org/packages/40/54/e9190001b8e22d123f78925b2f508c866d9d18531694b979277ad45d59b0/fonttools-4.58.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:36555230e168511e83ad8637232268649634b8dfff6ef58f46e1ebc057a041ad", size = 5038510, upload_time = "2025-07-03T14:04:03.917Z" }, + { url = "https://files.pythonhosted.org/packages/cf/9c/07cdad4774841a6304aabae939f8cbb9538cb1d8e97f5016b334da98e73a/fonttools-4.58.5-cp312-cp312-win32.whl", hash = "sha256:26ec05319353842d127bd02516eacb25b97ca83966e40e9ad6fab85cab0576f4", size = 2188459, upload_time = "2025-07-03T14:04:06.103Z" }, + { url = "https://files.pythonhosted.org/packages/0e/4d/1eaaad22781d55f49d1b184563842172aeb6a4fe53c029e503be81114314/fonttools-4.58.5-cp312-cp312-win_amd64.whl", hash = "sha256:778a632e538f82c1920579c0c01566a8f83dc24470c96efbf2fbac698907f569", size = 2236565, upload_time = "2025-07-03T14:04:08.27Z" }, + { url = "https://files.pythonhosted.org/packages/3a/ee/764dd8b99891f815241f449345863cfed9e546923d9cef463f37fd1d7168/fonttools-4.58.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f4b6f1360da13cecc88c0d60716145b31e1015fbe6a59e32f73a4404e2ea92cf", size = 2745867, upload_time = "2025-07-03T14:04:10.586Z" }, + { url = "https://files.pythonhosted.org/packages/e2/23/8fef484c02fef55e226dfeac4339a015c5480b6a496064058491759ac71e/fonttools-4.58.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a036822e915692aa2c03e2decc60f49a8190f8111b639c947a4f4e5774d0d7a", size = 2317933, upload_time = "2025-07-03T14:04:12.335Z" }, + { url = "https://files.pythonhosted.org/packages/ab/47/f92b135864fa777e11ad68420bf89446c91a572fe2782745586f8e6aac0c/fonttools-4.58.5-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a6d7709fcf4577b0f294ee6327088884ca95046e1eccde87c53bbba4d5008541", size = 4877844, upload_time = "2025-07-03T14:04:14.58Z" }, + { url = "https://files.pythonhosted.org/packages/3e/65/6c1a83511d8ac32411930495645edb3f8dfabebcb78f08cf6009ba2585ec/fonttools-4.58.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b9b5099ca99b79d6d67162778b1b1616fc0e1de02c1a178248a0da8d78a33852", size = 4940106, upload_time = "2025-07-03T14:04:16.563Z" }, + { url = "https://files.pythonhosted.org/packages/fa/90/df8eb77d6cf266cbbba01866a1349a3e9121e0a63002cf8d6754e994f755/fonttools-4.58.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3f2c05a8d82a4d15aebfdb3506e90793aea16e0302cec385134dd960647a36c0", size = 4879458, upload_time = "2025-07-03T14:04:19.584Z" }, + { url = "https://files.pythonhosted.org/packages/26/b1/e32f8de51b7afcfea6ad62780da2fa73212c43a32cd8cafcc852189d7949/fonttools-4.58.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79f0c4b1cc63839b61deeac646d8dba46f8ed40332c2ac1b9997281462c2e4ba", size = 5021917, upload_time = "2025-07-03T14:04:21.736Z" }, + { url = "https://files.pythonhosted.org/packages/89/72/578aa7fe32918dd763c62f447aaed672d665ee10e3eeb1725f4d6493fe96/fonttools-4.58.5-cp313-cp313-win32.whl", hash = "sha256:a1a9a2c462760976882131cbab7d63407813413a2d32cd699e86a1ff22bf7aa5", size = 2186827, upload_time = "2025-07-03T14:04:24.237Z" }, + { url = "https://files.pythonhosted.org/packages/71/a3/21e921b16cb9c029d3308e0cb79c9a937e9ff1fc1ee28c2419f0957b9e7c/fonttools-4.58.5-cp313-cp313-win_amd64.whl", hash = "sha256:bca61b14031a4b7dc87e14bf6ca34c275f8e4b9f7a37bc2fe746b532a924cf30", size = 2235706, upload_time = "2025-07-03T14:04:26.082Z" }, + { url = "https://files.pythonhosted.org/packages/d7/d4/1d85a1996b6188cd2713230e002d79a6f3a289bb17cef600cba385848b72/fonttools-4.58.5-py3-none-any.whl", hash = "sha256:e48a487ed24d9b611c5c4b25db1e50e69e9854ca2670e39a3486ffcd98863ec4", size = 1115318, upload_time = "2025-07-03T14:04:45.378Z" }, +] + +[[package]] +name = "frictionless" +version = "5.18.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "chardet" }, + { name = "humanize" }, + { name = "isodate" }, + { name = "jinja2" }, + { name = "jsonschema" }, + { name = "marko" }, + { name = "petl" }, + { name = "pydantic" }, + { name = "python-dateutil" }, + { name = "python-slugify" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "rfc3986" }, + { name = "simpleeval" }, + { name = "tabulate" }, + { name = "typer" }, + { name = "typing-extensions" }, + { name = "validators" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/11/d0/c94675a1c1b8c12fd68489e2b4a924f80a2b122199cd986c58a5136197d2/frictionless-5.18.1.tar.gz", hash = "sha256:daeaf55f896eeb52b43e62600466af9528fe0aeeebd28b1b917e13322f370a8b", size = 74372478, upload_time = "2025-03-25T21:32:50.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/7a/dac76d31584bb4f874ae860490c9465f5b59bd8c110f68fbbb07aba48845/frictionless-5.18.1-py3-none-any.whl", hash = "sha256:3f4c87469a89bdb88e9cc318088553a26f3d14839098f95c183ea01fc89628dd", size = 531615, upload_time = "2025-03-25T21:32:45.534Z" }, +] + +[package.optional-dependencies] +pandas = [ + { name = "pandas" }, + { name = "pyarrow" }, +] + +[[package]] +name = "ghp-import" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943, upload_time = "2022-05-02T15:47:16.11Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034, upload_time = "2022-05-02T15:47:14.552Z" }, +] + +[[package]] +name = "gitdb" +version = "4.0.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "smmap" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684, upload_time = "2025-01-02T07:20:46.413Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794, upload_time = "2025-01-02T07:20:43.624Z" }, +] + +[[package]] +name = "gitpython" +version = "3.1.44" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gitdb" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196, upload_time = "2025-01-02T07:32:43.59Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599, upload_time = "2025-01-02T07:32:40.731Z" }, +] + +[[package]] +name = "griffe" +version = "1.7.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a9/3e/5aa9a61f7c3c47b0b52a1d930302992229d191bf4bc76447b324b731510a/griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b", size = 395137, upload_time = "2025-04-23T11:29:09.147Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/c6/5c20af38c2a57c15d87f7f38bee77d63c1d2a3689f74fefaf35915dd12b2/griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75", size = 129303, upload_time = "2025-04-23T11:29:07.145Z" }, +] + +[[package]] +name = "hdx-python-country" +version = "3.9.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "hdx-python-utilities" }, + { name = "libhxl" }, + { name = "tenacity" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1d/6b/424edb0f0834cd645a9ea97e2741046d42dbc54407eaef17bcd160f8e58d/hdx_python_country-3.9.5.tar.gz", hash = "sha256:1db9872a083c8bd0632ae13247b48011ab4655265b7967f73eeac88123168879", size = 529170, upload_time = "2025-06-24T22:28:08.996Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/9a/19b60f18d26bc674cc5c5e6a55ea0ec1da3713df6a307dfe6881486464f3/hdx_python_country-3.9.5-py3-none-any.whl", hash = "sha256:6e21b3f904564c8ef61835f063d2bcefff11393967bbe261b42ea87fe82f9b7c", size = 55537, upload_time = "2025-06-24T22:28:06.824Z" }, +] + +[[package]] +name = "hdx-python-utilities" +version = "3.8.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frictionless" }, + { name = "ijson" }, + { name = "jsonlines" }, + { name = "loguru" }, + { name = "openpyxl" }, + { name = "pyphonetics" }, + { name = "python-dateutil" }, + { name = "ratelimit" }, + { name = "requests-file" }, + { name = "ruamel-yaml" }, + { name = "tableschema-to-template" }, + { name = "xlrd" }, + { name = "xlsx2csv" }, + { name = "xlwt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/de/b812b6b242f47db98ed043b7f3211c81443f0e59959377e97a93915331c0/hdx_python_utilities-3.8.7.tar.gz", hash = "sha256:41212cd5b682777d393ee991b546f1b4326665d981714a829e5483101fd15a60", size = 656009, upload_time = "2025-05-14T02:31:28.578Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/38/44f2a0b83e103bb3d47dbc66dfaa4aaa65c34c60fd26d5445fb2bbd3c09a/hdx_python_utilities-3.8.7-py3-none-any.whl", hash = "sha256:47e67810e81a481504b8653c429b31b8c237da594dc27604075c8e79077c8640", size = 60787, upload_time = "2025-05-14T02:31:26.794Z" }, +] + +[[package]] +name = "htmlmin2" +version = "0.1.13" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/be/31/a76f4bfa885f93b8167cb4c85cf32b54d1f64384d0b897d45bc6d19b7b45/htmlmin2-0.1.13-py3-none-any.whl", hash = "sha256:75609f2a42e64f7ce57dbff28a39890363bde9e7e5885db633317efbdf8c79a2", size = 34486, upload_time = "2023-03-14T21:28:30.388Z" }, +] + +[[package]] +name = "humanize" +version = "4.12.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/22/d1/bbc4d251187a43f69844f7fd8941426549bbe4723e8ff0a7441796b0789f/humanize-4.12.3.tar.gz", hash = "sha256:8430be3a615106fdfceb0b2c1b41c4c98c6b0fc5cc59663a5539b111dd325fb0", size = 80514, upload_time = "2025-04-30T11:51:07.98Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/1e/62a2ec3104394a2975a2629eec89276ede9dbe717092f6966fcf963e1bf0/humanize-4.12.3-py3-none-any.whl", hash = "sha256:2cbf6370af06568fa6d2da77c86edb7886f3160ecd19ee1ffef07979efc597f6", size = 128487, upload_time = "2025-04-30T11:51:06.468Z" }, +] + +[[package]] +name = "identify" +version = "2.6.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/88/d193a27416618628a5eea64e3223acd800b40749a96ffb322a9b55a49ed1/identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6", size = 99254, upload_time = "2025-05-23T20:37:53.3Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/cd/18f8da995b658420625f7ef13f037be53ae04ec5ad33f9b718240dcfd48c/identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2", size = 99145, upload_time = "2025-05-23T20:37:51.495Z" }, +] + +[[package]] +name = "idna" +version = "3.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload_time = "2024-09-15T18:07:39.745Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload_time = "2024-09-15T18:07:37.964Z" }, +] + +[[package]] +name = "ijson" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/4f/1cfeada63f5fce87536651268ddf5cca79b8b4bbb457aee4e45777964a0a/ijson-3.4.0.tar.gz", hash = "sha256:5f74dcbad9d592c428d3ca3957f7115a42689ee7ee941458860900236ae9bb13", size = 65782, upload_time = "2025-05-08T02:37:20.135Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ec/317ee5b2d13e50448833ead3aa906659a32b376191f6abc2a7c6112d2b27/ijson-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:956b148f88259a80a9027ffbe2d91705fae0c004fbfba3e5a24028fbe72311a9", size = 87212, upload_time = "2025-05-08T02:35:51.835Z" }, + { url = "https://files.pythonhosted.org/packages/f8/43/b06c96ced30cacecc5d518f89b0fd1c98c294a30ff88848b70ed7b7f72a1/ijson-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:06b89960f5c721106394c7fba5760b3f67c515b8eb7d80f612388f5eca2f4621", size = 59175, upload_time = "2025-05-08T02:35:52.988Z" }, + { url = "https://files.pythonhosted.org/packages/e9/df/b4aeafb7ecde463130840ee9be36130823ec94a00525049bf700883378b8/ijson-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a0bb591cf250dd7e9dfab69d634745a7f3272d31cfe879f9156e0a081fd97ee", size = 59011, upload_time = "2025-05-08T02:35:54.394Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7c/a80b8e361641609507f62022089626d4b8067f0826f51e1c09e4ba86eba8/ijson-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e92de999977f4c6b660ffcf2b8d59604ccd531edcbfde05b642baf283e0de8", size = 146094, upload_time = "2025-05-08T02:35:55.601Z" }, + { url = "https://files.pythonhosted.org/packages/01/44/fa416347b9a802e3646c6ff377fc3278bd7d6106e17beb339514b6a3184e/ijson-3.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e9602157a5b869d44b6896e64f502c712a312fcde044c2e586fccb85d3e316e", size = 137903, upload_time = "2025-05-08T02:35:56.814Z" }, + { url = "https://files.pythonhosted.org/packages/24/c6/41a9ad4d42df50ff6e70fdce79b034f09b914802737ebbdc141153d8d791/ijson-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e83660edb931a425b7ff662eb49db1f10d30ca6d4d350e5630edbed098bc01", size = 148339, upload_time = "2025-05-08T02:35:58.595Z" }, + { url = "https://files.pythonhosted.org/packages/5f/6f/7d01efda415b8502dce67e067ed9e8a124f53e763002c02207e542e1a2f1/ijson-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:49bf8eac1c7b7913073865a859c215488461f7591b4fa6a33c14b51cb73659d0", size = 149383, upload_time = "2025-05-08T02:36:00.197Z" }, + { url = "https://files.pythonhosted.org/packages/95/6c/0d67024b9ecb57916c5e5ab0350251c9fe2f86dc9c8ca2b605c194bdad6a/ijson-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:160b09273cb42019f1811469508b0a057d19f26434d44752bde6f281da6d3f32", size = 141580, upload_time = "2025-05-08T02:36:01.998Z" }, + { url = "https://files.pythonhosted.org/packages/06/43/e10edcc1c6a3b619294de835e7678bfb3a1b8a75955f3689fd66a1e9e7b4/ijson-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2019ff4e6f354aa00c76c8591bd450899111c61f2354ad55cc127e2ce2492c44", size = 150280, upload_time = "2025-05-08T02:36:03.926Z" }, + { url = "https://files.pythonhosted.org/packages/07/84/1cbeee8e8190a1ebe6926569a92cf1fa80ddb380c129beb6f86559e1bb24/ijson-3.4.0-cp312-cp312-win32.whl", hash = "sha256:931c007bf6bb8330705429989b2deed6838c22b63358a330bf362b6e458ba0bf", size = 51512, upload_time = "2025-05-08T02:36:05.595Z" }, + { url = "https://files.pythonhosted.org/packages/66/13/530802bc391c95be6fe9f96e9aa427d94067e7c0b7da7a9092344dc44c4b/ijson-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:71523f2b64cb856a820223e94d23e88369f193017ecc789bb4de198cc9d349eb", size = 54081, upload_time = "2025-05-08T02:36:07.099Z" }, + { url = "https://files.pythonhosted.org/packages/77/b3/b1d2eb2745e5204ec7a25365a6deb7868576214feb5e109bce368fb692c9/ijson-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e8d96f88d75196a61c9d9443de2b72c2d4a7ba9456ff117b57ae3bba23a54256", size = 87216, upload_time = "2025-05-08T02:36:08.414Z" }, + { url = "https://files.pythonhosted.org/packages/b1/cd/cd6d340087617f8cc9bedbb21d974542fe2f160ed0126b8288d3499a469b/ijson-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c45906ce2c1d3b62f15645476fc3a6ca279549127f01662a39ca5ed334a00cf9", size = 59170, upload_time = "2025-05-08T02:36:09.604Z" }, + { url = "https://files.pythonhosted.org/packages/3e/4d/32d3a9903b488d3306e3c8288f6ee4217d2eea82728261db03a1045eb5d1/ijson-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4ab4bc2119b35c4363ea49f29563612237cae9413d2fbe54b223be098b97bc9e", size = 59013, upload_time = "2025-05-08T02:36:10.696Z" }, + { url = "https://files.pythonhosted.org/packages/d5/c8/db15465ab4b0b477cee5964c8bfc94bf8c45af8e27a23e1ad78d1926e587/ijson-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97b0a9b5a15e61dfb1f14921ea4e0dba39f3a650df6d8f444ddbc2b19b479ff1", size = 146564, upload_time = "2025-05-08T02:36:11.916Z" }, + { url = "https://files.pythonhosted.org/packages/c4/d8/0755545bc122473a9a434ab90e0f378780e603d75495b1ca3872de757873/ijson-3.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3047bb994dabedf11de11076ed1147a307924b6e5e2df6784fb2599c4ad8c60", size = 137917, upload_time = "2025-05-08T02:36:13.532Z" }, + { url = "https://files.pythonhosted.org/packages/d0/c6/aeb89c8939ebe3f534af26c8c88000c5e870dbb6ae33644c21a4531f87d2/ijson-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68c83161b052e9f5dc8191acbc862bb1e63f8a35344cb5cd0db1afd3afd487a6", size = 148897, upload_time = "2025-05-08T02:36:14.813Z" }, + { url = "https://files.pythonhosted.org/packages/be/0e/7ef6e9b372106f2682a4a32b3c65bf86bb471a1670e4dac242faee4a7d3f/ijson-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1eebd9b6c20eb1dffde0ae1f0fbb4aeacec2eb7b89adb5c7c0449fc9fd742760", size = 149711, upload_time = "2025-05-08T02:36:16.476Z" }, + { url = "https://files.pythonhosted.org/packages/d1/5d/9841c3ed75bcdabf19b3202de5f862a9c9c86ce5c7c9d95fa32347fdbf5f/ijson-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:13fb6d5c35192c541421f3ee81239d91fc15a8d8f26c869250f941f4b346a86c", size = 141691, upload_time = "2025-05-08T02:36:18.044Z" }, + { url = "https://files.pythonhosted.org/packages/d5/d2/ce74e17218dba292e9be10a44ed0c75439f7958cdd263adb0b5b92d012d5/ijson-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:28b7196ff7b37c4897c547a28fa4876919696739fc91c1f347651c9736877c69", size = 150738, upload_time = "2025-05-08T02:36:19.483Z" }, + { url = "https://files.pythonhosted.org/packages/4e/43/dcc480f94453b1075c9911d4755b823f3ace275761bb37b40139f22109ca/ijson-3.4.0-cp313-cp313-win32.whl", hash = "sha256:3c2691d2da42629522140f77b99587d6f5010440d58d36616f33bc7bdc830cc3", size = 51512, upload_time = "2025-05-08T02:36:20.99Z" }, + { url = "https://files.pythonhosted.org/packages/35/dd/d8c5f15efd85ba51e6e11451ebe23d779361a9ec0d192064c2a8c3cdfcb8/ijson-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:c4554718c275a044c47eb3874f78f2c939f300215d9031e785a6711cc51b83fc", size = 54074, upload_time = "2025-05-08T02:36:22.075Z" }, + { url = "https://files.pythonhosted.org/packages/79/73/24ad8cd106203419c4d22bed627e02e281d66b83e91bc206a371893d0486/ijson-3.4.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:915a65e3f3c0eee2ea937bc62aaedb6c14cc1e8f0bb9f3f4fb5a9e2bbfa4b480", size = 91694, upload_time = "2025-05-08T02:36:23.289Z" }, + { url = "https://files.pythonhosted.org/packages/17/2d/f7f680984bcb7324a46a4c2df3bd73cf70faef0acfeb85a3f811abdfd590/ijson-3.4.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:afbe9748707684b6c5adc295c4fdcf27765b300aec4d484e14a13dca4e5c0afa", size = 61390, upload_time = "2025-05-08T02:36:24.42Z" }, + { url = "https://files.pythonhosted.org/packages/09/a1/f3ca7bab86f95bdb82494739e71d271410dfefce4590785d511669127145/ijson-3.4.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d823f8f321b4d8d5fa020d0a84f089fec5d52b7c0762430476d9f8bf95bbc1a9", size = 61140, upload_time = "2025-05-08T02:36:26.708Z" }, + { url = "https://files.pythonhosted.org/packages/51/79/dd340df3d4fc7771c95df29997956b92ed0570fe7b616d1792fea9ad93f2/ijson-3.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0a2c54f3becf76881188beefd98b484b1d3bd005769a740d5b433b089fa23", size = 214739, upload_time = "2025-05-08T02:36:27.973Z" }, + { url = "https://files.pythonhosted.org/packages/59/f0/85380b7f51d1f5fb7065d76a7b623e02feca920cc678d329b2eccc0011e0/ijson-3.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ced19a83ab09afa16257a0b15bc1aa888dbc555cb754be09d375c7f8d41051f2", size = 198338, upload_time = "2025-05-08T02:36:29.496Z" }, + { url = "https://files.pythonhosted.org/packages/a5/cd/313264cf2ec42e0f01d198c49deb7b6fadeb793b3685e20e738eb6b3fa13/ijson-3.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8100f9885eff1f38d35cef80ef759a1bbf5fc946349afa681bd7d0e681b7f1a0", size = 207515, upload_time = "2025-05-08T02:36:30.981Z" }, + { url = "https://files.pythonhosted.org/packages/12/94/bf14457aa87ea32641f2db577c9188ef4e4ae373478afef422b31fc7f309/ijson-3.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d7bcc3f7f21b0f703031ecd15209b1284ea51b2a329d66074b5261de3916c1eb", size = 210081, upload_time = "2025-05-08T02:36:32.403Z" }, + { url = "https://files.pythonhosted.org/packages/7d/b4/eaee39e290e40e52d665db9bd1492cfdce86bd1e47948e0440db209c6023/ijson-3.4.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2dcb190227b09dd171bdcbfe4720fddd574933c66314818dfb3960c8a6246a77", size = 199253, upload_time = "2025-05-08T02:36:33.861Z" }, + { url = "https://files.pythonhosted.org/packages/c5/9c/e09c7b9ac720a703ab115b221b819f149ed54c974edfff623c1e925e57da/ijson-3.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:eda4cfb1d49c6073a901735aaa62e39cb7ab47f3ad7bb184862562f776f1fa8a", size = 203816, upload_time = "2025-05-08T02:36:35.348Z" }, + { url = "https://files.pythonhosted.org/packages/7c/14/acd304f412e32d16a2c12182b9d78206bb0ae35354d35664f45db05c1b3b/ijson-3.4.0-cp313-cp313t-win32.whl", hash = "sha256:0772638efa1f3b72b51736833404f1cbd2f5beeb9c1a3d392e7d385b9160cba7", size = 53760, upload_time = "2025-05-08T02:36:36.608Z" }, + { url = "https://files.pythonhosted.org/packages/2f/24/93dd0a467191590a5ed1fc2b35842bca9d09900d001e00b0b497c0208ef6/ijson-3.4.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3d8a0d67f36e4fb97c61a724456ef0791504b16ce6f74917a31c2e92309bbeb9", size = 56948, upload_time = "2025-05-08T02:36:37.849Z" }, +] + +[[package]] +name = "imf-reader" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "chardet" }, + { name = "pandas" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/af/45/24521d229aec5c058d998510794567788bc7b1b764dfaa02fb8e0aeda4b7/imf_reader-1.3.0.tar.gz", hash = "sha256:3f3130dd793a112fdd5913a7c7b733847a5a07fd70dee14d57624ae4e021a141", size = 12990, upload_time = "2025-02-06T09:16:10.723Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/5b/3a063116950f2aa2b450120e78162bb5b87098dde3b75ae90210c6f2c099/imf_reader-1.3.0-py3-none-any.whl", hash = "sha256:3515c6644dfef44d5fda89f5bb3786b4f83da20f49184911f0df2386782106f1", size = 16520, upload_time = "2025-02-06T09:16:09.042Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload_time = "2025-03-19T20:09:59.721Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload_time = "2025-03-19T20:10:01.071Z" }, +] + +[[package]] +name = "ipykernel" +version = "6.29.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appnope", marker = "sys_platform == 'darwin'" }, + { name = "comm" }, + { name = "debugpy" }, + { name = "ipython" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "matplotlib-inline" }, + { name = "nest-asyncio" }, + { name = "packaging" }, + { name = "psutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367, upload_time = "2024-07-01T14:07:22.543Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173, upload_time = "2024-07-01T14:07:19.603Z" }, +] + +[[package]] +name = "ipython" +version = "9.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "ipython-pygments-lexers" }, + { name = "jedi" }, + { name = "matplotlib-inline" }, + { name = "pexpect", marker = "sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit" }, + { name = "pygments" }, + { name = "stack-data" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/80/406f9e3bde1c1fd9bf5a0be9d090f8ae623e401b7670d8f6fdf2ab679891/ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270", size = 4385338, upload_time = "2025-07-01T11:11:30.606Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066", size = 611021, upload_time = "2025-07-01T11:11:27.85Z" }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload_time = "2025-01-17T11:24:34.505Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload_time = "2025-01-17T11:24:33.271Z" }, +] + +[[package]] +name = "isodate" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload_time = "2024-10-08T23:04:11.5Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload_time = "2024-10-08T23:04:09.501Z" }, +] + +[[package]] +name = "jedi" +version = "0.19.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "parso" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload_time = "2024-11-11T01:41:42.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload_time = "2024-11-11T01:41:40.175Z" }, +] + +[[package]] +name = "jinja2" +version = "3.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload_time = "2025-03-05T20:05:02.478Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload_time = "2025-03-05T20:05:00.369Z" }, +] + +[[package]] +name = "joblib" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475, upload_time = "2025-05-23T12:04:37.097Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746, upload_time = "2025-05-23T12:04:35.124Z" }, +] + +[[package]] +name = "jsmin" +version = "3.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/73/e01e4c5e11ad0494f4407a3f623ad4d87714909f50b17a06ed121034ff6e/jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc", size = 13925, upload_time = "2022-01-16T20:35:59.13Z" } + +[[package]] +name = "jsonlines" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/35/87/bcda8e46c88d0e34cad2f09ee2d0c7f5957bccdb9791b0b934ec84d84be4/jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74", size = 11359, upload_time = "2023-09-01T12:34:44.187Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/62/d9ba6323b9202dd2fe166beab8a86d29465c41a0288cbe229fac60c1ab8d/jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55", size = 8701, upload_time = "2023-09-01T12:34:42.563Z" }, +] + +[[package]] +name = "jsonpath-ng" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ply" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838, upload_time = "2024-10-11T15:41:42.404Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105, upload_time = "2024-11-20T17:58:30.418Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.24.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480, upload_time = "2025-05-26T18:48:10.459Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709, upload_time = "2025-05-26T18:48:08.417Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload_time = "2025-04-23T12:34:07.418Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload_time = "2025-04-23T12:34:05.422Z" }, +] + +[[package]] +name = "jupyter-client" +version = "8.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-core" }, + { name = "python-dateutil" }, + { name = "pyzmq" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload_time = "2024-09-17T10:44:17.613Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload_time = "2024-09-17T10:44:15.218Z" }, +] + +[[package]] +name = "jupyter-core" +version = "5.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "platformdirs" }, + { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload_time = "2025-05-27T07:38:16.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload_time = "2025-05-27T07:38:15.137Z" }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538, upload_time = "2024-12-24T18:30:51.519Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152, upload_time = "2024-12-24T18:29:16.85Z" }, + { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555, upload_time = "2024-12-24T18:29:19.146Z" }, + { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067, upload_time = "2024-12-24T18:29:20.096Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443, upload_time = "2024-12-24T18:29:22.843Z" }, + { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728, upload_time = "2024-12-24T18:29:24.463Z" }, + { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388, upload_time = "2024-12-24T18:29:25.776Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849, upload_time = "2024-12-24T18:29:27.202Z" }, + { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533, upload_time = "2024-12-24T18:29:28.638Z" }, + { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898, upload_time = "2024-12-24T18:29:30.368Z" }, + { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605, upload_time = "2024-12-24T18:29:33.151Z" }, + { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801, upload_time = "2024-12-24T18:29:34.584Z" }, + { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077, upload_time = "2024-12-24T18:29:36.138Z" }, + { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410, upload_time = "2024-12-24T18:29:39.991Z" }, + { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853, upload_time = "2024-12-24T18:29:42.006Z" }, + { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424, upload_time = "2024-12-24T18:29:44.38Z" }, + { url = "https://files.pythonhosted.org/packages/79/b3/e62464a652f4f8cd9006e13d07abad844a47df1e6537f73ddfbf1bc997ec/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09", size = 124156, upload_time = "2024-12-24T18:29:45.368Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2d/f13d06998b546a2ad4f48607a146e045bbe48030774de29f90bdc573df15/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1", size = 66555, upload_time = "2024-12-24T18:29:46.37Z" }, + { url = "https://files.pythonhosted.org/packages/59/e3/b8bd14b0a54998a9fd1e8da591c60998dc003618cb19a3f94cb233ec1511/kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c", size = 65071, upload_time = "2024-12-24T18:29:47.333Z" }, + { url = "https://files.pythonhosted.org/packages/f0/1c/6c86f6d85ffe4d0ce04228d976f00674f1df5dc893bf2dd4f1928748f187/kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b", size = 1378053, upload_time = "2024-12-24T18:29:49.636Z" }, + { url = "https://files.pythonhosted.org/packages/4e/b9/1c6e9f6dcb103ac5cf87cb695845f5fa71379021500153566d8a8a9fc291/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47", size = 1472278, upload_time = "2024-12-24T18:29:51.164Z" }, + { url = "https://files.pythonhosted.org/packages/ee/81/aca1eb176de671f8bda479b11acdc42c132b61a2ac861c883907dde6debb/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16", size = 1478139, upload_time = "2024-12-24T18:29:52.594Z" }, + { url = "https://files.pythonhosted.org/packages/49/f4/e081522473671c97b2687d380e9e4c26f748a86363ce5af48b4a28e48d06/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc", size = 1413517, upload_time = "2024-12-24T18:29:53.941Z" }, + { url = "https://files.pythonhosted.org/packages/8f/e9/6a7d025d8da8c4931522922cd706105aa32b3291d1add8c5427cdcd66e63/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246", size = 1474952, upload_time = "2024-12-24T18:29:56.523Z" }, + { url = "https://files.pythonhosted.org/packages/82/13/13fa685ae167bee5d94b415991c4fc7bb0a1b6ebea6e753a87044b209678/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794", size = 2269132, upload_time = "2024-12-24T18:29:57.989Z" }, + { url = "https://files.pythonhosted.org/packages/ef/92/bb7c9395489b99a6cb41d502d3686bac692586db2045adc19e45ee64ed23/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b", size = 2425997, upload_time = "2024-12-24T18:29:59.393Z" }, + { url = "https://files.pythonhosted.org/packages/ed/12/87f0e9271e2b63d35d0d8524954145837dd1a6c15b62a2d8c1ebe0f182b4/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3", size = 2376060, upload_time = "2024-12-24T18:30:01.338Z" }, + { url = "https://files.pythonhosted.org/packages/02/6e/c8af39288edbce8bf0fa35dee427b082758a4b71e9c91ef18fa667782138/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957", size = 2520471, upload_time = "2024-12-24T18:30:04.574Z" }, + { url = "https://files.pythonhosted.org/packages/13/78/df381bc7b26e535c91469f77f16adcd073beb3e2dd25042efd064af82323/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb", size = 2338793, upload_time = "2024-12-24T18:30:06.25Z" }, + { url = "https://files.pythonhosted.org/packages/d0/dc/c1abe38c37c071d0fc71c9a474fd0b9ede05d42f5a458d584619cfd2371a/kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2", size = 71855, upload_time = "2024-12-24T18:30:07.535Z" }, + { url = "https://files.pythonhosted.org/packages/a0/b6/21529d595b126ac298fdd90b705d87d4c5693de60023e0efcb4f387ed99e/kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30", size = 65430, upload_time = "2024-12-24T18:30:08.504Z" }, + { url = "https://files.pythonhosted.org/packages/34/bd/b89380b7298e3af9b39f49334e3e2a4af0e04819789f04b43d560516c0c8/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c", size = 126294, upload_time = "2024-12-24T18:30:09.508Z" }, + { url = "https://files.pythonhosted.org/packages/83/41/5857dc72e5e4148eaac5aa76e0703e594e4465f8ab7ec0fc60e3a9bb8fea/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc", size = 67736, upload_time = "2024-12-24T18:30:11.039Z" }, + { url = "https://files.pythonhosted.org/packages/e1/d1/be059b8db56ac270489fb0b3297fd1e53d195ba76e9bbb30e5401fa6b759/kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712", size = 66194, upload_time = "2024-12-24T18:30:14.886Z" }, + { url = "https://files.pythonhosted.org/packages/e1/83/4b73975f149819eb7dcf9299ed467eba068ecb16439a98990dcb12e63fdd/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e", size = 1465942, upload_time = "2024-12-24T18:30:18.927Z" }, + { url = "https://files.pythonhosted.org/packages/c7/2c/30a5cdde5102958e602c07466bce058b9d7cb48734aa7a4327261ac8e002/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880", size = 1595341, upload_time = "2024-12-24T18:30:22.102Z" }, + { url = "https://files.pythonhosted.org/packages/ff/9b/1e71db1c000385aa069704f5990574b8244cce854ecd83119c19e83c9586/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062", size = 1598455, upload_time = "2024-12-24T18:30:24.947Z" }, + { url = "https://files.pythonhosted.org/packages/85/92/c8fec52ddf06231b31cbb779af77e99b8253cd96bd135250b9498144c78b/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7", size = 1522138, upload_time = "2024-12-24T18:30:26.286Z" }, + { url = "https://files.pythonhosted.org/packages/0b/51/9eb7e2cd07a15d8bdd976f6190c0164f92ce1904e5c0c79198c4972926b7/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed", size = 1582857, upload_time = "2024-12-24T18:30:28.86Z" }, + { url = "https://files.pythonhosted.org/packages/0f/95/c5a00387a5405e68ba32cc64af65ce881a39b98d73cc394b24143bebc5b8/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d", size = 2293129, upload_time = "2024-12-24T18:30:30.34Z" }, + { url = "https://files.pythonhosted.org/packages/44/83/eeb7af7d706b8347548313fa3a3a15931f404533cc54fe01f39e830dd231/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165", size = 2421538, upload_time = "2024-12-24T18:30:33.334Z" }, + { url = "https://files.pythonhosted.org/packages/05/f9/27e94c1b3eb29e6933b6986ffc5fa1177d2cd1f0c8efc5f02c91c9ac61de/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", size = 2390661, upload_time = "2024-12-24T18:30:34.939Z" }, + { url = "https://files.pythonhosted.org/packages/d9/d4/3c9735faa36ac591a4afcc2980d2691000506050b7a7e80bcfe44048daa7/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", size = 2546710, upload_time = "2024-12-24T18:30:37.281Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213, upload_time = "2024-12-24T18:30:40.019Z" }, +] + +[[package]] +name = "lark" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/60/bc7622aefb2aee1c0b4ba23c1446d3e30225c8770b38d7aedbfb65ca9d5a/lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80", size = 252132, upload_time = "2024-08-13T19:49:00.652Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2d/00/d90b10b962b4277f5e64a78b6609968859ff86889f5b898c1a778c06ec00/lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c", size = 111036, upload_time = "2024-08-13T19:48:58.603Z" }, +] + +[[package]] +name = "libhxl" +version = "5.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonpath-ng" }, + { name = "ply" }, + { name = "python-dateutil" }, + { name = "python-io-wrapper" }, + { name = "requests" }, + { name = "structlog" }, + { name = "unidecode" }, + { name = "urllib3" }, + { name = "wheel" }, + { name = "xlrd3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/ad/c1dafb7c59e685692a2eeafce83245b7c5f46e05881fdb77a0cbb7c19c74/libhxl-5.2.2.tar.gz", hash = "sha256:3a74d9f23561bfcefd20e5229c574bc68dfc114fdb6ba1ba684d9e9d7ea52483", size = 127736, upload_time = "2024-10-25T09:19:11.202Z" } + +[[package]] +name = "loguru" +version = "0.7.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "win32-setctime", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559, upload_time = "2024-12-06T11:20:56.608Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595, upload_time = "2024-12-06T11:20:54.538Z" }, +] + +[[package]] +name = "markdown" +version = "3.8.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/c2/4ab49206c17f75cb08d6311171f2d65798988db4360c4d1485bd0eedd67c/markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45", size = 362071, upload_time = "2025-06-19T17:12:44.483Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/2b/34cc11786bc00d0f04d0f5fdc3a2b1ae0b6239eef72d3d345805f9ad92a1/markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24", size = 106827, upload_time = "2025-06-19T17:12:42.994Z" }, +] + +[[package]] +name = "markdown-it-py" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload_time = "2023-06-03T06:41:14.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload_time = "2023-06-03T06:41:11.019Z" }, +] + +[[package]] +name = "marko" +version = "2.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/dc/c8cadbd83de1b38d95a48568b445a5553005ebdd32e00a333ca940113db4/marko-2.1.4.tar.gz", hash = "sha256:dd7d66f3706732bf8f994790e674649a4fd0a6c67f16b80246f30de8e16a1eac", size = 142795, upload_time = "2025-06-13T03:25:50.857Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/66/49e3691d14898fb6e34ccb337c7677dfb7e18269ed170f12e4b85315eae6/marko-2.1.4-py3-none-any.whl", hash = "sha256:81c2b9f570ca485bc356678d9ba1a1b3eb78b4a315d01f3ded25442fdc796990", size = 42186, upload_time = "2025-06-13T03:25:49.858Z" }, +] + +[[package]] +name = "markupsafe" +version = "3.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload_time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload_time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload_time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload_time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload_time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload_time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload_time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload_time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload_time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload_time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload_time = "2024-10-18T15:21:23.499Z" }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload_time = "2024-10-18T15:21:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload_time = "2024-10-18T15:21:25.382Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload_time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload_time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload_time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload_time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload_time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload_time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload_time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload_time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload_time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload_time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload_time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload_time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload_time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload_time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload_time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload_time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload_time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload_time = "2024-10-18T15:21:42.784Z" }, +] + +[[package]] +name = "matplotlib" +version = "3.10.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "contourpy" }, + { name = "cycler" }, + { name = "fonttools" }, + { name = "kiwisolver" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "pillow" }, + { name = "pyparsing" }, + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811, upload_time = "2025-05-08T19:10:54.39Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689, upload_time = "2025-05-08T19:10:07.602Z" }, + { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466, upload_time = "2025-05-08T19:10:09.383Z" }, + { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252, upload_time = "2025-05-08T19:10:11.958Z" }, + { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321, upload_time = "2025-05-08T19:10:14.47Z" }, + { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972, upload_time = "2025-05-08T19:10:16.569Z" }, + { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954, upload_time = "2025-05-08T19:10:18.663Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c1/23cfb566a74c696a3b338d8955c549900d18fe2b898b6e94d682ca21e7c2/matplotlib-3.10.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9f2efccc8dcf2b86fc4ee849eea5dcaecedd0773b30f47980dc0cbeabf26ec84", size = 8180318, upload_time = "2025-05-08T19:10:20.426Z" }, + { url = "https://files.pythonhosted.org/packages/6c/0c/02f1c3b66b30da9ee343c343acbb6251bef5b01d34fad732446eaadcd108/matplotlib-3.10.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3ddbba06a6c126e3301c3d272a99dcbe7f6c24c14024e80307ff03791a5f294e", size = 8051132, upload_time = "2025-05-08T19:10:22.569Z" }, + { url = "https://files.pythonhosted.org/packages/b4/ab/8db1a5ac9b3a7352fb914133001dae889f9fcecb3146541be46bed41339c/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748302b33ae9326995b238f606e9ed840bf5886ebafcb233775d946aa8107a15", size = 8457633, upload_time = "2025-05-08T19:10:24.749Z" }, + { url = "https://files.pythonhosted.org/packages/f5/64/41c4367bcaecbc03ef0d2a3ecee58a7065d0a36ae1aa817fe573a2da66d4/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a80fcccbef63302c0efd78042ea3c2436104c5b1a4d3ae20f864593696364ac7", size = 8601031, upload_time = "2025-05-08T19:10:27.03Z" }, + { url = "https://files.pythonhosted.org/packages/12/6f/6cc79e9e5ab89d13ed64da28898e40fe5b105a9ab9c98f83abd24e46d7d7/matplotlib-3.10.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:55e46cbfe1f8586adb34f7587c3e4f7dedc59d5226719faf6cb54fc24f2fd52d", size = 9406988, upload_time = "2025-05-08T19:10:29.056Z" }, + { url = "https://files.pythonhosted.org/packages/b1/0f/eed564407bd4d935ffabf561ed31099ed609e19287409a27b6d336848653/matplotlib-3.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:151d89cb8d33cb23345cd12490c76fd5d18a56581a16d950b48c6ff19bb2ab93", size = 8068034, upload_time = "2025-05-08T19:10:31.221Z" }, + { url = "https://files.pythonhosted.org/packages/3e/e5/2f14791ff69b12b09e9975e1d116d9578ac684460860ce542c2588cb7a1c/matplotlib-3.10.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c26dd9834e74d164d06433dc7be5d75a1e9890b926b3e57e74fa446e1a62c3e2", size = 8218223, upload_time = "2025-05-08T19:10:33.114Z" }, + { url = "https://files.pythonhosted.org/packages/5c/08/30a94afd828b6e02d0a52cae4a29d6e9ccfcf4c8b56cc28b021d3588873e/matplotlib-3.10.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:24853dad5b8c84c8c2390fc31ce4858b6df504156893292ce8092d190ef8151d", size = 8094985, upload_time = "2025-05-08T19:10:35.337Z" }, + { url = "https://files.pythonhosted.org/packages/89/44/f3bc6b53066c889d7a1a3ea8094c13af6a667c5ca6220ec60ecceec2dabe/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68f7878214d369d7d4215e2a9075fef743be38fa401d32e6020bab2dfabaa566", size = 8483109, upload_time = "2025-05-08T19:10:37.611Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c7/473bc559beec08ebee9f86ca77a844b65747e1a6c2691e8c92e40b9f42a8/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6929fc618cb6db9cb75086f73b3219bbb25920cb24cee2ea7a12b04971a4158", size = 8618082, upload_time = "2025-05-08T19:10:39.892Z" }, + { url = "https://files.pythonhosted.org/packages/d8/e9/6ce8edd264c8819e37bbed8172e0ccdc7107fe86999b76ab5752276357a4/matplotlib-3.10.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c7818292a5cc372a2dc4c795e5c356942eb8350b98ef913f7fda51fe175ac5d", size = 9413699, upload_time = "2025-05-08T19:10:42.376Z" }, + { url = "https://files.pythonhosted.org/packages/1b/92/9a45c91089c3cf690b5badd4be81e392ff086ccca8a1d4e3a08463d8a966/matplotlib-3.10.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4f23ffe95c5667ef8a2b56eea9b53db7f43910fa4a2d5472ae0f72b64deab4d5", size = 8139044, upload_time = "2025-05-08T19:10:44.551Z" }, +] + +[[package]] +name = "matplotlib-inline" +version = "0.1.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload_time = "2024-04-15T13:44:44.803Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload_time = "2024-04-15T13:44:43.265Z" }, +] + +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload_time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload_time = "2022-08-14T12:40:09.779Z" }, +] + +[[package]] +name = "mergedeep" +version = "1.3.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661, upload_time = "2021-02-05T18:55:30.623Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload_time = "2021-02-05T18:55:29.583Z" }, +] + +[[package]] +name = "mkdocs" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "ghp-import" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "markupsafe" }, + { name = "mergedeep" }, + { name = "mkdocs-get-deps" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "pyyaml" }, + { name = "pyyaml-env-tag" }, + { name = "watchdog" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159, upload_time = "2024-08-30T12:24:06.899Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload_time = "2024-08-30T12:24:05.054Z" }, +] + +[[package]] +name = "mkdocs-autolinks-plugin" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mkdocs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/b7/efc75b7870a4fecbc9a05ba94ce622462a40b5a13670d00036c5b47bf82f/mkdocs-autolinks-plugin-0.7.1.tar.gz", hash = "sha256:445ddb9b417b7795856c30801bb430773186c1daf210bdeecf8305f55a47d151", size = 4375, upload_time = "2023-08-04T14:42:25.67Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/9c/ee3d81a799b8b0b73a89625bcbf3c58cd369c8a26a1b415413edea9bf259/mkdocs_autolinks_plugin-0.7.1-py3-none-any.whl", hash = "sha256:5c6c17f6649b68e79a9ef0b2648d59f3072e18002b90ee1586a64c505f11ab12", size = 4235, upload_time = "2023-08-04T14:42:23.955Z" }, +] + +[[package]] +name = "mkdocs-autorefs" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown" }, + { name = "markupsafe" }, + { name = "mkdocs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/47/0c/c9826f35b99c67fa3a7cddfa094c1a6c43fafde558c309c6e4403e5b37dc/mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749", size = 54961, upload_time = "2025-05-20T13:09:09.886Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/dc/fc063b78f4b769d1956319351704e23ebeba1e9e1d6a41b4b602325fd7e4/mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13", size = 24969, upload_time = "2025-05-20T13:09:08.237Z" }, +] + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mergedeep" }, + { name = "platformdirs" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload_time = "2023-11-20T17:51:09.981Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521, upload_time = "2023-11-20T17:51:08.587Z" }, +] + +[[package]] +name = "mkdocs-git-revision-date-localized-plugin" +version = "1.4.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "gitpython" }, + { name = "mkdocs" }, + { name = "pytz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5e/f8/a17ec39a4fc314d40cc96afdc1d401e393ebd4f42309d454cc940a2cf38a/mkdocs_git_revision_date_localized_plugin-1.4.7.tar.gz", hash = "sha256:10a49eff1e1c3cb766e054b9d8360c904ce4fe8c33ac3f6cc083ac6459c91953", size = 450473, upload_time = "2025-05-28T18:26:20.697Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/b6/106fcc15287e7228658fbd0ad9e8b0d775becced0a089cc39984641f4a0f/mkdocs_git_revision_date_localized_plugin-1.4.7-py3-none-any.whl", hash = "sha256:056c0a90242409148f1dc94d5c9d2c25b5b8ddd8de45489fa38f7fa7ccad2bc4", size = 25382, upload_time = "2025-05-28T18:26:18.907Z" }, +] + +[[package]] +name = "mkdocs-material" +version = "9.6.15" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "backrefs" }, + { name = "colorama" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "mkdocs" }, + { name = "mkdocs-material-extensions" }, + { name = "paginate" }, + { name = "pygments" }, + { name = "pymdown-extensions" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/c1/f804ba2db2ddc2183e900befe7dad64339a34fa935034e1ab405289d0a97/mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5", size = 3951836, upload_time = "2025-07-01T10:14:15.671Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/30/dda19f0495a9096b64b6b3c07c4bfcff1c76ee0fc521086d53593f18b4c0/mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a", size = 8716840, upload_time = "2025-07-01T10:14:13.18Z" }, +] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847, upload_time = "2023-11-22T19:09:45.208Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload_time = "2023-11-22T19:09:43.465Z" }, +] + +[[package]] +name = "mkdocs-minify-plugin" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "csscompressor" }, + { name = "htmlmin2" }, + { name = "jsmin" }, + { name = "mkdocs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/52/67/fe4b77e7a8ae7628392e28b14122588beaf6078b53eb91c7ed000fd158ac/mkdocs-minify-plugin-0.8.0.tar.gz", hash = "sha256:bc11b78b8120d79e817308e2b11539d790d21445eb63df831e393f76e52e753d", size = 8366, upload_time = "2024-01-29T16:11:32.982Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1b/cd/2e8d0d92421916e2ea4ff97f10a544a9bd5588eb747556701c983581df13/mkdocs_minify_plugin-0.8.0-py3-none-any.whl", hash = "sha256:5fba1a3f7bd9a2142c9954a6559a57e946587b21f133165ece30ea145c66aee6", size = 6723, upload_time = "2024-01-29T16:11:31.851Z" }, +] + +[[package]] +name = "mkdocs-open-in-new-tab" +version = "1.0.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mkdocs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/0e/f72a506a21bdb27b807124e00c688226848a388d1fd3980b80ae3cc27203/mkdocs_open_in_new_tab-1.0.8.tar.gz", hash = "sha256:3e0dad08cc9938b0b13097be8e0aa435919de1eeb2d1a648e66b5dee8d57e048", size = 5791, upload_time = "2024-11-18T13:15:13.977Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/94/44f3c868495481c868d08eea065c82803f1affd8553d3383b782f497613c/mkdocs_open_in_new_tab-1.0.8-py3-none-any.whl", hash = "sha256:051d767a4467b12d89827e1fea0ec660b05b027c726317fe4fceee5456e36ad2", size = 7717, upload_time = "2024-11-18T13:15:12.286Z" }, +] + +[[package]] +name = "mkdocstrings" +version = "0.29.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jinja2" }, + { name = "markdown" }, + { name = "markupsafe" }, + { name = "mkdocs" }, + { name = "mkdocs-autorefs" }, + { name = "pymdown-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/41/e8/d22922664a627a0d3d7ff4a6ca95800f5dde54f411982591b4621a76225d/mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42", size = 1212686, upload_time = "2025-03-31T08:33:11.997Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/14/22533a578bf8b187e05d67e2c1721ce10e3f526610eebaf7a149d557ea7a/mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6", size = 1631075, upload_time = "2025-03-31T08:33:09.661Z" }, +] + +[[package]] +name = "mkdocstrings-python" +version = "1.16.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "griffe" }, + { name = "mkdocs-autorefs" }, + { name = "mkdocstrings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/ed/b886f8c714fd7cccc39b79646b627dbea84cd95c46be43459ef46852caf0/mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d", size = 206065, upload_time = "2025-06-03T12:52:49.276Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/dd/a24ee3de56954bfafb6ede7cd63c2413bb842cc48eb45e41c43a05a33074/mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374", size = 124287, upload_time = "2025-06-03T12:52:47.819Z" }, +] + +[[package]] +name = "mypy" +version = "1.16.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "pathspec" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/69/92c7fa98112e4d9eb075a239caa4ef4649ad7d441545ccffbd5e34607cbb/mypy-1.16.1.tar.gz", hash = "sha256:6bd00a0a2094841c5e47e7374bb42b83d64c527a502e3334e1173a0c24437bab", size = 3324747, upload_time = "2025-06-16T16:51:35.145Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/d6/39482e5fcc724c15bf6280ff5806548c7185e0c090712a3736ed4d07e8b7/mypy-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:af4792433f09575d9eeca5c63d7d90ca4aeceda9d8355e136f80f8967639183d", size = 11066493, upload_time = "2025-06-16T16:47:01.683Z" }, + { url = "https://files.pythonhosted.org/packages/e6/e5/26c347890efc6b757f4d5bb83f4a0cf5958b8cf49c938ac99b8b72b420a6/mypy-1.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66df38405fd8466ce3517eda1f6640611a0b8e70895e2a9462d1d4323c5eb4b9", size = 10081687, upload_time = "2025-06-16T16:48:19.367Z" }, + { url = "https://files.pythonhosted.org/packages/44/c7/b5cb264c97b86914487d6a24bd8688c0172e37ec0f43e93b9691cae9468b/mypy-1.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44e7acddb3c48bd2713994d098729494117803616e116032af192871aed80b79", size = 11839723, upload_time = "2025-06-16T16:49:20.912Z" }, + { url = "https://files.pythonhosted.org/packages/15/f8/491997a9b8a554204f834ed4816bda813aefda31cf873bb099deee3c9a99/mypy-1.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ab5eca37b50188163fa7c1b73c685ac66c4e9bdee4a85c9adac0e91d8895e15", size = 12722980, upload_time = "2025-06-16T16:37:40.929Z" }, + { url = "https://files.pythonhosted.org/packages/df/f0/2bd41e174b5fd93bc9de9a28e4fb673113633b8a7f3a607fa4a73595e468/mypy-1.16.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb6229b2c9086247e21a83c309754b9058b438704ad2f6807f0d8227f6ebdd", size = 12903328, upload_time = "2025-06-16T16:34:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/61/81/5572108a7bec2c46b8aff7e9b524f371fe6ab5efb534d38d6b37b5490da8/mypy-1.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:1f0435cf920e287ff68af3d10a118a73f212deb2ce087619eb4e648116d1fe9b", size = 9562321, upload_time = "2025-06-16T16:48:58.823Z" }, + { url = "https://files.pythonhosted.org/packages/28/e3/96964af4a75a949e67df4b95318fe2b7427ac8189bbc3ef28f92a1c5bc56/mypy-1.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ddc91eb318c8751c69ddb200a5937f1232ee8efb4e64e9f4bc475a33719de438", size = 11063480, upload_time = "2025-06-16T16:47:56.205Z" }, + { url = "https://files.pythonhosted.org/packages/f5/4d/cd1a42b8e5be278fab7010fb289d9307a63e07153f0ae1510a3d7b703193/mypy-1.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:87ff2c13d58bdc4bbe7dc0dedfe622c0f04e2cb2a492269f3b418df2de05c536", size = 10090538, upload_time = "2025-06-16T16:46:43.92Z" }, + { url = "https://files.pythonhosted.org/packages/c9/4f/c3c6b4b66374b5f68bab07c8cabd63a049ff69796b844bc759a0ca99bb2a/mypy-1.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a7cfb0fe29fe5a9841b7c8ee6dffb52382c45acdf68f032145b75620acfbd6f", size = 11836839, upload_time = "2025-06-16T16:36:28.039Z" }, + { url = "https://files.pythonhosted.org/packages/b4/7e/81ca3b074021ad9775e5cb97ebe0089c0f13684b066a750b7dc208438403/mypy-1.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:051e1677689c9d9578b9c7f4d206d763f9bbd95723cd1416fad50db49d52f359", size = 12715634, upload_time = "2025-06-16T16:50:34.441Z" }, + { url = "https://files.pythonhosted.org/packages/e9/95/bdd40c8be346fa4c70edb4081d727a54d0a05382d84966869738cfa8a497/mypy-1.16.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d5d2309511cc56c021b4b4e462907c2b12f669b2dbeb68300110ec27723971be", size = 12895584, upload_time = "2025-06-16T16:34:54.857Z" }, + { url = "https://files.pythonhosted.org/packages/5a/fd/d486a0827a1c597b3b48b1bdef47228a6e9ee8102ab8c28f944cb83b65dc/mypy-1.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:4f58ac32771341e38a853c5d0ec0dfe27e18e27da9cdb8bbc882d2249c71a3ee", size = 9573886, upload_time = "2025-06-16T16:36:43.589Z" }, + { url = "https://files.pythonhosted.org/packages/cf/d3/53e684e78e07c1a2bf7105715e5edd09ce951fc3f47cf9ed095ec1b7a037/mypy-1.16.1-py3-none-any.whl", hash = "sha256:5fc2ac4027d0ef28d6ba69a0343737a23c4d1b83672bf38d1fe237bdc0643b37", size = 2265923, upload_time = "2025-06-16T16:48:02.366Z" }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload_time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload_time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "nest-asyncio" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload_time = "2024-01-21T14:25:19.227Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload_time = "2024-01-21T14:25:17.223Z" }, +] + +[[package]] +name = "nodeenv" +version = "1.9.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload_time = "2024-06-04T18:44:11.171Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload_time = "2024-06-04T18:44:08.352Z" }, +] + +[[package]] +name = "numpy" +version = "2.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/19/d7c972dfe90a353dbd3efbbe1d14a5951de80c99c9dc1b93cd998d51dc0f/numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b", size = 20390372, upload_time = "2025-06-21T12:28:33.469Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/56/71ad5022e2f63cfe0ca93559403d0edef14aea70a841d640bd13cdba578e/numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d", size = 20896664, upload_time = "2025-06-21T12:15:30.845Z" }, + { url = "https://files.pythonhosted.org/packages/25/65/2db52ba049813670f7f987cc5db6dac9be7cd95e923cc6832b3d32d87cef/numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29", size = 14131078, upload_time = "2025-06-21T12:15:52.23Z" }, + { url = "https://files.pythonhosted.org/packages/57/dd/28fa3c17b0e751047ac928c1e1b6990238faad76e9b147e585b573d9d1bd/numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc", size = 5112554, upload_time = "2025-06-21T12:16:01.434Z" }, + { url = "https://files.pythonhosted.org/packages/c9/fc/84ea0cba8e760c4644b708b6819d91784c290288c27aca916115e3311d17/numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943", size = 6646560, upload_time = "2025-06-21T12:16:11.895Z" }, + { url = "https://files.pythonhosted.org/packages/61/b2/512b0c2ddec985ad1e496b0bd853eeb572315c0f07cd6997473ced8f15e2/numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25", size = 14260638, upload_time = "2025-06-21T12:16:32.611Z" }, + { url = "https://files.pythonhosted.org/packages/6e/45/c51cb248e679a6c6ab14b7a8e3ead3f4a3fe7425fc7a6f98b3f147bec532/numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660", size = 16632729, upload_time = "2025-06-21T12:16:57.439Z" }, + { url = "https://files.pythonhosted.org/packages/e4/ff/feb4be2e5c09a3da161b412019caf47183099cbea1132fd98061808c2df2/numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952", size = 15565330, upload_time = "2025-06-21T12:17:20.638Z" }, + { url = "https://files.pythonhosted.org/packages/bc/6d/ceafe87587101e9ab0d370e4f6e5f3f3a85b9a697f2318738e5e7e176ce3/numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77", size = 18361734, upload_time = "2025-06-21T12:17:47.938Z" }, + { url = "https://files.pythonhosted.org/packages/2b/19/0fb49a3ea088be691f040c9bf1817e4669a339d6e98579f91859b902c636/numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab", size = 6320411, upload_time = "2025-06-21T12:17:58.475Z" }, + { url = "https://files.pythonhosted.org/packages/b1/3e/e28f4c1dd9e042eb57a3eb652f200225e311b608632bc727ae378623d4f8/numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76", size = 12734973, upload_time = "2025-06-21T12:18:17.601Z" }, + { url = "https://files.pythonhosted.org/packages/04/a8/8a5e9079dc722acf53522b8f8842e79541ea81835e9b5483388701421073/numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30", size = 10191491, upload_time = "2025-06-21T12:18:33.585Z" }, + { url = "https://files.pythonhosted.org/packages/d4/bd/35ad97006d8abff8631293f8ea6adf07b0108ce6fec68da3c3fcca1197f2/numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8", size = 20889381, upload_time = "2025-06-21T12:19:04.103Z" }, + { url = "https://files.pythonhosted.org/packages/f1/4f/df5923874d8095b6062495b39729178eef4a922119cee32a12ee1bd4664c/numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e", size = 14152726, upload_time = "2025-06-21T12:19:25.599Z" }, + { url = "https://files.pythonhosted.org/packages/8c/0f/a1f269b125806212a876f7efb049b06c6f8772cf0121139f97774cd95626/numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0", size = 5105145, upload_time = "2025-06-21T12:19:34.782Z" }, + { url = "https://files.pythonhosted.org/packages/6d/63/a7f7fd5f375b0361682f6ffbf686787e82b7bbd561268e4f30afad2bb3c0/numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d", size = 6639409, upload_time = "2025-06-21T12:19:45.228Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0d/1854a4121af895aab383f4aa233748f1df4671ef331d898e32426756a8a6/numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1", size = 14257630, upload_time = "2025-06-21T12:20:06.544Z" }, + { url = "https://files.pythonhosted.org/packages/50/30/af1b277b443f2fb08acf1c55ce9d68ee540043f158630d62cef012750f9f/numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1", size = 16627546, upload_time = "2025-06-21T12:20:31.002Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ec/3b68220c277e463095342d254c61be8144c31208db18d3fd8ef02712bcd6/numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0", size = 15562538, upload_time = "2025-06-21T12:20:54.322Z" }, + { url = "https://files.pythonhosted.org/packages/77/2b/4014f2bcc4404484021c74d4c5ee8eb3de7e3f7ac75f06672f8dcf85140a/numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8", size = 18360327, upload_time = "2025-06-21T12:21:21.053Z" }, + { url = "https://files.pythonhosted.org/packages/40/8d/2ddd6c9b30fcf920837b8672f6c65590c7d92e43084c25fc65edc22e93ca/numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8", size = 6312330, upload_time = "2025-06-21T12:25:07.447Z" }, + { url = "https://files.pythonhosted.org/packages/dd/c8/beaba449925988d415efccb45bf977ff8327a02f655090627318f6398c7b/numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42", size = 12731565, upload_time = "2025-06-21T12:25:26.444Z" }, + { url = "https://files.pythonhosted.org/packages/0b/c3/5c0c575d7ec78c1126998071f58facfc124006635da75b090805e642c62e/numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e", size = 10190262, upload_time = "2025-06-21T12:25:42.196Z" }, + { url = "https://files.pythonhosted.org/packages/ea/19/a029cd335cf72f79d2644dcfc22d90f09caa86265cbbde3b5702ccef6890/numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8", size = 20987593, upload_time = "2025-06-21T12:21:51.664Z" }, + { url = "https://files.pythonhosted.org/packages/25/91/8ea8894406209107d9ce19b66314194675d31761fe2cb3c84fe2eeae2f37/numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb", size = 14300523, upload_time = "2025-06-21T12:22:13.583Z" }, + { url = "https://files.pythonhosted.org/packages/a6/7f/06187b0066eefc9e7ce77d5f2ddb4e314a55220ad62dd0bfc9f2c44bac14/numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee", size = 5227993, upload_time = "2025-06-21T12:22:22.53Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ec/a926c293c605fa75e9cfb09f1e4840098ed46d2edaa6e2152ee35dc01ed3/numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992", size = 6736652, upload_time = "2025-06-21T12:22:33.629Z" }, + { url = "https://files.pythonhosted.org/packages/e3/62/d68e52fb6fde5586650d4c0ce0b05ff3a48ad4df4ffd1b8866479d1d671d/numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c", size = 14331561, upload_time = "2025-06-21T12:22:55.056Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ec/b74d3f2430960044bdad6900d9f5edc2dc0fb8bf5a0be0f65287bf2cbe27/numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48", size = 16693349, upload_time = "2025-06-21T12:23:20.53Z" }, + { url = "https://files.pythonhosted.org/packages/0d/15/def96774b9d7eb198ddadfcbd20281b20ebb510580419197e225f5c55c3e/numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee", size = 15642053, upload_time = "2025-06-21T12:23:43.697Z" }, + { url = "https://files.pythonhosted.org/packages/2b/57/c3203974762a759540c6ae71d0ea2341c1fa41d84e4971a8e76d7141678a/numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280", size = 18434184, upload_time = "2025-06-21T12:24:10.708Z" }, + { url = "https://files.pythonhosted.org/packages/22/8a/ccdf201457ed8ac6245187850aff4ca56a79edbea4829f4e9f14d46fa9a5/numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e", size = 6440678, upload_time = "2025-06-21T12:24:21.596Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7e/7f431d8bd8eb7e03d79294aed238b1b0b174b3148570d03a8a8a8f6a0da9/numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc", size = 12870697, upload_time = "2025-06-21T12:24:40.644Z" }, + { url = "https://files.pythonhosted.org/packages/d4/ca/af82bf0fad4c3e573c6930ed743b5308492ff19917c7caaf2f9b6f9e2e98/numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244", size = 10260376, upload_time = "2025-06-21T12:24:56.884Z" }, +] + +[[package]] +name = "oda-reader" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "joblib" }, + { name = "openpyxl" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1a/d1/5c0bb2a714ebea7df131b8e87010eab39d0df75878f6785f2a214ff66bb2/oda_reader-1.2.2.tar.gz", hash = "sha256:55be081e1744e75184eca3d09e794fad71958201d08b48fb497aac97a95f3685", size = 35630, upload_time = "2025-06-16T16:15:05.49Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d8/ec/59338ec9108848dc53f50e7381b9817595bf98f414f4a732100a06828a3b/oda_reader-1.2.2-py3-none-any.whl", hash = "sha256:7f7b854ab1e9bc2cf64b6c63bd56a2ac64cb90ec054518fd01b741fd518cf007", size = 45314, upload_time = "2025-06-16T16:15:04.328Z" }, +] + +[[package]] +name = "openpyxl" +version = "3.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "et-xmlfile" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload_time = "2024-06-28T14:03:44.161Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload_time = "2024-06-28T14:03:41.161Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload_time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload_time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "paginate" +version = "0.5.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload_time = "2024-08-25T14:17:24.139Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload_time = "2024-08-25T14:17:22.55Z" }, +] + +[[package]] +name = "pandas" +version = "2.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "python-dateutil" }, + { name = "pytz" }, + { name = "tzdata" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/6f/75aa71f8a14267117adeeed5d21b204770189c0a0025acbdc03c337b28fc/pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2", size = 4487493, upload_time = "2025-07-07T19:20:04.079Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/de/b8445e0f5d217a99fe0eeb2f4988070908979bec3587c0633e5428ab596c/pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3", size = 11588172, upload_time = "2025-07-07T19:18:52.054Z" }, + { url = "https://files.pythonhosted.org/packages/1e/e0/801cdb3564e65a5ac041ab99ea6f1d802a6c325bb6e58c79c06a3f1cd010/pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232", size = 10717365, upload_time = "2025-07-07T19:18:54.785Z" }, + { url = "https://files.pythonhosted.org/packages/51/a5/c76a8311833c24ae61a376dbf360eb1b1c9247a5d9c1e8b356563b31b80c/pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e", size = 11280411, upload_time = "2025-07-07T19:18:57.045Z" }, + { url = "https://files.pythonhosted.org/packages/da/01/e383018feba0a1ead6cf5fe8728e5d767fee02f06a3d800e82c489e5daaf/pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4", size = 11988013, upload_time = "2025-07-07T19:18:59.771Z" }, + { url = "https://files.pythonhosted.org/packages/5b/14/cec7760d7c9507f11c97d64f29022e12a6cc4fc03ac694535e89f88ad2ec/pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8", size = 12767210, upload_time = "2025-07-07T19:19:02.944Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/6e2d2c6728ed29fb3d4d4d302504fb66f1a543e37eb2e43f352a86365cdf/pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679", size = 13440571, upload_time = "2025-07-07T19:19:06.82Z" }, + { url = "https://files.pythonhosted.org/packages/80/a5/3a92893e7399a691bad7664d977cb5e7c81cf666c81f89ea76ba2bff483d/pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8", size = 10987601, upload_time = "2025-07-07T19:19:09.589Z" }, + { url = "https://files.pythonhosted.org/packages/32/ed/ff0a67a2c5505e1854e6715586ac6693dd860fbf52ef9f81edee200266e7/pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22", size = 11531393, upload_time = "2025-07-07T19:19:12.245Z" }, + { url = "https://files.pythonhosted.org/packages/c7/db/d8f24a7cc9fb0972adab0cc80b6817e8bef888cfd0024eeb5a21c0bb5c4a/pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a", size = 10668750, upload_time = "2025-07-07T19:19:14.612Z" }, + { url = "https://files.pythonhosted.org/packages/0f/b0/80f6ec783313f1e2356b28b4fd8d2148c378370045da918c73145e6aab50/pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928", size = 11342004, upload_time = "2025-07-07T19:19:16.857Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e2/20a317688435470872885e7fc8f95109ae9683dec7c50be29b56911515a5/pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9", size = 12050869, upload_time = "2025-07-07T19:19:19.265Z" }, + { url = "https://files.pythonhosted.org/packages/55/79/20d746b0a96c67203a5bee5fb4e00ac49c3e8009a39e1f78de264ecc5729/pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12", size = 12750218, upload_time = "2025-07-07T19:19:21.547Z" }, + { url = "https://files.pythonhosted.org/packages/7c/0f/145c8b41e48dbf03dd18fdd7f24f8ba95b8254a97a3379048378f33e7838/pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb", size = 13416763, upload_time = "2025-07-07T19:19:23.939Z" }, + { url = "https://files.pythonhosted.org/packages/b2/c0/54415af59db5cdd86a3d3bf79863e8cc3fa9ed265f0745254061ac09d5f2/pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956", size = 10987482, upload_time = "2025-07-07T19:19:42.699Z" }, + { url = "https://files.pythonhosted.org/packages/48/64/2fd2e400073a1230e13b8cd604c9bc95d9e3b962e5d44088ead2e8f0cfec/pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a", size = 12029159, upload_time = "2025-07-07T19:19:26.362Z" }, + { url = "https://files.pythonhosted.org/packages/d8/0a/d84fd79b0293b7ef88c760d7dca69828d867c89b6d9bc52d6a27e4d87316/pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9", size = 11393287, upload_time = "2025-07-07T19:19:29.157Z" }, + { url = "https://files.pythonhosted.org/packages/50/ae/ff885d2b6e88f3c7520bb74ba319268b42f05d7e583b5dded9837da2723f/pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275", size = 11309381, upload_time = "2025-07-07T19:19:31.436Z" }, + { url = "https://files.pythonhosted.org/packages/85/86/1fa345fc17caf5d7780d2699985c03dbe186c68fee00b526813939062bb0/pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab", size = 11883998, upload_time = "2025-07-07T19:19:34.267Z" }, + { url = "https://files.pythonhosted.org/packages/81/aa/e58541a49b5e6310d89474333e994ee57fea97c8aaa8fc7f00b873059bbf/pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96", size = 12704705, upload_time = "2025-07-07T19:19:36.856Z" }, + { url = "https://files.pythonhosted.org/packages/d5/f9/07086f5b0f2a19872554abeea7658200824f5835c58a106fa8f2ae96a46c/pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444", size = 13189044, upload_time = "2025-07-07T19:19:39.999Z" }, +] + +[[package]] +name = "parso" +version = "0.8.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609, upload_time = "2024-04-05T09:43:55.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650, upload_time = "2024-04-05T09:43:53.299Z" }, +] + +[[package]] +name = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload_time = "2023-12-10T22:30:45Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload_time = "2023-12-10T22:30:43.14Z" }, +] + +[[package]] +name = "petl" +version = "1.7.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/99/28/ce7321fbd3b981fd9c212adf7455e0e4e42babebd83b92e24f8265d13dd3/petl-1.7.16.tar.gz", hash = "sha256:9c2fea64d859da45e120fd86d471e5387396cc45d5d4986efa79679f18eb8752", size = 420780, upload_time = "2025-04-04T23:54:50.921Z" } + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload_time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload_time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pillow" +version = "11.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload_time = "2025-07-01T09:16:30.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800, upload_time = "2025-07-01T09:14:17.648Z" }, + { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296, upload_time = "2025-07-01T09:14:19.828Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726, upload_time = "2025-07-03T13:10:04.448Z" }, + { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652, upload_time = "2025-07-03T13:10:10.391Z" }, + { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787, upload_time = "2025-07-01T09:14:21.63Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236, upload_time = "2025-07-01T09:14:23.321Z" }, + { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950, upload_time = "2025-07-01T09:14:25.237Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358, upload_time = "2025-07-01T09:14:27.053Z" }, + { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079, upload_time = "2025-07-01T09:14:30.104Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324, upload_time = "2025-07-01T09:14:31.899Z" }, + { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067, upload_time = "2025-07-01T09:14:33.709Z" }, + { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload_time = "2025-07-01T09:14:35.276Z" }, + { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload_time = "2025-07-01T09:14:37.203Z" }, + { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload_time = "2025-07-01T09:14:39.344Z" }, + { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload_time = "2025-07-01T09:14:41.843Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload_time = "2025-07-01T09:14:44.008Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload_time = "2025-07-03T13:10:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload_time = "2025-07-03T13:10:21.857Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload_time = "2025-07-01T09:14:45.698Z" }, + { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload_time = "2025-07-01T09:14:47.415Z" }, + { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload_time = "2025-07-01T09:14:49.636Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload_time = "2025-07-01T09:14:51.962Z" }, + { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload_time = "2025-07-01T09:14:54.142Z" }, + { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload_time = "2025-07-01T09:14:56.436Z" }, + { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload_time = "2025-07-01T09:14:58.072Z" }, + { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload_time = "2025-07-01T09:14:59.79Z" }, + { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload_time = "2025-07-01T09:15:01.648Z" }, + { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload_time = "2025-07-03T13:10:27.018Z" }, + { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload_time = "2025-07-03T13:10:33.01Z" }, + { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload_time = "2025-07-01T09:15:03.365Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload_time = "2025-07-01T09:15:05.655Z" }, + { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload_time = "2025-07-01T09:15:07.358Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload_time = "2025-07-01T09:15:09.317Z" }, + { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload_time = "2025-07-01T09:15:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload_time = "2025-07-01T09:15:13.164Z" }, + { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload_time = "2025-07-01T09:15:15.695Z" }, + { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload_time = "2025-07-01T09:15:17.429Z" }, + { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload_time = "2025-07-01T09:15:19.423Z" }, + { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload_time = "2025-07-03T13:10:38.404Z" }, + { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload_time = "2025-07-03T13:10:44.987Z" }, + { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload_time = "2025-07-01T09:15:21.237Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload_time = "2025-07-01T09:15:23.186Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload_time = "2025-07-01T09:15:25.1Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload_time = "2025-07-01T09:15:27.378Z" }, + { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload_time = "2025-07-01T09:15:29.294Z" }, + { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload_time = "2025-07-01T09:15:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload_time = "2025-07-01T09:15:33.328Z" }, + { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload_time = "2025-07-01T09:15:35.194Z" }, + { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload_time = "2025-07-01T09:15:37.114Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload_time = "2025-07-03T13:10:50.248Z" }, + { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload_time = "2025-07-03T13:10:56.432Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload_time = "2025-07-01T09:15:39.436Z" }, + { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload_time = "2025-07-01T09:15:41.269Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload_time = "2025-07-01T09:15:43.13Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload_time = "2025-07-01T09:15:44.937Z" }, + { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload_time = "2025-07-01T09:15:46.673Z" }, + { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload_time = "2025-07-01T09:15:48.512Z" }, + { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload_time = "2025-07-01T09:15:50.399Z" }, +] + +[[package]] +name = "pint" +version = "0.24.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flexcache" }, + { name = "flexparser" }, + { name = "platformdirs" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/20/bb/52b15ddf7b7706ed591134a895dbf6e41c8348171fb635e655e0a4bbb0ea/pint-0.24.4.tar.gz", hash = "sha256:35275439b574837a6cd3020a5a4a73645eb125ce4152a73a2f126bf164b91b80", size = 342225, upload_time = "2024-11-07T16:29:46.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/16/bd2f5904557265882108dc2e04f18abc05ab0c2b7082ae9430091daf1d5c/Pint-0.24.4-py3-none-any.whl", hash = "sha256:aa54926c8772159fcf65f82cc0d34de6768c151b32ad1deb0331291c38fe7659", size = 302029, upload_time = "2024-11-07T16:29:43.976Z" }, +] + +[[package]] +name = "platformdirs" +version = "4.3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload_time = "2025-05-07T22:47:42.121Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload_time = "2025-05-07T22:47:40.376Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload_time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload_time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "ply" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130, upload_time = "2018-02-15T19:01:31.097Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567, upload_time = "2018-02-15T19:01:27.172Z" }, +] + +[[package]] +name = "pre-commit" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cfgv" }, + { name = "identify" }, + { name = "nodeenv" }, + { name = "pyyaml" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload_time = "2025-03-18T21:35:20.987Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload_time = "2025-03-18T21:35:19.343Z" }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.51" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload_time = "2025-04-15T09:18:47.731Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload_time = "2025-04-15T09:18:44.753Z" }, +] + +[[package]] +name = "psutil" +version = "7.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload_time = "2025-02-13T21:54:07.946Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload_time = "2025-02-13T21:54:12.36Z" }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload_time = "2025-02-13T21:54:16.07Z" }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload_time = "2025-02-13T21:54:18.662Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload_time = "2025-02-13T21:54:21.811Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload_time = "2025-02-13T21:54:24.68Z" }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload_time = "2025-02-13T21:54:34.31Z" }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload_time = "2025-02-13T21:54:37.486Z" }, +] + +[[package]] +name = "ptyprocess" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload_time = "2020-12-28T15:15:30.155Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload_time = "2020-12-28T15:15:28.35Z" }, +] + +[[package]] +name = "pure-eval" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload_time = "2024-07-21T12:58:21.801Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload_time = "2024-07-21T12:58:20.04Z" }, +] + +[[package]] +name = "pyarrow" +version = "20.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187, upload_time = "2025-04-27T12:34:23.264Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067, upload_time = "2025-04-27T12:29:44.384Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128, upload_time = "2025-04-27T12:29:52.038Z" }, + { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890, upload_time = "2025-04-27T12:29:59.452Z" }, + { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775, upload_time = "2025-04-27T12:30:06.875Z" }, + { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231, upload_time = "2025-04-27T12:30:13.954Z" }, + { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639, upload_time = "2025-04-27T12:30:21.949Z" }, + { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549, upload_time = "2025-04-27T12:30:29.551Z" }, + { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216, upload_time = "2025-04-27T12:30:36.977Z" }, + { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496, upload_time = "2025-04-27T12:30:42.809Z" }, + { url = "https://files.pythonhosted.org/packages/9b/aa/daa413b81446d20d4dad2944110dcf4cf4f4179ef7f685dd5a6d7570dc8e/pyarrow-20.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a15532e77b94c61efadde86d10957950392999503b3616b2ffcef7621a002893", size = 30798501, upload_time = "2025-04-27T12:30:48.351Z" }, + { url = "https://files.pythonhosted.org/packages/ff/75/2303d1caa410925de902d32ac215dc80a7ce7dd8dfe95358c165f2adf107/pyarrow-20.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:dd43f58037443af715f34f1322c782ec463a3c8a94a85fdb2d987ceb5658e061", size = 32277895, upload_time = "2025-04-27T12:30:55.238Z" }, + { url = "https://files.pythonhosted.org/packages/92/41/fe18c7c0b38b20811b73d1bdd54b1fccba0dab0e51d2048878042d84afa8/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa0d288143a8585806e3cc7c39566407aab646fb9ece164609dac1cfff45f6ae", size = 41327322, upload_time = "2025-04-27T12:31:05.587Z" }, + { url = "https://files.pythonhosted.org/packages/da/ab/7dbf3d11db67c72dbf36ae63dcbc9f30b866c153b3a22ef728523943eee6/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6953f0114f8d6f3d905d98e987d0924dabce59c3cda380bdfaa25a6201563b4", size = 42411441, upload_time = "2025-04-27T12:31:15.675Z" }, + { url = "https://files.pythonhosted.org/packages/90/c3/0c7da7b6dac863af75b64e2f827e4742161128c350bfe7955b426484e226/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:991f85b48a8a5e839b2128590ce07611fae48a904cae6cab1f089c5955b57eb5", size = 40677027, upload_time = "2025-04-27T12:31:24.631Z" }, + { url = "https://files.pythonhosted.org/packages/be/27/43a47fa0ff9053ab5203bb3faeec435d43c0d8bfa40179bfd076cdbd4e1c/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:97c8dc984ed09cb07d618d57d8d4b67a5100a30c3818c2fb0b04599f0da2de7b", size = 42281473, upload_time = "2025-04-27T12:31:31.311Z" }, + { url = "https://files.pythonhosted.org/packages/bc/0b/d56c63b078876da81bbb9ba695a596eabee9b085555ed12bf6eb3b7cab0e/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9b71daf534f4745818f96c214dbc1e6124d7daf059167330b610fc69b6f3d3e3", size = 42893897, upload_time = "2025-04-27T12:31:39.406Z" }, + { url = "https://files.pythonhosted.org/packages/92/ac/7d4bd020ba9145f354012838692d48300c1b8fe5634bfda886abcada67ed/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e8b88758f9303fa5a83d6c90e176714b2fd3852e776fc2d7e42a22dd6c2fb368", size = 44543847, upload_time = "2025-04-27T12:31:45.997Z" }, + { url = "https://files.pythonhosted.org/packages/9d/07/290f4abf9ca702c5df7b47739c1b2c83588641ddfa2cc75e34a301d42e55/pyarrow-20.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:30b3051b7975801c1e1d387e17c588d8ab05ced9b1e14eec57915f79869b5031", size = 25653219, upload_time = "2025-04-27T12:31:54.11Z" }, + { url = "https://files.pythonhosted.org/packages/95/df/720bb17704b10bd69dde086e1400b8eefb8f58df3f8ac9cff6c425bf57f1/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:ca151afa4f9b7bc45bcc791eb9a89e90a9eb2772767d0b1e5389609c7d03db63", size = 30853957, upload_time = "2025-04-27T12:31:59.215Z" }, + { url = "https://files.pythonhosted.org/packages/d9/72/0d5f875efc31baef742ba55a00a25213a19ea64d7176e0fe001c5d8b6e9a/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:4680f01ecd86e0dd63e39eb5cd59ef9ff24a9d166db328679e36c108dc993d4c", size = 32247972, upload_time = "2025-04-27T12:32:05.369Z" }, + { url = "https://files.pythonhosted.org/packages/d5/bc/e48b4fa544d2eea72f7844180eb77f83f2030b84c8dad860f199f94307ed/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f4c8534e2ff059765647aa69b75d6543f9fef59e2cd4c6d18015192565d2b70", size = 41256434, upload_time = "2025-04-27T12:32:11.814Z" }, + { url = "https://files.pythonhosted.org/packages/c3/01/974043a29874aa2cf4f87fb07fd108828fc7362300265a2a64a94965e35b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e1f8a47f4b4ae4c69c4d702cfbdfe4d41e18e5c7ef6f1bb1c50918c1e81c57b", size = 42353648, upload_time = "2025-04-27T12:32:20.766Z" }, + { url = "https://files.pythonhosted.org/packages/68/95/cc0d3634cde9ca69b0e51cbe830d8915ea32dda2157560dda27ff3b3337b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:a1f60dc14658efaa927f8214734f6a01a806d7690be4b3232ba526836d216122", size = 40619853, upload_time = "2025-04-27T12:32:28.1Z" }, + { url = "https://files.pythonhosted.org/packages/29/c2/3ad40e07e96a3e74e7ed7cc8285aadfa84eb848a798c98ec0ad009eb6bcc/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:204a846dca751428991346976b914d6d2a82ae5b8316a6ed99789ebf976551e6", size = 42241743, upload_time = "2025-04-27T12:32:35.792Z" }, + { url = "https://files.pythonhosted.org/packages/eb/cb/65fa110b483339add6a9bc7b6373614166b14e20375d4daa73483755f830/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f3b117b922af5e4c6b9a9115825726cac7d8b1421c37c2b5e24fbacc8930612c", size = 42839441, upload_time = "2025-04-27T12:32:46.64Z" }, + { url = "https://files.pythonhosted.org/packages/98/7b/f30b1954589243207d7a0fbc9997401044bf9a033eec78f6cb50da3f304a/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e724a3fd23ae5b9c010e7be857f4405ed5e679db5c93e66204db1a69f733936a", size = 44503279, upload_time = "2025-04-27T12:32:56.503Z" }, + { url = "https://files.pythonhosted.org/packages/37/40/ad395740cd641869a13bcf60851296c89624662575621968dcfafabaa7f6/pyarrow-20.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:82f1ee5133bd8f49d31be1299dc07f585136679666b502540db854968576faf9", size = 25944982, upload_time = "2025-04-27T12:33:04.72Z" }, +] + +[[package]] +name = "pycparser" +version = "2.22" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload_time = "2024-03-30T13:22:22.564Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload_time = "2024-03-30T13:22:20.476Z" }, +] + +[[package]] +name = "pydantic" +version = "2.11.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload_time = "2025-06-14T08:33:17.137Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload_time = "2025-06-14T08:33:14.905Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.33.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload_time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload_time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload_time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload_time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload_time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload_time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload_time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload_time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload_time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload_time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload_time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload_time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload_time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload_time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload_time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload_time = "2025-04-23T18:31:53.175Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload_time = "2025-04-23T18:31:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload_time = "2025-04-23T18:31:57.393Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload_time = "2025-04-23T18:31:59.065Z" }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload_time = "2025-04-23T18:32:00.78Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload_time = "2025-04-23T18:32:02.418Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload_time = "2025-04-23T18:32:04.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload_time = "2025-04-23T18:32:06.129Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload_time = "2025-04-23T18:32:08.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload_time = "2025-04-23T18:32:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload_time = "2025-04-23T18:32:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload_time = "2025-04-23T18:32:14.034Z" }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload_time = "2025-04-23T18:32:15.783Z" }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload_time = "2025-04-23T18:32:18.473Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload_time = "2025-04-23T18:32:20.188Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload_time = "2025-04-23T18:32:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload_time = "2025-04-23T18:32:25.088Z" }, +] + +[[package]] +name = "pydeflate" +version = "2.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "hdx-python-country" }, + { name = "imf-reader" }, + { name = "oda-reader" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "requests" }, + { name = "wbgapi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5e/72/3e56d8166ca4b366a4e37c85711a706bba66768f70ba690bdb279f728d8d/pydeflate-2.1.3.tar.gz", hash = "sha256:48a2b74ad900dd8c50dfb1e4cdfcea8ca11cbd2d3a713bf9208f2028fea4cf4f", size = 26586, upload_time = "2025-06-03T09:38:12.25Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/31/e703ab5bc311c58e4dc00759d7a48a850877b8bbcd64c9778e2315e06bd5/pydeflate-2.1.3-py3-none-any.whl", hash = "sha256:09ebdde04eb2fea1c4b6712889cb2a9d4c2dd22ce0204aaeae64f4335667354f", size = 32540, upload_time = "2025-06-03T09:38:10.858Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload_time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload_time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pymdown-extensions" +version = "10.16" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1a/0a/c06b542ac108bfc73200677309cd9188a3a01b127a63f20cadc18d873d88/pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de", size = 853197, upload_time = "2025-06-21T17:56:36.974Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/d4/10bb14004d3c792811e05e21b5e5dcae805aacb739bd12a0540967b99592/pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2", size = 266143, upload_time = "2025-06-21T17:56:35.356Z" }, +] + +[[package]] +name = "pyparsing" +version = "3.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload_time = "2025-03-25T05:01:28.114Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload_time = "2025-03-25T05:01:24.908Z" }, +] + +[[package]] +name = "pyphonetics" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "unidecode" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/7c/7c45a9e9bf6ddb57b67e66cf4e8076a7baf3a790a3411daac1a7a2df0c5b/pyphonetics-0.5.3.tar.gz", hash = "sha256:2d3c2e359fde91a3c57914f0b5468bba7a5daf38e7927fd999992ea68990fbe4", size = 10314, upload_time = "2020-02-25T12:08:31.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/dd/a7d0a860efd3d4335d538b4361b8e9af8311f2aba2e8c7e4c7a47d623b6e/pyphonetics-0.5.3-py2.py3-none-any.whl", hash = "sha256:e6b29671d0d624dda1cac59c0c5a8a7216d8db504bae4941bfc482e04a0621d1", size = 10729, upload_time = "2020-02-25T12:08:25.368Z" }, +] + +[[package]] +name = "pytest" +version = "8.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload_time = "2025-06-18T05:48:06.109Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload_time = "2025-06-18T05:48:03.955Z" }, +] + +[[package]] +name = "python-calamine" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cc/03/269f96535705b2f18c8977fa58e76763b4e4727a9b3ae277a9468c8ffe05/python_calamine-0.4.0.tar.gz", hash = "sha256:94afcbae3fec36d2d7475095a59d4dc6fae45829968c743cb799ebae269d7bbf", size = 127737, upload_time = "2025-07-04T06:05:28.626Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/60/f951513aaaa470b3a38a87d65eca45e0a02bc329b47864f5a17db563f746/python_calamine-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:74bca5d44a73acf3dcfa5370820797fcfd225c8c71abcddea987c5b4f5077e98", size = 826603, upload_time = "2025-07-04T06:03:51.245Z" }, + { url = "https://files.pythonhosted.org/packages/76/3f/789955bbc77831c639890758f945eb2b25d6358065edf00da6751226cf31/python_calamine-0.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cf80178f5d1b0ee2ccfffb8549c50855f6249e930664adc5807f4d0d6c2b269c", size = 805826, upload_time = "2025-07-04T06:03:52.482Z" }, + { url = "https://files.pythonhosted.org/packages/00/4c/f87d17d996f647030a40bfd124fe45fe893c002bee35ae6aca9910a923ae/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65cfef345386ae86f7720f1be93495a40fd7e7feabb8caa1df5025d7fbc58a1f", size = 874989, upload_time = "2025-07-04T06:03:53.794Z" }, + { url = "https://files.pythonhosted.org/packages/47/d2/3269367303f6c0488cf1bfebded3f9fe968d118a988222e04c9b2636bf2e/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f23e6214dbf9b29065a5dcfd6a6c674dd0e251407298c9138611c907d53423ff", size = 877504, upload_time = "2025-07-04T06:03:55.095Z" }, + { url = "https://files.pythonhosted.org/packages/f9/6d/c7ac35f5c7125e8bd07eb36773f300fda20dd2da635eae78a8cebb0b6ab7/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d792d304ee232ab01598e1d3ab22e074a32c2511476b5fb4f16f4222d9c2a265", size = 1014171, upload_time = "2025-07-04T06:03:56.777Z" }, + { url = "https://files.pythonhosted.org/packages/f0/81/5ea8792a2e9ab5e2a05872db3a4d3ed3538ad5af1861282c789e2f13a8cf/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf813425918fd68f3e991ef7c4b5015be0a1a95fc4a8ab7e73c016ef1b881bb4", size = 926737, upload_time = "2025-07-04T06:03:58.024Z" }, + { url = "https://files.pythonhosted.org/packages/cc/6e/989e56e6f073fc0981a74ba7a393881eb351bb143e5486aa629b5e5d6a8b/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbe2a0ccb4d003635888eea83a995ff56b0748c8c76fc71923544f5a4a7d4cd7", size = 887032, upload_time = "2025-07-04T06:03:59.298Z" }, + { url = "https://files.pythonhosted.org/packages/5d/92/2c9bd64277c6fe4be695d7d5a803b38d953ec8565037486be7506642c27c/python_calamine-0.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a7b3bb5f0d910b9b03c240987560f843256626fd443279759df4e91b717826d2", size = 929700, upload_time = "2025-07-04T06:04:01.388Z" }, + { url = "https://files.pythonhosted.org/packages/64/fa/fc758ca37701d354a6bc7d63118699f1c73788a1f2e1b44d720824992764/python_calamine-0.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bd2c0fc2b5eabd08ceac8a2935bffa88dbc6116db971aa8c3f244bad3fd0f644", size = 1053971, upload_time = "2025-07-04T06:04:02.704Z" }, + { url = "https://files.pythonhosted.org/packages/65/52/40d7e08ae0ddba331cdc9f7fb3e92972f8f38d7afbd00228158ff6d1fceb/python_calamine-0.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:85b547cb1c5b692a0c2406678d666dbc1cec65a714046104683fe4f504a1721d", size = 1057057, upload_time = "2025-07-04T06:04:04.014Z" }, + { url = "https://files.pythonhosted.org/packages/16/de/e8a071c0adfda73285d891898a24f6e99338328c404f497ff5b0e6bc3d45/python_calamine-0.4.0-cp312-cp312-win32.whl", hash = "sha256:4c2a1e3a0db4d6de4587999a21cc35845648c84fba81c03dd6f3072c690888e4", size = 665540, upload_time = "2025-07-04T06:04:05.679Z" }, + { url = "https://files.pythonhosted.org/packages/5e/f2/7fdfada13f80db12356853cf08697ff4e38800a1809c2bdd26ee60962e7a/python_calamine-0.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b193c89ffcc146019475cd121c552b23348411e19c04dedf5c766a20db64399a", size = 695366, upload_time = "2025-07-04T06:04:06.977Z" }, + { url = "https://files.pythonhosted.org/packages/20/66/d37412ad854480ce32f50d9f74f2a2f88b1b8a6fbc32f70aabf3211ae89e/python_calamine-0.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:43a0f15e0b60c75a71b21a012b911d5d6f5fa052afad2a8edbc728af43af0fcf", size = 670740, upload_time = "2025-07-04T06:04:08.656Z" }, + { url = "https://files.pythonhosted.org/packages/5a/10/f78218ccdc5bb5591a37d582c7e8723121d0fbe8196c5a4089110ec02f22/python_calamine-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f8d6b2d2ae73acf91343f02756bdcb2fa6117db4eaf5cfab75ce50dfb54525ee", size = 826339, upload_time = "2025-07-04T06:04:10.254Z" }, + { url = "https://files.pythonhosted.org/packages/15/b1/d7d0dbbd0469db0fc628b1b9ee3a8f3b698391279f0d7aea96e2018a3863/python_calamine-0.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:aca7e019f42ca16806fef53e3028fa158005c0e68eabda577c3f3c2bea9735fd", size = 805473, upload_time = "2025-07-04T06:04:11.557Z" }, + { url = "https://files.pythonhosted.org/packages/46/52/033b902fb11f9b4bb59fa18621acbf5eaf4ecb0bce878d34fcb0020229df/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aca67cb447ba8dcefa4d5a1131d1cfdd1e0d0a0f0c6470655ce9ad37b7cfa228", size = 874275, upload_time = "2025-07-04T06:04:13.318Z" }, + { url = "https://files.pythonhosted.org/packages/56/12/e6b589293314a5d10b2c309411542424ebefb77430cc715d7601d80349ae/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e127d3b78d511d4f6fbdfed02fe666d83a722d73e27dd64d1718be9efafbabfe", size = 877061, upload_time = "2025-07-04T06:04:15.013Z" }, + { url = "https://files.pythonhosted.org/packages/64/24/0eeb583eb5d44f674ca9f7a846c665e33190431386d7c9f6d08ec9f09d3c/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e47891d9d62e3015448749ddb2ba60ab583a651d0fca9a3a1794936942ad7d5d", size = 1013946, upload_time = "2025-07-04T06:04:16.647Z" }, + { url = "https://files.pythonhosted.org/packages/c4/93/360cf58b8e24f760a3d4643423389dbc37bdca8b6fdda75ffc664ce622b5/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4072bf9dcb8ec49f5b92688bd960b5d0e03e4826d227bbd66478a6f6b0aea06", size = 926462, upload_time = "2025-07-04T06:04:17.936Z" }, + { url = "https://files.pythonhosted.org/packages/5a/5d/3b8c46ccc62d020858bc52f2d792208910eb68682c6ebf8d6706593d7a88/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eabc9dc770f753c4227aacedd8390056937e67af0bf65d6696c584d3054f1287", size = 886319, upload_time = "2025-07-04T06:04:19.33Z" }, + { url = "https://files.pythonhosted.org/packages/66/cf/73241714800bddb277f827c4683f579b81915406bf7dc643dc185cef7eb2/python_calamine-0.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6a4bcf36dc77674892616b66cffba432f5fd62df3e0adb0487ec245036b50041", size = 929044, upload_time = "2025-07-04T06:04:20.689Z" }, + { url = "https://files.pythonhosted.org/packages/7c/6b/71e30ee568ce1ea6676be66f1a42c6397946859effc471cc102922fb4792/python_calamine-0.4.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:f81518d4b49c47054cb1861badf5bcef44b0a49959968fb2e9c9cb89645c76af", size = 1053084, upload_time = "2025-07-04T06:04:22.414Z" }, + { url = "https://files.pythonhosted.org/packages/75/19/87b42fe975f8952754562785a545f6d2eec17c353befdf33a8e16c046ce0/python_calamine-0.4.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:18375eb3ac1362fcbf3a9fcad0672d8dc054001247bc52f063e0054a3e01a8d1", size = 1056735, upload_time = "2025-07-04T06:04:23.903Z" }, + { url = "https://files.pythonhosted.org/packages/04/db/ecee6e5d6ed4f3725312580a83c4cb1758c9060aa08bf2d8512d3396cea1/python_calamine-0.4.0-cp313-cp313-win32.whl", hash = "sha256:c7e98c7e531bafdf719414d0c428f25f933a82640fb92e6e84864a85e758aecc", size = 665282, upload_time = "2025-07-04T06:04:25.274Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0b/26337e0a0e2b335c1d6225bda8de259a21fea129a06009c1471deda28e1f/python_calamine-0.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:6ec081b874e78f4dbcbe70804644281366814289956755575a5871f725592d4e", size = 694982, upload_time = "2025-07-04T06:04:26.573Z" }, + { url = "https://files.pythonhosted.org/packages/90/26/f72c2b2fe70f2901abb41fcdf8249181133ddd72b9392cfb63d030393b3e/python_calamine-0.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:3f9bdf570023138ee4090a51b1e34786978d6e649852ccc3b83ac9729f125ca2", size = 670283, upload_time = "2025-07-04T06:04:28.434Z" }, +] + +[[package]] +name = "python-dateutil" +version = "2.9.0.post0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload_time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload_time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-io-wrapper" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/74/8dc5f7d0b7cc1a0ca9e5c320abf11adee2094998c93ae8c9c80d9a8323ff/python-io-wrapper-0.3.1.tar.gz", hash = "sha256:e3391787ff0d9870e739294c6392437915502153e695a017450aa46b6d091762", size = 3271, upload_time = "2022-11-14T15:00:10.932Z" } + +[[package]] +name = "python-slugify" +version = "8.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "text-unidecode" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921, upload_time = "2024-02-08T18:32:45.488Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051, upload_time = "2024-02-08T18:32:43.911Z" }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload_time = "2025-03-25T02:25:00.538Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload_time = "2025-03-25T02:24:58.468Z" }, +] + +[[package]] +name = "pywin32" +version = "310" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload_time = "2025-03-17T00:55:58.807Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload_time = "2025-03-17T00:56:00.8Z" }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload_time = "2025-03-17T00:56:02.601Z" }, + { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384, upload_time = "2025-03-17T00:56:04.383Z" }, + { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039, upload_time = "2025-03-17T00:56:06.207Z" }, + { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152, upload_time = "2025-03-17T00:56:07.819Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload_time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload_time = "2024-08-06T20:32:25.131Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload_time = "2024-08-06T20:32:26.511Z" }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload_time = "2024-08-06T20:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload_time = "2024-08-06T20:32:30.058Z" }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload_time = "2024-08-06T20:32:31.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload_time = "2024-08-06T20:32:37.083Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload_time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload_time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload_time = "2024-08-06T20:32:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload_time = "2024-08-06T20:32:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload_time = "2024-08-06T20:32:44.801Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload_time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload_time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload_time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload_time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload_time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload_time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload_time = "2024-08-06T20:33:04.33Z" }, +] + +[[package]] +name = "pyyaml-env-tag" +version = "1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737, upload_time = "2025-05-13T15:24:01.64Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722, upload_time = "2025-05-13T15:23:59.629Z" }, +] + +[[package]] +name = "pyzmq" +version = "27.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/06/50a4e9648b3e8b992bef8eb632e457307553a89d294103213cfd47b3da69/pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf", size = 280478, upload_time = "2025-06-13T14:09:07.087Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/a7/9ad68f55b8834ede477842214feba6a4c786d936c022a67625497aacf61d/pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52", size = 1305438, upload_time = "2025-06-13T14:07:31.676Z" }, + { url = "https://files.pythonhosted.org/packages/ba/ee/26aa0f98665a22bc90ebe12dced1de5f3eaca05363b717f6fb229b3421b3/pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3", size = 895095, upload_time = "2025-06-13T14:07:33.104Z" }, + { url = "https://files.pythonhosted.org/packages/cf/85/c57e7ab216ecd8aa4cc7e3b83b06cc4e9cf45c87b0afc095f10cd5ce87c1/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152", size = 651826, upload_time = "2025-06-13T14:07:34.831Z" }, + { url = "https://files.pythonhosted.org/packages/69/9a/9ea7e230feda9400fb0ae0d61d7d6ddda635e718d941c44eeab22a179d34/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22", size = 839750, upload_time = "2025-06-13T14:07:36.553Z" }, + { url = "https://files.pythonhosted.org/packages/08/66/4cebfbe71f3dfbd417011daca267539f62ed0fbc68105357b68bbb1a25b7/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371", size = 1641357, upload_time = "2025-06-13T14:07:38.21Z" }, + { url = "https://files.pythonhosted.org/packages/ac/f6/b0f62578c08d2471c791287149cb8c2aaea414ae98c6e995c7dbe008adfb/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d", size = 2020281, upload_time = "2025-06-13T14:07:39.599Z" }, + { url = "https://files.pythonhosted.org/packages/37/b9/4f670b15c7498495da9159edc374ec09c88a86d9cd5a47d892f69df23450/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be", size = 1877110, upload_time = "2025-06-13T14:07:41.027Z" }, + { url = "https://files.pythonhosted.org/packages/66/31/9dee25c226295b740609f0d46db2fe972b23b6f5cf786360980524a3ba92/pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4", size = 559297, upload_time = "2025-06-13T14:07:42.533Z" }, + { url = "https://files.pythonhosted.org/packages/9b/12/52da5509800f7ff2d287b2f2b4e636e7ea0f001181cba6964ff6c1537778/pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371", size = 619203, upload_time = "2025-06-13T14:07:43.843Z" }, + { url = "https://files.pythonhosted.org/packages/93/6d/7f2e53b19d1edb1eb4f09ec7c3a1f945ca0aac272099eab757d15699202b/pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e", size = 551927, upload_time = "2025-06-13T14:07:45.51Z" }, + { url = "https://files.pythonhosted.org/packages/19/62/876b27c4ff777db4ceba1c69ea90d3c825bb4f8d5e7cd987ce5802e33c55/pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688", size = 1340826, upload_time = "2025-06-13T14:07:46.881Z" }, + { url = "https://files.pythonhosted.org/packages/43/69/58ef8f4f59d3bcd505260c73bee87b008850f45edca40ddaba54273c35f4/pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38", size = 897283, upload_time = "2025-06-13T14:07:49.562Z" }, + { url = "https://files.pythonhosted.org/packages/43/15/93a0d0396700a60475ad3c5d42c5f1c308d3570bc94626b86c71ef9953e0/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a", size = 660567, upload_time = "2025-06-13T14:07:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/0e/b3/fe055513e498ca32f64509abae19b9c9eb4d7c829e02bd8997dd51b029eb/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9", size = 847681, upload_time = "2025-06-13T14:07:52.77Z" }, + { url = "https://files.pythonhosted.org/packages/b6/4f/ff15300b00b5b602191f3df06bbc8dd4164e805fdd65bb77ffbb9c5facdc/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d", size = 1650148, upload_time = "2025-06-13T14:07:54.178Z" }, + { url = "https://files.pythonhosted.org/packages/c4/6f/84bdfff2a224a6f26a24249a342e5906993c50b0761e311e81b39aef52a7/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44", size = 2023768, upload_time = "2025-06-13T14:07:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/64/39/dc2db178c26a42228c5ac94a9cc595030458aa64c8d796a7727947afbf55/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef", size = 1885199, upload_time = "2025-06-13T14:07:57.166Z" }, + { url = "https://files.pythonhosted.org/packages/c7/21/dae7b06a1f8cdee5d8e7a63d99c5d129c401acc40410bef2cbf42025e26f/pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad", size = 575439, upload_time = "2025-06-13T14:07:58.959Z" }, + { url = "https://files.pythonhosted.org/packages/eb/bc/1709dc55f0970cf4cb8259e435e6773f9946f41a045c2cb90e870b7072da/pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f", size = 639933, upload_time = "2025-06-13T14:08:00.777Z" }, +] + +[[package]] +name = "ratelimit" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/38/ff60c8fc9e002d50d48822cc5095deb8ebbc5f91a6b8fdd9731c87a147c9/ratelimit-2.2.1.tar.gz", hash = "sha256:af8a9b64b821529aca09ebaf6d8d279100d766f19e90b5059ac6a718ca6dee42", size = 5251, upload_time = "2018-12-17T18:55:49.675Z" } + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload_time = "2025-01-25T08:48:16.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload_time = "2025-01-25T08:48:14.241Z" }, +] + +[[package]] +name = "requests" +version = "2.32.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "charset-normalizer" }, + { name = "idna" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload_time = "2025-06-09T16:43:07.34Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload_time = "2025-06-09T16:43:05.728Z" }, +] + +[[package]] +name = "requests-file" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/97/bf44e6c6bd8ddbb99943baf7ba8b1a8485bcd2fe0e55e5708d7fee4ff1ae/requests_file-2.1.0.tar.gz", hash = "sha256:0f549a3f3b0699415ac04d167e9cb39bccfb730cb832b4d20be3d9867356e658", size = 6891, upload_time = "2024-05-21T16:28:00.24Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/25/dd878a121fcfdf38f52850f11c512e13ec87c2ea72385933818e5b6c15ce/requests_file-2.1.0-py2.py3-none-any.whl", hash = "sha256:cf270de5a4c5874e84599fc5778303d496c10ae5e870bfa378818f35d21bda5c", size = 4244, upload_time = "2024-05-21T16:27:57.733Z" }, +] + +[[package]] +name = "rfc3986" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026, upload_time = "2022-01-10T00:52:30.832Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326, upload_time = "2022-01-10T00:52:29.594Z" }, +] + +[[package]] +name = "rich" +version = "14.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078, upload_time = "2025-03-30T14:15:14.23Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229, upload_time = "2025-03-30T14:15:12.283Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.26.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/aa/4456d84bbb54adc6a916fb10c9b374f78ac840337644e4a5eda229c81275/rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0", size = 27385, upload_time = "2025-07-01T15:57:13.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/86/90eb87c6f87085868bd077c7a9938006eb1ce19ed4d06944a90d3560fce2/rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d", size = 363933, upload_time = "2025-07-01T15:54:15.734Z" }, + { url = "https://files.pythonhosted.org/packages/63/78/4469f24d34636242c924626082b9586f064ada0b5dbb1e9d096ee7a8e0c6/rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136", size = 350447, upload_time = "2025-07-01T15:54:16.922Z" }, + { url = "https://files.pythonhosted.org/packages/ad/91/c448ed45efdfdade82348d5e7995e15612754826ea640afc20915119734f/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582", size = 384711, upload_time = "2025-07-01T15:54:18.101Z" }, + { url = "https://files.pythonhosted.org/packages/ec/43/e5c86fef4be7f49828bdd4ecc8931f0287b1152c0bb0163049b3218740e7/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e", size = 400865, upload_time = "2025-07-01T15:54:19.295Z" }, + { url = "https://files.pythonhosted.org/packages/55/34/e00f726a4d44f22d5c5fe2e5ddd3ac3d7fd3f74a175607781fbdd06fe375/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15", size = 517763, upload_time = "2025-07-01T15:54:20.858Z" }, + { url = "https://files.pythonhosted.org/packages/52/1c/52dc20c31b147af724b16104500fba13e60123ea0334beba7b40e33354b4/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8", size = 406651, upload_time = "2025-07-01T15:54:22.508Z" }, + { url = "https://files.pythonhosted.org/packages/2e/77/87d7bfabfc4e821caa35481a2ff6ae0b73e6a391bb6b343db2c91c2b9844/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a", size = 386079, upload_time = "2025-07-01T15:54:23.987Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d4/7f2200c2d3ee145b65b3cddc4310d51f7da6a26634f3ac87125fd789152a/rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323", size = 421379, upload_time = "2025-07-01T15:54:25.073Z" }, + { url = "https://files.pythonhosted.org/packages/ae/13/9fdd428b9c820869924ab62236b8688b122baa22d23efdd1c566938a39ba/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158", size = 562033, upload_time = "2025-07-01T15:54:26.225Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e1/b69686c3bcbe775abac3a4c1c30a164a2076d28df7926041f6c0eb5e8d28/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3", size = 591639, upload_time = "2025-07-01T15:54:27.424Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c9/1e3d8c8863c84a90197ac577bbc3d796a92502124c27092413426f670990/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2", size = 557105, upload_time = "2025-07-01T15:54:29.93Z" }, + { url = "https://files.pythonhosted.org/packages/9f/c5/90c569649057622959f6dcc40f7b516539608a414dfd54b8d77e3b201ac0/rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44", size = 223272, upload_time = "2025-07-01T15:54:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/16/19f5d9f2a556cfed454eebe4d354c38d51c20f3db69e7b4ce6cff904905d/rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c", size = 234995, upload_time = "2025-07-01T15:54:32.195Z" }, + { url = "https://files.pythonhosted.org/packages/83/f0/7935e40b529c0e752dfaa7880224771b51175fce08b41ab4a92eb2fbdc7f/rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8", size = 223198, upload_time = "2025-07-01T15:54:33.271Z" }, + { url = "https://files.pythonhosted.org/packages/6a/67/bb62d0109493b12b1c6ab00de7a5566aa84c0e44217c2d94bee1bd370da9/rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d", size = 363917, upload_time = "2025-07-01T15:54:34.755Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f3/34e6ae1925a5706c0f002a8d2d7f172373b855768149796af87bd65dcdb9/rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1", size = 350073, upload_time = "2025-07-01T15:54:36.292Z" }, + { url = "https://files.pythonhosted.org/packages/75/83/1953a9d4f4e4de7fd0533733e041c28135f3c21485faaef56a8aadbd96b5/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e", size = 384214, upload_time = "2025-07-01T15:54:37.469Z" }, + { url = "https://files.pythonhosted.org/packages/48/0e/983ed1b792b3322ea1d065e67f4b230f3b96025f5ce3878cc40af09b7533/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1", size = 400113, upload_time = "2025-07-01T15:54:38.954Z" }, + { url = "https://files.pythonhosted.org/packages/69/7f/36c0925fff6f660a80be259c5b4f5e53a16851f946eb080351d057698528/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9", size = 515189, upload_time = "2025-07-01T15:54:40.57Z" }, + { url = "https://files.pythonhosted.org/packages/13/45/cbf07fc03ba7a9b54662c9badb58294ecfb24f828b9732970bd1a431ed5c/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7", size = 406998, upload_time = "2025-07-01T15:54:43.025Z" }, + { url = "https://files.pythonhosted.org/packages/6c/b0/8fa5e36e58657997873fd6a1cf621285ca822ca75b4b3434ead047daa307/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04", size = 385903, upload_time = "2025-07-01T15:54:44.752Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f7/b25437772f9f57d7a9fbd73ed86d0dcd76b4c7c6998348c070d90f23e315/rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1", size = 419785, upload_time = "2025-07-01T15:54:46.043Z" }, + { url = "https://files.pythonhosted.org/packages/a7/6b/63ffa55743dfcb4baf2e9e77a0b11f7f97ed96a54558fcb5717a4b2cd732/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9", size = 561329, upload_time = "2025-07-01T15:54:47.64Z" }, + { url = "https://files.pythonhosted.org/packages/2f/07/1f4f5e2886c480a2346b1e6759c00278b8a69e697ae952d82ae2e6ee5db0/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9", size = 590875, upload_time = "2025-07-01T15:54:48.9Z" }, + { url = "https://files.pythonhosted.org/packages/cc/bc/e6639f1b91c3a55f8c41b47d73e6307051b6e246254a827ede730624c0f8/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba", size = 556636, upload_time = "2025-07-01T15:54:50.619Z" }, + { url = "https://files.pythonhosted.org/packages/05/4c/b3917c45566f9f9a209d38d9b54a1833f2bb1032a3e04c66f75726f28876/rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b", size = 222663, upload_time = "2025-07-01T15:54:52.023Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0b/0851bdd6025775aaa2365bb8de0697ee2558184c800bfef8d7aef5ccde58/rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5", size = 234428, upload_time = "2025-07-01T15:54:53.692Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e8/a47c64ed53149c75fb581e14a237b7b7cd18217e969c30d474d335105622/rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256", size = 222571, upload_time = "2025-07-01T15:54:54.822Z" }, + { url = "https://files.pythonhosted.org/packages/89/bf/3d970ba2e2bcd17d2912cb42874107390f72873e38e79267224110de5e61/rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618", size = 360475, upload_time = "2025-07-01T15:54:56.228Z" }, + { url = "https://files.pythonhosted.org/packages/82/9f/283e7e2979fc4ec2d8ecee506d5a3675fce5ed9b4b7cb387ea5d37c2f18d/rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35", size = 346692, upload_time = "2025-07-01T15:54:58.561Z" }, + { url = "https://files.pythonhosted.org/packages/e3/03/7e50423c04d78daf391da3cc4330bdb97042fc192a58b186f2d5deb7befd/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f", size = 379415, upload_time = "2025-07-01T15:54:59.751Z" }, + { url = "https://files.pythonhosted.org/packages/57/00/d11ee60d4d3b16808432417951c63df803afb0e0fc672b5e8d07e9edaaae/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83", size = 391783, upload_time = "2025-07-01T15:55:00.898Z" }, + { url = "https://files.pythonhosted.org/packages/08/b3/1069c394d9c0d6d23c5b522e1f6546b65793a22950f6e0210adcc6f97c3e/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1", size = 512844, upload_time = "2025-07-01T15:55:02.201Z" }, + { url = "https://files.pythonhosted.org/packages/08/3b/c4fbf0926800ed70b2c245ceca99c49f066456755f5d6eb8863c2c51e6d0/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8", size = 402105, upload_time = "2025-07-01T15:55:03.698Z" }, + { url = "https://files.pythonhosted.org/packages/1c/b0/db69b52ca07413e568dae9dc674627a22297abb144c4d6022c6d78f1e5cc/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f", size = 383440, upload_time = "2025-07-01T15:55:05.398Z" }, + { url = "https://files.pythonhosted.org/packages/4c/e1/c65255ad5b63903e56b3bb3ff9dcc3f4f5c3badde5d08c741ee03903e951/rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed", size = 412759, upload_time = "2025-07-01T15:55:08.316Z" }, + { url = "https://files.pythonhosted.org/packages/e4/22/bb731077872377a93c6e93b8a9487d0406c70208985831034ccdeed39c8e/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632", size = 556032, upload_time = "2025-07-01T15:55:09.52Z" }, + { url = "https://files.pythonhosted.org/packages/e0/8b/393322ce7bac5c4530fb96fc79cc9ea2f83e968ff5f6e873f905c493e1c4/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c", size = 585416, upload_time = "2025-07-01T15:55:11.216Z" }, + { url = "https://files.pythonhosted.org/packages/49/ae/769dc372211835bf759319a7aae70525c6eb523e3371842c65b7ef41c9c6/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0", size = 554049, upload_time = "2025-07-01T15:55:13.004Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f9/4c43f9cc203d6ba44ce3146246cdc38619d92c7bd7bad4946a3491bd5b70/rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9", size = 218428, upload_time = "2025-07-01T15:55:14.486Z" }, + { url = "https://files.pythonhosted.org/packages/7e/8b/9286b7e822036a4a977f2f1e851c7345c20528dbd56b687bb67ed68a8ede/rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9", size = 231524, upload_time = "2025-07-01T15:55:15.745Z" }, + { url = "https://files.pythonhosted.org/packages/55/07/029b7c45db910c74e182de626dfdae0ad489a949d84a468465cd0ca36355/rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a", size = 364292, upload_time = "2025-07-01T15:55:17.001Z" }, + { url = "https://files.pythonhosted.org/packages/13/d1/9b3d3f986216b4d1f584878dca15ce4797aaf5d372d738974ba737bf68d6/rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf", size = 350334, upload_time = "2025-07-01T15:55:18.922Z" }, + { url = "https://files.pythonhosted.org/packages/18/98/16d5e7bc9ec715fa9668731d0cf97f6b032724e61696e2db3d47aeb89214/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12", size = 384875, upload_time = "2025-07-01T15:55:20.399Z" }, + { url = "https://files.pythonhosted.org/packages/f9/13/aa5e2b1ec5ab0e86a5c464d53514c0467bec6ba2507027d35fc81818358e/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20", size = 399993, upload_time = "2025-07-01T15:55:21.729Z" }, + { url = "https://files.pythonhosted.org/packages/17/03/8021810b0e97923abdbab6474c8b77c69bcb4b2c58330777df9ff69dc559/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331", size = 516683, upload_time = "2025-07-01T15:55:22.918Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b1/da8e61c87c2f3d836954239fdbbfb477bb7b54d74974d8f6fcb34342d166/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f", size = 408825, upload_time = "2025-07-01T15:55:24.207Z" }, + { url = "https://files.pythonhosted.org/packages/38/bc/1fc173edaaa0e52c94b02a655db20697cb5fa954ad5a8e15a2c784c5cbdd/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246", size = 387292, upload_time = "2025-07-01T15:55:25.554Z" }, + { url = "https://files.pythonhosted.org/packages/7c/eb/3a9bb4bd90867d21916f253caf4f0d0be7098671b6715ad1cead9fe7bab9/rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387", size = 420435, upload_time = "2025-07-01T15:55:27.798Z" }, + { url = "https://files.pythonhosted.org/packages/cd/16/e066dcdb56f5632713445271a3f8d3d0b426d51ae9c0cca387799df58b02/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af", size = 562410, upload_time = "2025-07-01T15:55:29.057Z" }, + { url = "https://files.pythonhosted.org/packages/60/22/ddbdec7eb82a0dc2e455be44c97c71c232983e21349836ce9f272e8a3c29/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33", size = 590724, upload_time = "2025-07-01T15:55:30.719Z" }, + { url = "https://files.pythonhosted.org/packages/2c/b4/95744085e65b7187d83f2fcb0bef70716a1ea0a9e5d8f7f39a86e5d83424/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953", size = 558285, upload_time = "2025-07-01T15:55:31.981Z" }, + { url = "https://files.pythonhosted.org/packages/37/37/6309a75e464d1da2559446f9c811aa4d16343cebe3dbb73701e63f760caa/rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9", size = 223459, upload_time = "2025-07-01T15:55:33.312Z" }, + { url = "https://files.pythonhosted.org/packages/d9/6f/8e9c11214c46098b1d1391b7e02b70bb689ab963db3b19540cba17315291/rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37", size = 236083, upload_time = "2025-07-01T15:55:34.933Z" }, + { url = "https://files.pythonhosted.org/packages/47/af/9c4638994dd623d51c39892edd9d08e8be8220a4b7e874fa02c2d6e91955/rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867", size = 223291, upload_time = "2025-07-01T15:55:36.202Z" }, + { url = "https://files.pythonhosted.org/packages/4d/db/669a241144460474aab03e254326b32c42def83eb23458a10d163cb9b5ce/rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da", size = 361445, upload_time = "2025-07-01T15:55:37.483Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2d/133f61cc5807c6c2fd086a46df0eb8f63a23f5df8306ff9f6d0fd168fecc/rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7", size = 347206, upload_time = "2025-07-01T15:55:38.828Z" }, + { url = "https://files.pythonhosted.org/packages/05/bf/0e8fb4c05f70273469eecf82f6ccf37248558526a45321644826555db31b/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad", size = 380330, upload_time = "2025-07-01T15:55:40.175Z" }, + { url = "https://files.pythonhosted.org/packages/d4/a8/060d24185d8b24d3923322f8d0ede16df4ade226a74e747b8c7c978e3dd3/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d", size = 392254, upload_time = "2025-07-01T15:55:42.015Z" }, + { url = "https://files.pythonhosted.org/packages/b9/7b/7c2e8a9ee3e6bc0bae26bf29f5219955ca2fbb761dca996a83f5d2f773fe/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca", size = 516094, upload_time = "2025-07-01T15:55:43.603Z" }, + { url = "https://files.pythonhosted.org/packages/75/d6/f61cafbed8ba1499b9af9f1777a2a199cd888f74a96133d8833ce5eaa9c5/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19", size = 402889, upload_time = "2025-07-01T15:55:45.275Z" }, + { url = "https://files.pythonhosted.org/packages/92/19/c8ac0a8a8df2dd30cdec27f69298a5c13e9029500d6d76718130f5e5be10/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8", size = 384301, upload_time = "2025-07-01T15:55:47.098Z" }, + { url = "https://files.pythonhosted.org/packages/41/e1/6b1859898bc292a9ce5776016c7312b672da00e25cec74d7beced1027286/rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b", size = 412891, upload_time = "2025-07-01T15:55:48.412Z" }, + { url = "https://files.pythonhosted.org/packages/ef/b9/ceb39af29913c07966a61367b3c08b4f71fad841e32c6b59a129d5974698/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a", size = 557044, upload_time = "2025-07-01T15:55:49.816Z" }, + { url = "https://files.pythonhosted.org/packages/2f/27/35637b98380731a521f8ec4f3fd94e477964f04f6b2f8f7af8a2d889a4af/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170", size = 585774, upload_time = "2025-07-01T15:55:51.192Z" }, + { url = "https://files.pythonhosted.org/packages/52/d9/3f0f105420fecd18551b678c9a6ce60bd23986098b252a56d35781b3e7e9/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e", size = 554886, upload_time = "2025-07-01T15:55:52.541Z" }, + { url = "https://files.pythonhosted.org/packages/6b/c5/347c056a90dc8dd9bc240a08c527315008e1b5042e7a4cf4ac027be9d38a/rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f", size = 219027, upload_time = "2025-07-01T15:55:53.874Z" }, + { url = "https://files.pythonhosted.org/packages/75/04/5302cea1aa26d886d34cadbf2dc77d90d7737e576c0065f357b96dc7a1a6/rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7", size = 232821, upload_time = "2025-07-01T15:55:55.167Z" }, +] + +[[package]] +name = "ruamel-yaml" +version = "0.18.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ruamel-yaml-clib", marker = "python_full_version < '3.14' and platform_python_implementation == 'CPython'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/39/87/6da0df742a4684263261c253f00edd5829e6aca970fff69e75028cccc547/ruamel.yaml-0.18.14.tar.gz", hash = "sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7", size = 145511, upload_time = "2025-06-09T08:51:09.828Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/6d/6fe4805235e193aad4aaf979160dd1f3c487c57d48b810c816e6e842171b/ruamel.yaml-0.18.14-py3-none-any.whl", hash = "sha256:710ff198bb53da66718c7db27eec4fbcc9aa6ca7204e4c1df2f282b6fe5eb6b2", size = 118570, upload_time = "2025-06-09T08:51:06.348Z" }, +] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315, upload_time = "2024-10-20T10:10:56.22Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433, upload_time = "2024-10-20T10:12:55.657Z" }, + { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362, upload_time = "2024-10-20T10:12:57.155Z" }, + { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118, upload_time = "2024-10-20T10:12:58.501Z" }, + { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497, upload_time = "2024-10-20T10:13:00.211Z" }, + { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042, upload_time = "2024-10-21T11:26:46.038Z" }, + { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831, upload_time = "2024-10-21T11:26:47.487Z" }, + { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692, upload_time = "2024-12-11T19:58:17.252Z" }, + { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777, upload_time = "2024-10-20T10:13:01.395Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523, upload_time = "2024-10-20T10:13:02.768Z" }, + { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011, upload_time = "2024-10-20T10:13:04.377Z" }, + { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488, upload_time = "2024-10-20T10:13:05.906Z" }, + { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066, upload_time = "2024-10-20T10:13:07.26Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785, upload_time = "2024-10-20T10:13:08.504Z" }, + { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017, upload_time = "2024-10-21T11:26:48.866Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270, upload_time = "2024-10-21T11:26:50.213Z" }, + { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059, upload_time = "2024-12-11T19:58:18.846Z" }, + { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583, upload_time = "2024-10-20T10:13:09.658Z" }, + { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190, upload_time = "2024-10-20T10:13:10.66Z" }, +] + +[[package]] +name = "ruff" +version = "0.12.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/3d/d9a195676f25d00dbfcf3cf95fdd4c685c497fcfa7e862a44ac5e4e96480/ruff-0.12.2.tar.gz", hash = "sha256:d7b4f55cd6f325cb7621244f19c873c565a08aff5a4ba9c69aa7355f3f7afd3e", size = 4432239, upload_time = "2025-07-03T16:40:19.566Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/74/b6/2098d0126d2d3318fd5bec3ad40d06c25d377d95749f7a0c5af17129b3b1/ruff-0.12.2-py3-none-linux_armv6l.whl", hash = "sha256:093ea2b221df1d2b8e7ad92fc6ffdca40a2cb10d8564477a987b44fd4008a7be", size = 10369761, upload_time = "2025-07-03T16:39:38.847Z" }, + { url = "https://files.pythonhosted.org/packages/b1/4b/5da0142033dbe155dc598cfb99262d8ee2449d76920ea92c4eeb9547c208/ruff-0.12.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:09e4cf27cc10f96b1708100fa851e0daf21767e9709e1649175355280e0d950e", size = 11155659, upload_time = "2025-07-03T16:39:42.294Z" }, + { url = "https://files.pythonhosted.org/packages/3e/21/967b82550a503d7c5c5c127d11c935344b35e8c521f52915fc858fb3e473/ruff-0.12.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:8ae64755b22f4ff85e9c52d1f82644abd0b6b6b6deedceb74bd71f35c24044cc", size = 10537769, upload_time = "2025-07-03T16:39:44.75Z" }, + { url = "https://files.pythonhosted.org/packages/33/91/00cff7102e2ec71a4890fb7ba1803f2cdb122d82787c7d7cf8041fe8cbc1/ruff-0.12.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eb3a6b2db4d6e2c77e682f0b988d4d61aff06860158fdb413118ca133d57922", size = 10717602, upload_time = "2025-07-03T16:39:47.652Z" }, + { url = "https://files.pythonhosted.org/packages/9b/eb/928814daec4e1ba9115858adcda44a637fb9010618721937491e4e2283b8/ruff-0.12.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:73448de992d05517170fc37169cbca857dfeaeaa8c2b9be494d7bcb0d36c8f4b", size = 10198772, upload_time = "2025-07-03T16:39:49.641Z" }, + { url = "https://files.pythonhosted.org/packages/50/fa/f15089bc20c40f4f72334f9145dde55ab2b680e51afb3b55422effbf2fb6/ruff-0.12.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b8b94317cbc2ae4a2771af641739f933934b03555e51515e6e021c64441532d", size = 11845173, upload_time = "2025-07-03T16:39:52.069Z" }, + { url = "https://files.pythonhosted.org/packages/43/9f/1f6f98f39f2b9302acc161a4a2187b1e3a97634fe918a8e731e591841cf4/ruff-0.12.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:45fc42c3bf1d30d2008023a0a9a0cfb06bf9835b147f11fe0679f21ae86d34b1", size = 12553002, upload_time = "2025-07-03T16:39:54.551Z" }, + { url = "https://files.pythonhosted.org/packages/d8/70/08991ac46e38ddd231c8f4fd05ef189b1b94be8883e8c0c146a025c20a19/ruff-0.12.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce48f675c394c37e958bf229fb5c1e843e20945a6d962cf3ea20b7a107dcd9f4", size = 12171330, upload_time = "2025-07-03T16:39:57.55Z" }, + { url = "https://files.pythonhosted.org/packages/88/a9/5a55266fec474acfd0a1c73285f19dd22461d95a538f29bba02edd07a5d9/ruff-0.12.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793d8859445ea47591272021a81391350205a4af65a9392401f418a95dfb75c9", size = 11774717, upload_time = "2025-07-03T16:39:59.78Z" }, + { url = "https://files.pythonhosted.org/packages/87/e5/0c270e458fc73c46c0d0f7cf970bb14786e5fdb88c87b5e423a4bd65232b/ruff-0.12.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6932323db80484dda89153da3d8e58164d01d6da86857c79f1961934354992da", size = 11646659, upload_time = "2025-07-03T16:40:01.934Z" }, + { url = "https://files.pythonhosted.org/packages/b7/b6/45ab96070c9752af37f0be364d849ed70e9ccede07675b0ec4e3ef76b63b/ruff-0.12.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:6aa7e623a3a11538108f61e859ebf016c4f14a7e6e4eba1980190cacb57714ce", size = 10604012, upload_time = "2025-07-03T16:40:04.363Z" }, + { url = "https://files.pythonhosted.org/packages/86/91/26a6e6a424eb147cc7627eebae095cfa0b4b337a7c1c413c447c9ebb72fd/ruff-0.12.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:2a4a20aeed74671b2def096bdf2eac610c7d8ffcbf4fb0e627c06947a1d7078d", size = 10176799, upload_time = "2025-07-03T16:40:06.514Z" }, + { url = "https://files.pythonhosted.org/packages/f5/0c/9f344583465a61c8918a7cda604226e77b2c548daf8ef7c2bfccf2b37200/ruff-0.12.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:71a4c550195612f486c9d1f2b045a600aeba851b298c667807ae933478fcef04", size = 11241507, upload_time = "2025-07-03T16:40:08.708Z" }, + { url = "https://files.pythonhosted.org/packages/1c/b7/99c34ded8fb5f86c0280278fa89a0066c3760edc326e935ce0b1550d315d/ruff-0.12.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:4987b8f4ceadf597c927beee65a5eaf994c6e2b631df963f86d8ad1bdea99342", size = 11717609, upload_time = "2025-07-03T16:40:10.836Z" }, + { url = "https://files.pythonhosted.org/packages/51/de/8589fa724590faa057e5a6d171e7f2f6cffe3287406ef40e49c682c07d89/ruff-0.12.2-py3-none-win32.whl", hash = "sha256:369ffb69b70cd55b6c3fc453b9492d98aed98062db9fec828cdfd069555f5f1a", size = 10523823, upload_time = "2025-07-03T16:40:13.203Z" }, + { url = "https://files.pythonhosted.org/packages/94/47/8abf129102ae4c90cba0c2199a1a9b0fa896f6f806238d6f8c14448cc748/ruff-0.12.2-py3-none-win_amd64.whl", hash = "sha256:dca8a3b6d6dc9810ed8f328d406516bf4d660c00caeaef36eb831cf4871b0639", size = 11629831, upload_time = "2025-07-03T16:40:15.478Z" }, + { url = "https://files.pythonhosted.org/packages/e2/1f/72d2946e3cc7456bb837e88000eb3437e55f80db339c840c04015a11115d/ruff-0.12.2-py3-none-win_arm64.whl", hash = "sha256:48d6c6bfb4761df68bc05ae630e24f506755e702d4fb08f08460be778c7ccb12", size = 10735334, upload_time = "2025-07-03T16:40:17.677Z" }, +] + +[[package]] +name = "savepagenow" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/84/a4/b61c6e7a13b848fd985c9ed9acd525ccb1c2675e6cfa0d62292ae8015792/savepagenow-1.3.0.tar.gz", hash = "sha256:d0bc6bbe4606c700315015c3defcfab3c329208002b2b8cdc59f9b52996c6d3f", size = 42927, upload_time = "2023-07-01T13:31:49.607Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/8f/aea39979f8a7091ad2242a038a0e4c2b463593923ce598a914255dfba9ef/savepagenow-1.3.0-py2.py3-none-any.whl", hash = "sha256:4b0a4fff47254c160a37a20868ab53bb90da3d3f9f96086a9255b2375e39fcbf", size = 5649, upload_time = "2023-07-01T13:31:48.005Z" }, +] + +[[package]] +name = "scipy" +version = "1.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/81/18/b06a83f0c5ee8cddbde5e3f3d0bb9b702abfa5136ef6d4620ff67df7eee5/scipy-1.16.0.tar.gz", hash = "sha256:b5ef54021e832869c8cfb03bc3bf20366cbcd426e02a58e8a58d7584dfbb8f62", size = 30581216, upload_time = "2025-06-22T16:27:55.782Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/c0/c943bc8d2bbd28123ad0f4f1eef62525fa1723e84d136b32965dcb6bad3a/scipy-1.16.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:7eb6bd33cef4afb9fa5f1fb25df8feeb1e52d94f21a44f1d17805b41b1da3180", size = 36459071, upload_time = "2025-06-22T16:19:06.605Z" }, + { url = "https://files.pythonhosted.org/packages/99/0d/270e2e9f1a4db6ffbf84c9a0b648499842046e4e0d9b2275d150711b3aba/scipy-1.16.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:1dbc8fdba23e4d80394ddfab7a56808e3e6489176d559c6c71935b11a2d59db1", size = 28490500, upload_time = "2025-06-22T16:19:11.775Z" }, + { url = "https://files.pythonhosted.org/packages/1c/22/01d7ddb07cff937d4326198ec8d10831367a708c3da72dfd9b7ceaf13028/scipy-1.16.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:7dcf42c380e1e3737b343dec21095c9a9ad3f9cbe06f9c05830b44b1786c9e90", size = 20762345, upload_time = "2025-06-22T16:19:15.813Z" }, + { url = "https://files.pythonhosted.org/packages/34/7f/87fd69856569ccdd2a5873fe5d7b5bbf2ad9289d7311d6a3605ebde3a94b/scipy-1.16.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:26ec28675f4a9d41587266084c626b02899db373717d9312fa96ab17ca1ae94d", size = 23418563, upload_time = "2025-06-22T16:19:20.746Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f1/e4f4324fef7f54160ab749efbab6a4bf43678a9eb2e9817ed71a0a2fd8de/scipy-1.16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:952358b7e58bd3197cfbd2f2f2ba829f258404bdf5db59514b515a8fe7a36c52", size = 33203951, upload_time = "2025-06-22T16:19:25.813Z" }, + { url = "https://files.pythonhosted.org/packages/6d/f0/b6ac354a956384fd8abee2debbb624648125b298f2c4a7b4f0d6248048a5/scipy-1.16.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:03931b4e870c6fef5b5c0970d52c9f6ddd8c8d3e934a98f09308377eba6f3824", size = 35070225, upload_time = "2025-06-22T16:19:31.416Z" }, + { url = "https://files.pythonhosted.org/packages/e5/73/5cbe4a3fd4bc3e2d67ffad02c88b83edc88f381b73ab982f48f3df1a7790/scipy-1.16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:512c4f4f85912767c351a0306824ccca6fd91307a9f4318efe8fdbd9d30562ef", size = 35389070, upload_time = "2025-06-22T16:19:37.387Z" }, + { url = "https://files.pythonhosted.org/packages/86/e8/a60da80ab9ed68b31ea5a9c6dfd3c2f199347429f229bf7f939a90d96383/scipy-1.16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e69f798847e9add03d512eaf5081a9a5c9a98757d12e52e6186ed9681247a1ac", size = 37825287, upload_time = "2025-06-22T16:19:43.375Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b5/29fece1a74c6a94247f8a6fb93f5b28b533338e9c34fdcc9cfe7a939a767/scipy-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:adf9b1999323ba335adc5d1dc7add4781cb5a4b0ef1e98b79768c05c796c4e49", size = 38431929, upload_time = "2025-06-22T16:19:49.385Z" }, + { url = "https://files.pythonhosted.org/packages/46/95/0746417bc24be0c2a7b7563946d61f670a3b491b76adede420e9d173841f/scipy-1.16.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:e9f414cbe9ca289a73e0cc92e33a6a791469b6619c240aa32ee18abdce8ab451", size = 36418162, upload_time = "2025-06-22T16:19:56.3Z" }, + { url = "https://files.pythonhosted.org/packages/19/5a/914355a74481b8e4bbccf67259bbde171348a3f160b67b4945fbc5f5c1e5/scipy-1.16.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:bbba55fb97ba3cdef9b1ee973f06b09d518c0c7c66a009c729c7d1592be1935e", size = 28465985, upload_time = "2025-06-22T16:20:01.238Z" }, + { url = "https://files.pythonhosted.org/packages/58/46/63477fc1246063855969cbefdcee8c648ba4b17f67370bd542ba56368d0b/scipy-1.16.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:58e0d4354eacb6004e7aa1cd350e5514bd0270acaa8d5b36c0627bb3bb486974", size = 20737961, upload_time = "2025-06-22T16:20:05.913Z" }, + { url = "https://files.pythonhosted.org/packages/93/86/0fbb5588b73555e40f9d3d6dde24ee6fac7d8e301a27f6f0cab9d8f66ff2/scipy-1.16.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:75b2094ec975c80efc273567436e16bb794660509c12c6a31eb5c195cbf4b6dc", size = 23377941, upload_time = "2025-06-22T16:20:10.668Z" }, + { url = "https://files.pythonhosted.org/packages/ca/80/a561f2bf4c2da89fa631b3cbf31d120e21ea95db71fd9ec00cb0247c7a93/scipy-1.16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6b65d232157a380fdd11a560e7e21cde34fdb69d65c09cb87f6cc024ee376351", size = 33196703, upload_time = "2025-06-22T16:20:16.097Z" }, + { url = "https://files.pythonhosted.org/packages/11/6b/3443abcd0707d52e48eb315e33cc669a95e29fc102229919646f5a501171/scipy-1.16.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d8747f7736accd39289943f7fe53a8333be7f15a82eea08e4afe47d79568c32", size = 35083410, upload_time = "2025-06-22T16:20:21.734Z" }, + { url = "https://files.pythonhosted.org/packages/20/ab/eb0fc00e1e48961f1bd69b7ad7e7266896fe5bad4ead91b5fc6b3561bba4/scipy-1.16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eb9f147a1b8529bb7fec2a85cf4cf42bdfadf9e83535c309a11fdae598c88e8b", size = 35387829, upload_time = "2025-06-22T16:20:27.548Z" }, + { url = "https://files.pythonhosted.org/packages/57/9e/d6fc64e41fad5d481c029ee5a49eefc17f0b8071d636a02ceee44d4a0de2/scipy-1.16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d2b83c37edbfa837a8923d19c749c1935ad3d41cf196006a24ed44dba2ec4358", size = 37841356, upload_time = "2025-06-22T16:20:35.112Z" }, + { url = "https://files.pythonhosted.org/packages/7c/a7/4c94bbe91f12126b8bf6709b2471900577b7373a4fd1f431f28ba6f81115/scipy-1.16.0-cp313-cp313-win_amd64.whl", hash = "sha256:79a3c13d43c95aa80b87328a46031cf52508cf5f4df2767602c984ed1d3c6bbe", size = 38403710, upload_time = "2025-06-22T16:21:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/47/20/965da8497f6226e8fa90ad3447b82ed0e28d942532e92dd8b91b43f100d4/scipy-1.16.0-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:f91b87e1689f0370690e8470916fe1b2308e5b2061317ff76977c8f836452a47", size = 36813833, upload_time = "2025-06-22T16:20:43.925Z" }, + { url = "https://files.pythonhosted.org/packages/28/f4/197580c3dac2d234e948806e164601c2df6f0078ed9f5ad4a62685b7c331/scipy-1.16.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:88a6ca658fb94640079e7a50b2ad3b67e33ef0f40e70bdb7dc22017dae73ac08", size = 28974431, upload_time = "2025-06-22T16:20:51.302Z" }, + { url = "https://files.pythonhosted.org/packages/8a/fc/e18b8550048d9224426e76906694c60028dbdb65d28b1372b5503914b89d/scipy-1.16.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:ae902626972f1bd7e4e86f58fd72322d7f4ec7b0cfc17b15d4b7006efc385176", size = 21246454, upload_time = "2025-06-22T16:20:57.276Z" }, + { url = "https://files.pythonhosted.org/packages/8c/48/07b97d167e0d6a324bfd7484cd0c209cc27338b67e5deadae578cf48e809/scipy-1.16.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:8cb824c1fc75ef29893bc32b3ddd7b11cf9ab13c1127fe26413a05953b8c32ed", size = 23772979, upload_time = "2025-06-22T16:21:03.363Z" }, + { url = "https://files.pythonhosted.org/packages/4c/4f/9efbd3f70baf9582edf271db3002b7882c875ddd37dc97f0f675ad68679f/scipy-1.16.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:de2db7250ff6514366a9709c2cba35cb6d08498e961cba20d7cff98a7ee88938", size = 33341972, upload_time = "2025-06-22T16:21:11.14Z" }, + { url = "https://files.pythonhosted.org/packages/3f/dc/9e496a3c5dbe24e76ee24525155ab7f659c20180bab058ef2c5fa7d9119c/scipy-1.16.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e85800274edf4db8dd2e4e93034f92d1b05c9421220e7ded9988b16976f849c1", size = 35185476, upload_time = "2025-06-22T16:21:19.156Z" }, + { url = "https://files.pythonhosted.org/packages/ce/b3/21001cff985a122ba434c33f2c9d7d1dc3b669827e94f4fc4e1fe8b9dfd8/scipy-1.16.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4f720300a3024c237ace1cb11f9a84c38beb19616ba7c4cdcd771047a10a1706", size = 35570990, upload_time = "2025-06-22T16:21:27.797Z" }, + { url = "https://files.pythonhosted.org/packages/e5/d3/7ba42647d6709251cdf97043d0c107e0317e152fa2f76873b656b509ff55/scipy-1.16.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:aad603e9339ddb676409b104c48a027e9916ce0d2838830691f39552b38a352e", size = 37950262, upload_time = "2025-06-22T16:21:36.976Z" }, + { url = "https://files.pythonhosted.org/packages/eb/c4/231cac7a8385394ebbbb4f1ca662203e9d8c332825ab4f36ffc3ead09a42/scipy-1.16.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f56296fefca67ba605fd74d12f7bd23636267731a72cb3947963e76b8c0a25db", size = 38515076, upload_time = "2025-06-22T16:21:45.694Z" }, +] + +[[package]] +name = "seaborn" +version = "0.13.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "matplotlib" }, + { name = "numpy" }, + { name = "pandas" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/86/59/a451d7420a77ab0b98f7affa3a1d78a313d2f7281a57afb1a34bae8ab412/seaborn-0.13.2.tar.gz", hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7", size = 1457696, upload_time = "2024-01-25T13:21:52.551Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl", hash = "sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987", size = 294914, upload_time = "2024-01-25T13:21:49.598Z" }, +] + +[[package]] +name = "shellingham" +version = "1.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload_time = "2023-10-24T04:13:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload_time = "2023-10-24T04:13:38.866Z" }, +] + +[[package]] +name = "simpleeval" +version = "1.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/6f/15be211749430f52f2c8f0c69158a6fc961c03aac93fa28d44d1a6f5ebc7/simpleeval-1.0.3.tar.gz", hash = "sha256:67bbf246040ac3b57c29cf048657b9cf31d4e7b9d6659684daa08ca8f1e45829", size = 24358, upload_time = "2024-11-02T10:29:46.912Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/e9/e58082fbb8cecbb6fb4133033c40cc50c248b1a331582be3a0f39138d65b/simpleeval-1.0.3-py3-none-any.whl", hash = "sha256:e3bdbb8c82c26297c9a153902d0fd1858a6c3774bf53ff4f134788c3f2035c38", size = 15762, upload_time = "2024-11-02T10:29:45.706Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload_time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload_time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "smmap" +version = "5.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329, upload_time = "2025-01-02T07:14:40.909Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303, upload_time = "2025-01-02T07:14:38.724Z" }, +] + +[[package]] +name = "soupsieve" +version = "2.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload_time = "2025-04-20T18:50:08.518Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload_time = "2025-04-20T18:50:07.196Z" }, +] + +[[package]] +name = "stack-data" +version = "0.6.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "asttokens" }, + { name = "executing" }, + { name = "pure-eval" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload_time = "2023-09-30T13:58:05.479Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload_time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "structlog" +version = "25.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/b9/6e672db4fec07349e7a8a8172c1a6ae235c58679ca29c3f86a61b5e59ff3/structlog-25.4.0.tar.gz", hash = "sha256:186cd1b0a8ae762e29417095664adf1d6a31702160a46dacb7796ea82f7409e4", size = 1369138, upload_time = "2025-06-02T08:21:12.971Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/4a/97ee6973e3a73c74c8120d59829c3861ea52210667ec3e7a16045c62b64d/structlog-25.4.0-py3-none-any.whl", hash = "sha256:fe809ff5c27e557d14e613f45ca441aabda051d119ee5a0102aaba6ce40eed2c", size = 68720, upload_time = "2025-06-02T08:21:11.43Z" }, +] + +[[package]] +name = "tableschema-to-template" +version = "0.0.13" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonschema" }, + { name = "pyyaml" }, + { name = "xlsxwriter" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/2d/5b5c0127e959a715c5365b3b491846fba5bc1fb7f94370cc3a4fb3f51f68/tableschema-to-template-0.0.13.tar.gz", hash = "sha256:2d8d2250efb840e0ecb9012c5e879a82ef68f65dd86bdff574200fdfc978ff1c", size = 13564, upload_time = "2023-02-01T21:53:17.238Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/7f/3c129377d9b815c0bb92b8c24bbecabe5e6b13b831f38924f80d2e5b40b2/tableschema_to_template-0.0.13-py3-none-any.whl", hash = "sha256:4905500a4235740654230c3223629d26fdccb7a0457ec1d0110ea102c4f1146c", size = 14860, upload_time = "2023-02-01T21:53:16.02Z" }, +] + +[[package]] +name = "tabulate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload_time = "2022-10-06T17:21:48.54Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload_time = "2022-10-06T17:21:44.262Z" }, +] + +[[package]] +name = "technologydata" +source = { editable = "." } +dependencies = [ + { name = "frictionless", extra = ["pandas"] }, + { name = "hdx-python-country" }, + { name = "ipykernel" }, + { name = "matplotlib" }, + { name = "mypy" }, + { name = "pandas" }, + { name = "pint" }, + { name = "pre-commit" }, + { name = "pydeflate" }, + { name = "pytest" }, + { name = "python-calamine" }, + { name = "requests" }, + { name = "ruff" }, + { name = "savepagenow" }, + { name = "scipy" }, + { name = "seaborn" }, + { name = "tqdm" }, + { name = "ucumvert" }, +] + +[package.optional-dependencies] +docs = [ + { name = "mkdocs-autolinks-plugin" }, + { name = "mkdocs-git-revision-date-localized-plugin" }, + { name = "mkdocs-material" }, + { name = "mkdocs-minify-plugin" }, + { name = "mkdocs-open-in-new-tab" }, + { name = "mkdocstrings" }, + { name = "mkdocstrings-python" }, +] + +[package.metadata] +requires-dist = [ + { name = "frictionless", extras = ["pandas"], specifier = ">=5.18.0" }, + { name = "hdx-python-country", specifier = ">=3.9.4" }, + { name = "ipykernel", specifier = ">=6.29.5" }, + { name = "matplotlib", specifier = ">=3.10.1" }, + { name = "mkdocs-autolinks-plugin", marker = "extra == 'docs'", specifier = ">=0.7.1" }, + { name = "mkdocs-git-revision-date-localized-plugin", marker = "extra == 'docs'", specifier = ">=1.4.7" }, + { name = "mkdocs-material", marker = "extra == 'docs'", specifier = ">=9.6.14" }, + { name = "mkdocs-minify-plugin", marker = "extra == 'docs'", specifier = ">=0.8.0" }, + { name = "mkdocs-open-in-new-tab", marker = "extra == 'docs'", specifier = ">=1.0.8" }, + { name = "mkdocstrings", marker = "extra == 'docs'", specifier = ">=0.29.1" }, + { name = "mkdocstrings-python", marker = "extra == 'docs'", specifier = ">=1.16.11" }, + { name = "mypy", specifier = ">=1.15.0" }, + { name = "pandas", specifier = ">=2.2.3" }, + { name = "pint", specifier = ">=0.24.4" }, + { name = "pre-commit", specifier = ">=4.2.0" }, + { name = "pydeflate", specifier = ">=2.1.3" }, + { name = "pytest", specifier = ">=8.3.5" }, + { name = "python-calamine", specifier = ">=0.3.1" }, + { name = "requests", specifier = ">=2.32.3" }, + { name = "ruff", specifier = ">=0.11.0" }, + { name = "savepagenow", specifier = ">=1.3.0" }, + { name = "scipy", specifier = ">=1.15.2" }, + { name = "seaborn", specifier = ">=0.13.2" }, + { name = "tqdm", specifier = ">=4.67.1" }, + { name = "ucumvert", specifier = ">=0.2.1" }, +] +provides-extras = ["docs"] + +[[package]] +name = "tenacity" +version = "9.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload_time = "2025-04-02T08:25:09.966Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload_time = "2025-04-02T08:25:07.678Z" }, +] + +[[package]] +name = "text-unidecode" +version = "1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload_time = "2019-08-30T21:36:45.405Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload_time = "2019-08-30T21:37:03.543Z" }, +] + +[[package]] +name = "tornado" +version = "6.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934, upload_time = "2025-05-22T18:15:38.788Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948, upload_time = "2025-05-22T18:15:20.862Z" }, + { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112, upload_time = "2025-05-22T18:15:22.591Z" }, + { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672, upload_time = "2025-05-22T18:15:24.027Z" }, + { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019, upload_time = "2025-05-22T18:15:25.735Z" }, + { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252, upload_time = "2025-05-22T18:15:27.499Z" }, + { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930, upload_time = "2025-05-22T18:15:29.299Z" }, + { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351, upload_time = "2025-05-22T18:15:31.038Z" }, + { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328, upload_time = "2025-05-22T18:15:32.426Z" }, + { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396, upload_time = "2025-05-22T18:15:34.205Z" }, + { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840, upload_time = "2025-05-22T18:15:36.1Z" }, + { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596, upload_time = "2025-05-22T18:15:37.433Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload_time = "2024-11-24T20:12:22.481Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload_time = "2024-11-24T20:12:19.698Z" }, +] + +[[package]] +name = "traitlets" +version = "5.14.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload_time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload_time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "typer" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "rich" }, + { name = "shellingham" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/8c/7d682431efca5fd290017663ea4588bf6f2c6aad085c7f108c5dbc316e70/typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b", size = 102625, upload_time = "2025-05-26T14:30:31.824Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/42/3efaf858001d2c2913de7f354563e3a3a2f0decae3efe98427125a8f441e/typer-0.16.0-py3-none-any.whl", hash = "sha256:1f79bed11d4d02d4310e3c1b7ba594183bcedb0ac73b27a9e5f28f6fb5b98855", size = 46317, upload_time = "2025-05-26T14:30:30.523Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.14.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload_time = "2025-07-04T13:28:34.16Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload_time = "2025-07-04T13:28:32.743Z" }, +] + +[[package]] +name = "typing-inspection" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload_time = "2025-05-21T18:55:23.885Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload_time = "2025-05-21T18:55:22.152Z" }, +] + +[[package]] +name = "tzdata" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload_time = "2025-03-23T13:54:43.652Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload_time = "2025-03-23T13:54:41.845Z" }, +] + +[[package]] +name = "ucumvert" +version = "0.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lark" }, + { name = "pint" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/27/cfeeea46e92d30edd1f8938e7630798e92c2cc8dbb0493a26373d850b3c4/ucumvert-0.2.2.tar.gz", hash = "sha256:f6218839a36b0e74e671f16d1f9f4aa1a2b530527a3c126031515c13273b1343", size = 52281, upload_time = "2025-05-10T22:18:25.204Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/b5/be9107654e04f7bcc16138598f2bccfde20952dfe1115f5289b5a7c5717e/ucumvert-0.2.2-py3-none-any.whl", hash = "sha256:cd5b9e93f9dfc52d4dbe3f4e790d0b426934185823a611fd6898bb4e3d6f4c86", size = 53201, upload_time = "2025-05-10T22:18:23.304Z" }, +] + +[[package]] +name = "unidecode" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/7d/a8a765761bbc0c836e397a2e48d498305a865b70a8600fd7a942e85dcf63/Unidecode-1.4.0.tar.gz", hash = "sha256:ce35985008338b676573023acc382d62c264f307c8f7963733405add37ea2b23", size = 200149, upload_time = "2025-04-24T08:45:03.798Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/b7/559f59d57d18b44c6d1250d2eeaa676e028b9c527431f5d0736478a73ba1/Unidecode-1.4.0-py3-none-any.whl", hash = "sha256:c3c7606c27503ad8d501270406e345ddb480a7b5f38827eafe4fa82a137f0021", size = 235837, upload_time = "2025-04-24T08:45:01.609Z" }, +] + +[[package]] +name = "urllib3" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload_time = "2025-06-18T14:07:41.644Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload_time = "2025-06-18T14:07:40.39Z" }, +] + +[[package]] +name = "validators" +version = "0.35.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/66/a435d9ae49850b2f071f7ebd8119dd4e84872b01630d6736761e6e7fd847/validators-0.35.0.tar.gz", hash = "sha256:992d6c48a4e77c81f1b4daba10d16c3a9bb0dbb79b3a19ea847ff0928e70497a", size = 73399, upload_time = "2025-05-01T05:42:06.7Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/6e/3e955517e22cbdd565f2f8b2e73d52528b14b8bcfdb04f62466b071de847/validators-0.35.0-py3-none-any.whl", hash = "sha256:e8c947097eae7892cb3d26868d637f79f47b4a0554bc6b80065dfe5aac3705dd", size = 44712, upload_time = "2025-05-01T05:42:04.203Z" }, +] + +[[package]] +name = "virtualenv" +version = "20.31.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload_time = "2025-05-08T17:58:23.811Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload_time = "2025-05-08T17:58:21.15Z" }, +] + +[[package]] +name = "watchdog" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload_time = "2024-11-01T14:07:13.037Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471, upload_time = "2024-11-01T14:06:37.745Z" }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449, upload_time = "2024-11-01T14:06:39.748Z" }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054, upload_time = "2024-11-01T14:06:41.009Z" }, + { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480, upload_time = "2024-11-01T14:06:42.952Z" }, + { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451, upload_time = "2024-11-01T14:06:45.084Z" }, + { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057, upload_time = "2024-11-01T14:06:47.324Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload_time = "2024-11-01T14:06:59.472Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload_time = "2024-11-01T14:07:01.431Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload_time = "2024-11-01T14:07:02.568Z" }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload_time = "2024-11-01T14:07:03.893Z" }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload_time = "2024-11-01T14:07:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload_time = "2024-11-01T14:07:06.376Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload_time = "2024-11-01T14:07:07.547Z" }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload_time = "2024-11-01T14:07:09.525Z" }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload_time = "2024-11-01T14:07:10.686Z" }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload_time = "2024-11-01T14:07:11.845Z" }, +] + +[[package]] +name = "wbgapi" +version = "1.0.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, + { name = "requests" }, + { name = "tabulate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d7/4a/f55695bd1c9f1996b675b6e9e980eef40ebdb5e4bf8774c059c31af6ade1/wbgapi-1.0.12.tar.gz", hash = "sha256:338c3c768bd120b80596b48fa0449ecabc93513ac989c55671dce579dbb3a5be", size = 33590, upload_time = "2022-07-05T15:07:22.772Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/12/224030af4886e119a3d03b709f7130e9601a4d15332e1d6a35671b25a4de/wbgapi-1.0.12-py3-none-any.whl", hash = "sha256:c5a1e1683b03d4264d287627c2562932f30e7f5c65509b812cb2e3de7d32633f", size = 36385, upload_time = "2022-07-05T15:07:20.606Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.2.13" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload_time = "2024-01-06T02:10:57.829Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload_time = "2024-01-06T02:10:55.763Z" }, +] + +[[package]] +name = "wheel" +version = "0.45.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545, upload_time = "2024-11-23T00:18:23.513Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload_time = "2024-11-23T00:18:21.207Z" }, +] + +[[package]] +name = "win32-setctime" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867, upload_time = "2024-12-07T15:28:28.314Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083, upload_time = "2024-12-07T15:28:26.465Z" }, +] + +[[package]] +name = "xlrd" +version = "2.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/07/5a/377161c2d3538d1990d7af382c79f3b2372e880b65de21b01b1a2b78691e/xlrd-2.0.2.tar.gz", hash = "sha256:08b5e25de58f21ce71dc7db3b3b8106c1fa776f3024c54e45b45b374e89234c9", size = 100167, upload_time = "2025-06-14T08:46:39.039Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/62/c8d562e7766786ba6587d09c5a8ba9f718ed3fa8af7f4553e8f91c36f302/xlrd-2.0.2-py2.py3-none-any.whl", hash = "sha256:ea762c3d29f4cca48d82df517b6d89fbce4db3107f9d78713e48cd321d5c9aa9", size = 96555, upload_time = "2025-06-14T08:46:37.766Z" }, +] + +[[package]] +name = "xlrd3" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/db/88d8d49ddacc203956ecb98dc86c6ffeee6e933ef1f50da9b369de518f7f/xlrd3-1.1.0.tar.gz", hash = "sha256:20e6ed2e5f7f8b4ab61e30faffebceff6fab348332b4c915373f0a72742dc177", size = 58919847, upload_time = "2021-04-25T12:27:10.03Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/08/fce745025e58f160e7dcb5a45d4d43eb0bd44c0d8851425be87ef90271fa/xlrd3-1.1.0-py2.py3-none-any.whl", hash = "sha256:8e8e808f938144e7936a6e07c1d57be7a0f6c6f5b37c9c67974b43246d8aacb6", size = 105268, upload_time = "2021-04-25T12:26:55.264Z" }, +] + +[[package]] +name = "xlsx2csv" +version = "0.8.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/20/94860286a308a4213581c1beacd4fc7be724250c03583fcff23aaa6107bb/xlsx2csv-0.8.4.tar.gz", hash = "sha256:2aa809888826f6af5b26c77fc7f613f2bbeada0d8cc09e5a58e0f59684bb6911", size = 221390, upload_time = "2024-11-19T17:06:07.818Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/c0/15c21556362c67f1155f3643a375d50ac67559b82c768e64e800a42a2577/xlsx2csv-0.8.4-py3-none-any.whl", hash = "sha256:52ab873fc7b2f2ca75d14aee8bd1985a9f5c1bcb3cc7b80df7a5d57a40a67473", size = 15904, upload_time = "2024-11-19T17:06:05.362Z" }, +] + +[[package]] +name = "xlsxwriter" +version = "3.2.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/47/7704bac42ac6fe1710ae099b70e6a1e68ed173ef14792b647808c357da43/xlsxwriter-3.2.5.tar.gz", hash = "sha256:7e88469d607cdc920151c0ab3ce9cf1a83992d4b7bc730c5ffdd1a12115a7dbe", size = 213306, upload_time = "2025-06-17T08:59:14.619Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/34/a22e6664211f0c8879521328000bdcae9bf6dbafa94a923e531f6d5b3f73/xlsxwriter-3.2.5-py3-none-any.whl", hash = "sha256:4f4824234e1eaf9d95df9a8fe974585ff91d0f5e3d3f12ace5b71e443c1c6abd", size = 172347, upload_time = "2025-06-17T08:59:13.453Z" }, +] + +[[package]] +name = "xlwt" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/97/56a6f56ce44578a69343449aa5a0d98eefe04085d69da539f3034e2cd5c1/xlwt-1.3.0.tar.gz", hash = "sha256:c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88", size = 153929, upload_time = "2017-08-22T06:47:16.498Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/48/def306413b25c3d01753603b1a222a011b8621aed27cd7f89cbc27e6b0f4/xlwt-1.3.0-py2.py3-none-any.whl", hash = "sha256:a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e", size = 99981, upload_time = "2017-08-22T06:47:15.281Z" }, +] From 617dce4c7c1d2c3a37a7b3c18985484cb978e791 Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Mon, 28 Jul 2025 15:18:37 +0200 Subject: [PATCH 03/30] Extend Technology and TechnologyCollection (#14) * doc: update class-diagram * code: technology collection * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: update technologycollection and technology definition * code: new changes to file * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: add override method for __str__ for Source and SourceCollection * code: update __str__ for source.py * code: finalize technology_collection unit tests * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * data: re-format solar_photovoltaics_example_04 * refactor * code: push forward the development * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: add hash and eq methods for Source and finalize get_source_collection * code: SourceCollection optional in Datapackage * code: new datapackage methods * code: docstring for to_datapackage * code: modify unit tests * code: new updates * code: remove to_datapackage * code: remove datapackage path * code: including Annotated and removing Parameters section * code: modify __eq__ method for Source * code: re-write __hash__ method * code: change SourceCollection.from_json --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- docs/class-diagram.puml | 36 +-- technologydata/__init__.py | 8 +- technologydata/datapackage.py | 169 ++++++---- technologydata/parameter.py | 69 +++- technologydata/source.py | 114 +++++-- technologydata/source_collection.py | 103 ++++-- technologydata/technology.py | 96 ++++-- technologydata/technology_collection.py | 238 ++++++++++++++ technologydata/unit_value.py | 13 +- test/conftest.py | 14 +- .../technologies.json | 296 +++++++++--------- .../technologies.json | 288 ++++++++--------- test/test_datapackage.py | 29 ++ test/test_source.py | 98 +++++- test/test_source_collection.py | 48 ++- test/test_technology_collection.py | 106 +++++++ 16 files changed, 1225 insertions(+), 500 deletions(-) create mode 100644 technologydata/technology_collection.py create mode 100644 test/test_datapackage.py create mode 100644 test/test_technology_collection.py diff --git a/docs/class-diagram.puml b/docs/class-diagram.puml index 15db0fff..3ddba2dd 100644 --- a/docs/class-diagram.puml +++ b/docs/class-diagram.puml @@ -10,7 +10,7 @@ class UnitValue { } note left of UnitValue::unit - Unit should be able to accomodate any unit of measurement, + Unit should be able to accommodate any unit of measurement, currencies+years, LHVs and different energy carriers. e.g. EUR_2020, kWh_electricity, kWh_hydrogen_LHV end note @@ -20,8 +20,8 @@ class Source { - authors: str - url: str - url_archive: str - - urldate: str - - urldate_archive: str + - url_date: str + - url_date_archive: str + ensure_in_wayback() + store_in_wayback() @@ -42,6 +42,7 @@ class Parameter { - provenance: str - note: str - sources: SourceCollection + + from_dict(): Parameter } Parameter --> UnitValue : quantity @@ -72,6 +73,7 @@ class Technology { - output-hydrogen: Parameter - output-electricity: Parameter + + from_dict(): Technology + adjust_currency(): Technology // or inplace + adjust_region(): Technology // or inplace + adjust_scale(): Technology // or inplace @@ -116,6 +118,11 @@ end note class TechnologyCollection { - technologies: Iterable + get(**criteria): Technology | TechnologyCollection | None + + from_dict(): TechnologyCollection + + to_json(): str + + to_csv(): str + + to_dataframe(): pd.DataFrame + + from_json(): TechnologyCollection + create_projection(): TechnologyCollection ' TODO: Think about more methods here } @@ -149,25 +156,23 @@ note left of SourceCollection::retrieve_all_from_wayback and stores the files locally. end note -note left of SourceCollection::to_csv - Export the source collection into a csv file. -end note - note left of SourceCollection::to_json Export the source collection into a json file. end note +note left of SourceCollection::to_csv + Export the source collection into a csv file. +end note + note left of SourceCollection::to_dataframe Export the source collection into a Pandas dataframe. end note class Datapackage { - - name: str - - path: Path - technologies: TechnologyCollection - sources: SourceCollection - // potentially other Collections in the future - + to_datapackage() + + to_csv() + from_json() + to_json() + get_source_collection() @@ -182,12 +187,6 @@ note top of Datapackage Please note that the "sources" field is built in the background from "technologies" end note -note right of Datapackage::name - Currently we use "source" as a reference to pre-packaged data and for a column in "technologies.csv". - The Datapackage.name would substitute for referencing to pre-packaged data, e.g. "example01" would be - a packaged data included with `technologydata`. It is meant to be independent of the "TechnologyCollection" or its members. -end note - note right of Datapackage::technologies Derived from the TechnologyCollection. end note @@ -196,11 +195,6 @@ note right of Datapackage::sources Built in the background with the get_source_collection() method, which derives it from all Source objects that are related to the TechnologyCollection (i.e., all sources referenced by technologies and their parameters). end note -note right of Datapackage::to_datapackage - Exports all member Source and TechnologyCollection to a folder following the datapackage - specification, including the schema .json files and the .csv files. -end note - Parameter --> SourceCollection : sources Technology --> "*" Parameter : uses for its members TechnologyCollection --> "*" Technology : consists of diff --git a/technologydata/__init__.py b/technologydata/__init__.py index d3380162..20b78e28 100644 --- a/technologydata/__init__.py +++ b/technologydata/__init__.py @@ -8,17 +8,19 @@ from technologydata.source import Source from technologydata.source_collection import SourceCollection from technologydata.technology import Technology +from technologydata.technology_collection import TechnologyCollection from technologydata.unit_value import UnitValue from technologydata.utils.commons import Commons, DateFormatEnum, FileExtensionEnum __all__ = [ "Commons", "DateFormatEnum", + "DataPackage", "FileExtensionEnum", - "UnitValue", - "Technology", "Parameter", "Source", "SourceCollection", - "DataPackage", + "Technology", + "TechnologyCollection", + "UnitValue", ] diff --git a/technologydata/datapackage.py b/technologydata/datapackage.py index 27ed5182..ca450ff0 100644 --- a/technologydata/datapackage.py +++ b/technologydata/datapackage.py @@ -11,76 +11,135 @@ """ +import logging import pathlib +import typing import pydantic from technologydata.source_collection import SourceCollection +from technologydata.technology_collection import TechnologyCollection -# from technologydata.technology_collection import TechnologyCollection +logger = logging.getLogger(__name__) -# TODO complete class class DataPackage(pydantic.BaseModel): # type: ignore """ Container for a collection of Technology objects and/or Source objects, with batch operations and loading utilities. - Parameters - ---------- - name : str - The short-name code of the source - technologies : List[Technology] - List of Technology objects. - Attributes ---------- - technologies : List[Technology] + technologies : Optional[TechnologyCollection] List of Technology objects. + sources : Optional[SourceCollection] + List of Source objects. """ - name: str - path: pathlib.Path - # technologies: TechnologyCollection - sources: SourceCollection - - # @classmethod - # def from_json(cls, path: pathlib.Path) -> technologydata.DataPackage: - # """ - # Load a DataPackage from a JSON file. - # - # Parameters - # ---------- - # path : Path - # Path to the JSON file. - # - # Returns - # ------- - # DataPackage - # The loaded DataPackage instance. - # - # """ - # with open(path) as f: - # data = json.load(f) - # techs = technologydata.TechnologyCollection( - # [technologydata.Technology(**t) for t in data.get("technologies", [])] - # ) - # # TODO: redo this part once an example JSON is available - # techs = technologydata.TechnologyCollection( - # [technologydata.Technology(**t) for t in data.get("technologies", [])] - # ) - # # You should also handle 'name', 'sources', etc. as needed - # return cls( - # name=data.get("name", ""), - # path=path, - # technologies=techs, - # sources=technologydata.SourceCollection(data.get("sources", [])), - # ) - # - # @classmethod - # def to_json(cls, path: pathlib.Path) -> None: - # pass - # - # @classmethod - # def to_datapackage(cls, path: pathlib.Path) -> None: - # pass + technologies: typing.Annotated[ + TechnologyCollection | None, + pydantic.Field(description="List of Technology objects."), + ] = None + sources: typing.Annotated[ + SourceCollection | None, pydantic.Field(description="List of Source objects.") + ] = None + + def get_source_collection(self) -> None: + """ + Get the SourceCollection associated with this DataPackage from the TechnologyCollection. + + Returns + ------- + SourceCollection + The SourceCollection instance. + + """ + sources_set = set() + if self.sources is None: + if self.technologies is not None: + for technology in self.technologies: + for parameter in technology.parameters.values(): + for source in parameter.sources: + sources_set.add(source) + else: + raise ValueError( + "No technologies available to extract a sources collection from." + ) + else: + logger.info("The data package already has a sources collection.") + self.sources = SourceCollection(sources=list(sources_set)) + + @classmethod + def from_json(cls, path_to_folder: pathlib.Path | str) -> "DataPackage": + """ + Load a DataPackage from a JSON file. + + Parameters + ---------- + path_to_folder : pathlib.Path or str + Path to the data package folder. + + Returns + ------- + DataPackage + The loaded DataPackage instance. + + """ + # Load technologies + technologies_path = pathlib.Path(path_to_folder, "technologies.json") + technologies = TechnologyCollection.from_json(technologies_path) + + # Create DataPackage instance + data_package = cls( + path=path_to_folder, + technologies=technologies, + ) + + # Generate sources collection from technologies if sources is None + data_package.get_source_collection() + + return data_package + + def to_json(self, folder_path: pathlib.Path) -> None: + """ + Export the Datapackage to JSON files. + + The files are: + - the 'technologies' attribute is exported to technologies.json, together with the corresponding data schema + - the 'sources' attribute is exported to sources.json, together with the corresponding data schema + + Parameters + ---------- + folder_path : pathlib.Path + The path to the folder where the JSON files are created + + """ + if self.technologies is not None: + technologies_path = pathlib.Path(folder_path, "technologies.json") + self.technologies.to_json(technologies_path) + + if self.sources is not None: + sources_path = pathlib.Path(folder_path, "sources.json") + self.sources.to_json(sources_path) + + def to_csv(self, folder_path: pathlib.Path) -> None: + """ + Export the Datapackage to CSV files. + + The files are: + - the 'technologies' attribute is exported to technologies.csv + - the 'sources' attribute is exported to sources.csv + + Parameters + ---------- + folder_path : pathlib.Path + The path to the folder where the CSV files are created + + """ + if self.technologies is not None: + technologies_path = pathlib.Path(folder_path, "technologies.csv") + self.technologies.to_csv(path_or_buf=technologies_path) + + if self.sources is not None: + sources_path = pathlib.Path(folder_path, "sources.csv") + self.sources.to_csv(path_or_buf=sources_path) diff --git a/technologydata/parameter.py b/technologydata/parameter.py index 10f94bc6..feb4483a 100644 --- a/technologydata/parameter.py +++ b/technologydata/parameter.py @@ -15,6 +15,8 @@ """ +import typing + import pydantic from technologydata.source_collection import SourceCollection @@ -26,17 +28,6 @@ class Parameter(pydantic.BaseModel): # type: ignore """ Encapsulate a value with its unit, provenance, notes, and sources. - Parameters - ---------- - quantity : UnitValue - The value and its unit. - provenance : Optional[str] - Description of the data's provenance. - note : Optional[str] - Additional notes about the parameter. - sources : SourceCollection - One or more sources for the parameter. - Attributes ---------- quantity : UnitValue @@ -50,12 +41,18 @@ class Parameter(pydantic.BaseModel): # type: ignore """ - quantity: UnitValue = pydantic.Field(..., description="The value and its unit.") - provenance: str | None = pydantic.Field(None, description="Data provenance.") - note: str | None = pydantic.Field(None, description="Additional notes.") - sources: SourceCollection = pydantic.Field( - ..., description="Collection of Sources." - ) + quantity: typing.Annotated[ + UnitValue, pydantic.Field(description="The value and its unit.") + ] + provenance: typing.Annotated[ + str | None, pydantic.Field(description="Data provenance.") + ] = None + note: typing.Annotated[ + str | None, pydantic.Field(description="Additional notes.") + ] = None + sources: typing.Annotated[ + SourceCollection, pydantic.Field(description="Collection of Sources.") + ] @property def value(self) -> float: @@ -82,3 +79,41 @@ def unit(self) -> str: """ return self.quantity.unit + + @classmethod + def from_dict(cls, data: dict[str, typing.Any]) -> "Parameter": + """ + Create an instance of the class from a dictionary. + + Parameters + ---------- + cls : type + The class to instantiate. + data : dict + A dictionary containing the data to initialize the class instance. + Expected keys include: + - "quantity" (dict): A dictionary representing a UnitValue, parsed via `UnitValue.parse_obj()`. + - "provenance" (str or None): Optional provenance information. + - "note" (str or None): Optional notes. + - "sources" (list): A list of source data dictionaries, to be converted into a SourceCollection. + + Returns + ------- + instance : cls + An instance of the class initialized with the provided data. + + Notes + ----- + This method converts the "sources" list into a `SourceCollection` using `SourceCollection.from_json()`. + The "quantity" field is parsed into a `UnitValue` object using `UnitValue.parse_obj()`. + + """ + # Convert sources list into SourceCollection + sources_data = data.get("sources", []) + sources = SourceCollection.from_json(from_str=sources_data) + return cls( + quantity=UnitValue.model_validate(data["quantity"]), + provenance=data.get("provenance"), + note=data.get("note"), + sources=sources, + ) diff --git a/technologydata/source.py b/technologydata/source.py index 3b1fd1f7..7bb369a0 100644 --- a/technologydata/source.py +++ b/technologydata/source.py @@ -30,21 +30,6 @@ class Source(pydantic.BaseModel): # type: ignore """ Represent a data source, including bibliographic and web information. - Parameters - ---------- - title : str - Title of the source. - authors : str - Authors of the source. - url : Optional[str] - URL of the source. - url_archive : Optional[str] - Archived URL (e.g., from the Wayback Machine). - url_date : Optional[str] - Date the URL was accessed. - url_date_archive : Optional[str] - Date the URL was archived. - Attributes ---------- title : str @@ -62,16 +47,95 @@ class Source(pydantic.BaseModel): # type: ignore """ - title: str = pydantic.Field(..., description="Title of the source.") - authors: str = pydantic.Field(..., description="Authors of the source.") - url: str | None = pydantic.Field(None, description="URL of the source.") - url_archive: str | None = pydantic.Field(None, description="Archived URL.") - url_date: str | None = pydantic.Field( - None, description="Date the URL was accessed." - ) - url_date_archive: str | None = pydantic.Field( - None, description="Date the URL was archived." - ) + title: typing.Annotated[str, pydantic.Field(description="Title of the source.")] + authors: typing.Annotated[str, pydantic.Field(description="Authors of the source.")] + url: typing.Annotated[ + str | None, pydantic.Field(description="URL of the source.") + ] = None + url_archive: typing.Annotated[ + str | None, pydantic.Field(description="Archived URL.") + ] = None + url_date: typing.Annotated[ + str | None, pydantic.Field(description="Date the URL was accessed.") + ] = None + url_date_archive: typing.Annotated[ + str | None, pydantic.Field(description="Date the URL was archived.") + ] = None + + def __eq__(self, other: object) -> bool: + """ + Check for equality with another Source object based on non-None attributes. + + Compares all attributes of the current instance with those of the other object. + Only compares attributes that are not None in both instances. + + Parameters + ---------- + other : object + The object to compare with. Expected to be an instance of Source. + + Returns + ------- + bool + True if all non-None attributes are equal between self and other, False otherwise. + Returns False if other is not a Source instance. + + Notes + ----- + This method considers only attributes that are not None in both objects. + If an attribute is None in either object, it is ignored in the comparison. + + """ + if not isinstance(other, Source): + logger.error("The object is not a Source instance.") + return False + + for field in self.__class__.model_fields.keys(): + value_self = getattr(self, field) + value_other = getattr(other, field) + if value_self != value_other: + return False + return True + + def __hash__(self) -> int: + """ + Return a hash value for the Source instance based on all attributes. + + This method computes a combined hash of the instance's attributes to + uniquely identify the object in hash-based collections such as sets and dictionaries. + + Returns + ------- + int + The hash value of the Source instance. + + """ + # Retrieve all attribute values dynamically + attribute_values = tuple( + getattr(self, field) for field in self.__class__.model_fields.keys() + ) + return hash(attribute_values) + + def __str__(self) -> str: + """ + Return a string representation of the Source, including all available attributes. + + Returns + ------- + str + A string detailing the source's information. + + """ + parts = [f"'{self.authors}': '{self.title}'"] + if self.url: + parts.append(f"from url '{self.url}'") + if self.url_date: + parts.append(f"last accessed on '{self.url_date}'") + if self.url_archive: + parts.append(f"archived at '{self.url_archive}'") + if self.url_date_archive: + parts.append(f"on '{self.url_date_archive}'.") + return ", ".join(parts) def ensure_in_wayback(self) -> None: """ diff --git a/technologydata/source_collection.py b/technologydata/source_collection.py index 8dfd1714..702c4f96 100644 --- a/technologydata/source_collection.py +++ b/technologydata/source_collection.py @@ -8,6 +8,7 @@ import json import pathlib import re +import typing import pandas import pydantic @@ -19,11 +20,6 @@ class SourceCollection(pydantic.BaseModel): # type: ignore """ Represent a collection of sources. - Parameters - ---------- - sources : List[Source] - List of Source objects. - Attributes ---------- sources : List[Source] @@ -31,7 +27,46 @@ class SourceCollection(pydantic.BaseModel): # type: ignore """ - sources: list[Source] = pydantic.Field(..., description="List of Source objects.") + sources: typing.Annotated[ + list[Source], pydantic.Field(description="List of Source objects.") + ] + + def __iter__(self) -> typing.Iterator["Source"]: + """ + Return an iterator over the list of Source objects. + + Returns + ------- + Iterator[Source] + An iterator over the Source objects contained in the collection. + + """ + return iter(self.sources) + + def __len__(self) -> int: + """ + Return the number of sources in this collection. + + Returns + ------- + int + The number of Source objects in the sources list. + + """ + return len(self.sources) + + def __str__(self) -> str: + """ + Return a string representation of the SourceCollection. + + Returns + ------- + str + A string representation of the SourceCollection, showing the number of sources. + + """ + sources_str = ", ".join(str(source) for source in self.sources) + return f"SourceCollection with {len(self.sources)} sources: {sources_str}" def get(self, title: str, authors: str) -> "SourceCollection": """ @@ -66,18 +101,6 @@ def get(self, title: str, authors: str) -> "SourceCollection": return SourceCollection(sources=filtered_sources) - def __len__(self) -> int: - """ - Return the number of sources in this collection. - - Returns - ------- - int - The number of Source objects in the sources list. - - """ - return len(self.sources) - def retrieve_all_from_wayback( self, download_directory: pathlib.Path ) -> list[pathlib.Path | None]: @@ -162,7 +185,7 @@ def to_json( file_path : pathlib.Path The path to the JSON file to be created. schema_path : pathlib.Path - The path to the JSON schema file to be created. By default created with a `schema` suffix next to `file_path`. + The path to the JSON schema file to be created. By default, created with a `schema` suffix next to `file_path`. """ if schema_path is None: @@ -180,20 +203,46 @@ def to_json( jsonfile.write(json_data) @classmethod - def from_json(cls, file_path: pathlib.Path | str) -> "SourceCollection": + def from_json( + cls, + file_path: pathlib.Path | str | None = None, + from_str: list[dict[str, typing.Any]] | None = None, + ) -> "SourceCollection": """ Import the SourceCollection from a JSON file. Parameters ---------- - file_path : pathlib.Path + file_path : Optional[pathlib.Path | str] The path to the JSON file to be imported. + from_str : Optional[list] + The list of dictionaries with Source fields. """ - if isinstance(file_path, pathlib.Path | str): - file_path = pathlib.Path(file_path) - else: - raise TypeError("file_path must be a pathlib.Path or str") - with open(file_path, encoding="utf-8") as jsonfile: - json_data = json.load(jsonfile) + if file_path is None and from_str is None: + raise ValueError( + "Both file_path and from_str are None. One must be provided." + ) + + json_data = None + + # Load data from file if file_path is provided + if file_path is not None: + if not isinstance(file_path, (pathlib.Path | str)): + raise TypeError( + f"file_path must be a pathlib.Path or str, but got {type(file_path)}" + ) + path = pathlib.Path(file_path) + with path.open(encoding="utf-8") as jsonfile: + json_data = json.load(jsonfile) + + # Override json_data if from_str is provided + if from_str is not None: + if not isinstance(from_str, list): + raise TypeError(f"from_str must be a list, but got {type(from_str)}") + json_data = {"sources": [Source(**source) for source in from_str]} + + if json_data is None: + raise ValueError("No data to load. Provide either a file_path or from_str.") + return cls(**json_data) diff --git a/technologydata/technology.py b/technologydata/technology.py index ca09967e..2963a968 100644 --- a/technologydata/technology.py +++ b/technologydata/technology.py @@ -11,57 +11,45 @@ import pydantic -import technologydata +from technologydata.parameter import Parameter class Technology(pydantic.BaseModel): # type: ignore """ Represent a technology with region, year, and a flexible set of parameters. - Parameters - ---------- - name : str - Name of the technology. - region : str - Region identifier. - year : Optional[int] - Year of the data. - parameters : Dict[str, Parameter] - Dictionary of parameter names to Parameter objects. - case : Optional[str] - Case or scenario identifier. - detailed_technology : Optional[str] - More detailed technology name. - Attributes ---------- name : str Name of the technology. region : str Region identifier. - year : Optional[int] + year : int Year of the data. parameters : Dict[str, Parameter] Dictionary of parameter names to Parameter objects. - case : Optional[str] + case : str Case or scenario identifier. - detailed_technology : Optional[str] + detailed_technology : str More detailed technology name. """ - name: str = pydantic.Field(..., description="Name of the technology.") - region: str = pydantic.Field(..., description="Region identifier.") - year: int | None = pydantic.Field(None, description="Year of the data.") - parameters: dict[str, technologydata.Parameter] = pydantic.Field( - default_factory=dict, description="Parameters." - ) - case: str | None = pydantic.Field(None, description="Case or scenario identifier.") - detailed_technology: str | None = pydantic.Field( - None, description="Detailed technology name." - ) - - def __getitem__(self, key: str) -> technologydata.Parameter: + name: typing.Annotated[str, pydantic.Field(description="Name of the technology.")] + region: typing.Annotated[str, pydantic.Field(description="Region identifier.")] + year: typing.Annotated[int, pydantic.Field(description="Year of the data.")] + parameters: typing.Annotated[ + dict[str, Parameter], + pydantic.Field(default_factory=dict, description="Parameters."), + ] + case: typing.Annotated[ + str, pydantic.Field(description="Case or scenario identifier.") + ] + detailed_technology: typing.Annotated[ + str, pydantic.Field(description="Detailed technology name.") + ] + + def __getitem__(self, key: str) -> Parameter: """ Access a parameter by name. @@ -78,7 +66,7 @@ def __getitem__(self, key: str) -> technologydata.Parameter: """ return self.parameters[key] - def __setitem__(self, key: str, value: technologydata.Parameter) -> None: + def __setitem__(self, key: str, value: Parameter) -> None: """ Set a parameter by name. @@ -180,3 +168,47 @@ def adjust_scale(self, scaling_factor: float) -> "Technology": """ # Placeholder: implement scaling logic return self + + @classmethod + def from_dict(cls, data: dict[str, typing.Any]) -> "Technology": + """ + Create an instance of the class from a dictionary. + + Parameters + ---------- + cls : type + The class to instantiate. + data : dict + A dictionary containing the data to initialize the class instance. + Expected keys include: + - "region" (str): The region associated with the instance. + - "case" (str): The case identifier. + - "year" (int): The year value. + - "name" (str): The name of the instance. + - "detailed_technology" (str): Details about the technology. + - "parameters" (dict): A dictionary where each key maps to a parameter data + dictionary, which will be converted to a Parameter object. + + Returns + ------- + instance : cls + An instance of the class initialized with the provided data. + + Notes + ----- + This method processes the "parameters" field in the input data by converting each + parameter dictionary into a Parameter object using `Parameter.from_dict()`. It then + constructs and returns an instance of the class with all the provided attributes. + + """ + params = {} + for key, param_data in data.get("parameters", {}).items(): + params[key] = Parameter.from_dict(param_data) + return cls( + region=data["region"], + case=data["case"], + year=data["year"], + name=data["name"], + detailed_technology=data["detailed_technology"], + parameters=params, + ) diff --git a/technologydata/technology_collection.py b/technologydata/technology_collection.py new file mode 100644 index 00000000..4d28dd1b --- /dev/null +++ b/technologydata/technology_collection.py @@ -0,0 +1,238 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +"""TechnologyCollection class for representing an iterable of Technology Objects.""" + +import csv +import json +import pathlib +import re +import typing +from collections.abc import Iterator + +import pandas +import pydantic + +from technologydata.technology import Technology + + +class TechnologyCollection(pydantic.BaseModel): # type: ignore + """ + Represent a collection of technologies. + + Attributes + ---------- + technologies : List[Technology] + List of Technology objects. + + """ + + technologies: typing.Annotated[ + list[Technology], pydantic.Field(description="List of Technology objects.") + ] + + def __iter__(self) -> Iterator["Technology"]: + """ + Return an iterator over the list of Technology objects. + + Returns + ------- + Iterator[Technology] + An iterator over the Technology objects contained in the collection. + + """ + return iter(self.technologies) + + def __len__(self) -> int: + """ + Return the number of technologies in this collection. + + Returns + ------- + int + The number of Technology objects in the technologies list. + + """ + return len(self.technologies) + + def get( + self, name: str, region: str, year: int, case: str, detailed_technology: str + ) -> "TechnologyCollection": + """ + Filter technologies based on regex patterns for non-optional attributes. + + Parameters + ---------- + name : str + Regex pattern to filter technology names. + region : str + Regex pattern to filter region identifiers. + year : int + Regex pattern to filter the year of the data. + case : str + Regex pattern to filter case or scenario identifiers. + detailed_technology : str + Regex pattern to filter detailed technology names. + + Returns + ------- + TechnologyCollection + A new TechnologyCollection with filtered technologies. + + """ + filtered_technologies = self.technologies + + if name is not None: + pattern_name = re.compile(name, re.IGNORECASE) + filtered_technologies = [ + t for t in filtered_technologies if pattern_name.search(t.name) + ] + + if region is not None: + pattern_region = re.compile(region, re.IGNORECASE) + filtered_technologies = [ + t for t in filtered_technologies if pattern_region.search(t.region) + ] + + if year is not None: + pattern_year = re.compile(str(year), re.IGNORECASE) + filtered_technologies = [ + t for t in filtered_technologies if pattern_year.search(str(t.year)) + ] + + if case is not None: + pattern_case = re.compile(case, re.IGNORECASE) + filtered_technologies = [ + t for t in filtered_technologies if pattern_case.search(t.case) + ] + + if detailed_technology is not None: + pattern_detailed_technology = re.compile(detailed_technology, re.IGNORECASE) + filtered_technologies = [ + t + for t in filtered_technologies + if pattern_detailed_technology.search(t.detailed_technology) + ] + + return TechnologyCollection(technologies=filtered_technologies) + + def to_dataframe(self) -> pandas.DataFrame: + """ + Convert the TechnologyCollection to a pandas DataFrame. + + Returns + ------- + pd.DataFrame + A DataFrame containing the technology data. + + """ + return pandas.DataFrame( + [technology.model_dump() for technology in self.technologies] + ) + + def to_csv(self, **kwargs: pathlib.Path | str | bool) -> None: + """ + Export the TechnologyCollection to a CSV file. + + Parameters + ---------- + **kwargs : dict + Additional keyword arguments passed to pandas.DataFrame.to_csv(). + Common options include: + - path_or_buf : str or pathlib.Path or file-like object, optional + File path or object, if None, the result is returned as a string. + Default is None. + - sep : str + String of length 1. Field delimiter for the output file. + Default is ','. + - index : bool + Write row names (index). Default is True. + - encoding : str + String representing the encoding to use in the output file. + Default is 'utf-8'. + + Notes + ----- + The method converts the collection to a pandas DataFrame using + `self.to_dataframe()` and then writes it to a CSV file using the provided + kwargs. + + """ + default_kwargs = { + "sep": ",", + "index": False, + "encoding": "utf-8", + "quoting": csv.QUOTE_ALL, + } + + # Merge default_kwargs with user-provided kwargs, giving precedence to user kwargs + merged_kwargs = {**default_kwargs, **kwargs} + output_dataframe = self.to_dataframe() + output_dataframe.to_csv(**merged_kwargs) + + def to_json( + self, file_path: pathlib.Path, schema_path: pathlib.Path | None = None + ) -> None: + """ + Export the TechnologyCollection to a JSON file, together with a data schema. + + Parameters + ---------- + file_path : pathlib.Path + The path to the JSON file to be created. + schema_path : pathlib.Path + The path to the JSON schema file to be created. By default, created with a `schema` suffix next to `file_path`. + + """ + if schema_path is None: + schema_path = file_path.with_suffix(".schema.json") + + # Export the model's schema with descriptions to a dict + schema = self.model_json_schema() + + # Save the schema (which includes descriptions) to a JSON file + with open(schema_path, "w") as f: + json.dump(schema, f, indent=4) + + with open(file_path, mode="w", encoding="utf-8") as jsonfile: + json_data = self.model_dump_json(indent=4) # Convert to JSON string + jsonfile.write(json_data) + + @classmethod + def from_json(cls, file_path: pathlib.Path | str) -> "TechnologyCollection": + """ + Load a TechnologyCollection instance from a JSON file. + + Parameters + ---------- + file_path : pathlib.Path or str + Path to the JSON file containing the data. Can be a pathlib.Path object or a string path. + + Returns + ------- + TechnologyCollection + An instance of TechnologyCollection initialized with the data from the JSON file. + + Raises + ------ + TypeError + If `file_path` is not a pathlib.Path or str. + + Notes + ----- + This method reads the JSON data from the specified file, creates `Technology` objects + for each item in the JSON list using `Technology.from_dict()`, and returns a new + `TechnologyCollection` containing these objects. + + """ + if isinstance(file_path, pathlib.Path | str): + file_path = pathlib.Path(file_path) + else: + raise TypeError("file_path must be a pathlib.Path or str") + with open(file_path, encoding="utf-8") as jsonfile: + json_data = json.load(jsonfile) + techs = [] + for item in json_data: + techs.append(Technology.from_dict(item)) + return cls(technologies=techs) diff --git a/technologydata/unit_value.py b/technologydata/unit_value.py index 0b42cddb..a354a343 100644 --- a/technologydata/unit_value.py +++ b/technologydata/unit_value.py @@ -17,6 +17,8 @@ """ +import typing + import pint import pydantic @@ -27,13 +29,6 @@ class UnitValue(pydantic.BaseModel): # type: ignore """ Represent a numerical value with an associated unit of measurement. - Parameters - ---------- - value : float - The numerical value. - unit : str - The unit of measurement (e.g., 'EUR_2020', 'kWh_electricity', 'kWh_hydrogen_LHV'). - Attributes ---------- value : float @@ -43,8 +38,8 @@ class UnitValue(pydantic.BaseModel): # type: ignore """ - value: float = pydantic.Field(..., description="The numerical value.") - unit: str = pydantic.Field(..., description="The unit of measurement.") + value: typing.Annotated[float, pydantic.Field(description="The numerical value.")] + unit: typing.Annotated[str, pydantic.Field(description="The unit of measurement.")] def to(self, new_unit: str) -> "UnitValue": """ diff --git a/test/conftest.py b/test/conftest.py index a0d1fc81..a87b2dde 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -42,7 +42,7 @@ def create_source_from_params(params: dict[str, str]) -> technologydata.Source: Returns ------- - td.Source + technologydata.Source A Source object initialized with the provided parameters. Raises @@ -50,18 +50,6 @@ def create_source_from_params(params: dict[str, str]) -> technologydata.Source: ValueError If any of the required fields ("source_title", "source_authors") are missing from the params. - Examples - -------- - >>> params_dict = { - ... "source_title": "Example Title", - ... "source_authors": "John Doe", - ... "source_url": "http://example.com", - ... "source_url_archive": "http://web.archive.org/web/20231001120000/http://example.com", - ... "source_url_date": "2023-10-01", - ... "source_url_date_archive": "2023-10-01T12:00:00Z" - ... } - >>> source = create_source_from_params(params_dict) - """ return technologydata.Source( title=params["source_title"], diff --git a/test/test_data/solar_photovoltaics_example_03/technologies.json b/test/test_data/solar_photovoltaics_example_03/technologies.json index 02712257..be406154 100644 --- a/test/test_data/solar_photovoltaics_example_03/technologies.json +++ b/test/test_data/solar_photovoltaics_example_03/technologies.json @@ -3,170 +3,174 @@ "region": "DEU", "case": "example-scenario", "year": 2022, - "technology": "Solar photovoltaics", + "name": "Solar photovoltaics", "detailed_technology": "Si-HC", - "capacity": { - "quantity": { - "value": 1, - "unit": "MW" - }, - "provenance": "Model calculation", - "note": "Average capacity factor of 22% assumed", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" + "parameters": { + "capacity": { + "quantity": { + "value": 1, + "unit": "MW" }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] - }, - "investment": { - "quantity": { - "value": 500, - "unit": "EUR_2022/KW_el" + "provenance": "Model calculation", + "note": "Average capacity factor of 22% assumed", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] }, - "provenance": "Industry report", - "note": "Average overnight cost", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" + "investment": { + "quantity": { + "value": 500, + "unit": "EUR_2022/KW_el" }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] - }, - "specific_investment": { - "quantity": { - "value": 0.95, - "unit": "USD/W" + "provenance": "Industry report", + "note": "Average overnight cost", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] }, - "provenance": "Derived", - "note": "Calculated from investment/capacity", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" + "specific_investment": { + "quantity": { + "value": 0.95, + "unit": "USD/W" }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] - }, - "lifetime": { - "quantity": { - "value": 30, - "unit": "years" + "provenance": "Derived", + "note": "Calculated from investment/capacity", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] }, - "provenance": "Manufacturer specification", - "note": "With performance degradation guarantee", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" + "lifetime": { + "quantity": { + "value": 30, + "unit": "years" }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] - }, - "wacc": { - "quantity": { - "value": 0.05, - "unit": "fraction" + "provenance": "Manufacturer specification", + "note": "With performance degradation guarantee", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] }, - "provenance": "Financial analysis", - "note": "Nominal weighted average cost of capital", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" + "wacc": { + "quantity": { + "value": 0.05, + "unit": "fraction" }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] + "provenance": "Financial analysis", + "note": "Nominal weighted average cost of capital", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + } } }, { "region": "DEU", "case": "example-project", "year": 2022, - "technology": "Solar photovoltaics", + "name": "Solar photovoltaics", "detailed_technology": "Si-HC", - "capacity": { - "quantity": { - "value": 1.0, - "unit": "MW" - }, - "provenance": "Model calculation", - "note": "Average capacity factor of 25% assumed", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" + "parameters": { + "capacity": { + "quantity": { + "value": 1.0, + "unit": "MW" }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] + "provenance": "Model calculation", + "note": "Average capacity factor of 25% assumed", + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + } }, "investment": { "quantity": { diff --git a/test/test_data/solar_photovoltaics_example_04/technologies.json b/test/test_data/solar_photovoltaics_example_04/technologies.json index 964b37ae..b97485fd 100644 --- a/test/test_data/solar_photovoltaics_example_04/technologies.json +++ b/test/test_data/solar_photovoltaics_example_04/technologies.json @@ -3,164 +3,168 @@ "region": "DEU", "case": "example-scenario", "year": 2022, - "technology": "Solar photovoltaics", + "name": "Solar photovoltaics", "detailed_technology": "Si-HC", - "capacity": { - "quantity": { - "value": 1, - "unit": "MW" + "parameters": { + "capacity": { + "quantity": { + "value": 1, + "unit": "MW" + }, + "provenance": "Model calculation", + "note": "Average capacity factor of 22% assumed", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] }, - "provenance": "Model calculation", - "note": "Average capacity factor of 22% assumed", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "investment": { - "quantity": { - "value": 500, - "unit": "EUR_2022/KW_el" + "investment": { + "quantity": { + "value": 500, + "unit": "EUR_2022/KW_el" + }, + "provenance": "Industry report", + "note": "Average overnight cost", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] }, - "provenance": "Industry report", - "note": "Average overnight cost", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "specific_investment": { - "quantity": { - "value": 0.95, - "unit": "USD/W" + "specific_investment": { + "quantity": { + "value": 0.95, + "unit": "USD/W" + }, + "provenance": "Derived", + "note": "Calculated from investment/capacity", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] }, - "provenance": "Derived", - "note": "Calculated from investment/capacity", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "lifetime": { - "quantity": { - "value": 30, - "unit": "years" + "lifetime": { + "quantity": { + "value": 30, + "unit": "years" + }, + "provenance": "Manufacturer specification", + "note": "With performance degradation guarantee", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] }, - "provenance": "Manufacturer specification", - "note": "With performance degradation guarantee", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "wacc": { - "quantity": { - "value": 0.05, - "unit": "fraction" - }, - "provenance": "Financial analysis", - "note": "Nominal weighted average cost of capital", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] + "wacc": { + "quantity": { + "value": 0.05, + "unit": "fraction" + }, + "provenance": "Financial analysis", + "note": "Nominal weighted average cost of capital", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] + } } }, { "region": "DEU", "case": "example-project", "year": 2022, - "technology": "Solar photovoltaics", + "name": "Solar photovoltaics", "detailed_technology": "Si-HC", - "capacity": { - "quantity": { - "value": 1.0, - "unit": "MW" - }, - "provenance": "Model calculation", - "note": "Average capacity factor of 25% assumed", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "investment": { - "quantity": { - "value": 350, - "unit": "EUR_2022/KW_el" + "parameters": { + "capacity": { + "quantity": { + "value": 1.0, + "unit": "MW" + }, + "provenance": "Model calculation", + "note": "Average capacity factor of 25% assumed", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] }, - "provenance": "Industry report", - "note": "Average overnight cost for another tech", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "specific_investment": { - "quantity": { - "value": 0.95, - "unit": "USD/W" + "investment": { + "quantity": { + "value": 350, + "unit": "EUR_2022/KW_el" + }, + "provenance": "Industry report", + "note": "Average overnight cost for another tech", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] }, - "provenance": "Derived", - "note": "Calculated from investment/capacity", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "lifetime": { - "quantity": { - "value": 30, - "unit": "years" + "specific_investment": { + "quantity": { + "value": 0.95, + "unit": "USD/W" + }, + "provenance": "Derived", + "note": "Calculated from investment/capacity", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] }, - "provenance": "Manufacturer specification", - "note": "With performance degradation guarantee", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "wacc": { - "quantity": { - "value": 0.05, - "unit": "fraction" + "lifetime": { + "quantity": { + "value": 30, + "unit": "years" + }, + "provenance": "Manufacturer specification", + "note": "With performance degradation guarantee", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] }, - "provenance": "Financial analysis", - "note": "Nominal weighted average cost of capital", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] + "wacc": { + "quantity": { + "value": 0.05, + "unit": "fraction" + }, + "provenance": "Financial analysis", + "note": "Nominal weighted average cost of capital", + "sources": [ + { + "title": "example04", + "authors": "Open Energy Transition gGmbH", + "url": "https://openenergytransition.org/outputs.html" + } + ] + } } } ] diff --git a/test/test_datapackage.py b/test/test_datapackage.py new file mode 100644 index 00000000..5e84e940 --- /dev/null +++ b/test/test_datapackage.py @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +"""Test the initialization and methods of the Datapackage class.""" + +import pathlib + +import technologydata + +path_cwd = pathlib.Path.cwd() + + +def test_get_source_collection() -> None: + """Test how the sources attributes is extracted from a TechnologyCollection instance.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example_03", + "technologies.json", + ) + technologies_collection = technologydata.TechnologyCollection.from_json(input_file) + data_package = technologydata.DataPackage( + technologies=technologies_collection, + ) + data_package.get_source_collection() + assert isinstance(data_package.sources, technologydata.SourceCollection) + assert len(data_package.sources) == 2 diff --git a/test/test_source.py b/test/test_source.py index f2a521fc..3751b8e2 100644 --- a/test/test_source.py +++ b/test/test_source.py @@ -14,6 +14,102 @@ path_cwd = pathlib.Path.cwd() +@pytest.mark.parametrize( + "example_source, expected_equal", + [ + ( + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url": "https:download", + "source_url_archive": "http:/3273/download", + "source_url_date": "2025-05-22 15:08:02", + "source_url_date_archive": "2025-05-22 15:08:02", + }, + False, # Expect not equal + ), + ( + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + "source_url": "https:download", + "source_url_archive": "http:/3273/download", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + True, # Expect equal + ), + ( + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + }, + False, # Expect not equal + ), + ], + indirect=["example_source"], +) # type: ignore +def test_eq(example_source: technologydata.Source, expected_equal: bool) -> None: + """Check if the override method __eq__ works as expected.""" + reference_source = technologydata.Source( + title="tech_data_generation", + authors="Danish Energy Agency", + url="https:download", + url_archive="http:/3273/download", + url_date="2025-05-06 16:02:04", + url_date_archive="2025-05-06 16:02:04", + ) + assert (example_source == reference_source) == expected_equal + + +@pytest.mark.parametrize( + "example_source", + [ + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url_archive": "http:/3273/download", + "source_url_date_archive": "2025-05-22 15:08:02", + }, + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + "source_url": "https:download", + "source_url_archive": "http:/3273/download", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + ], + indirect=["example_source"], +) # type: ignore +def test_hash(example_source: technologydata.Source) -> None: + """Check if the override method __hash__ works as expected.""" + assert isinstance(hash(example_source), int) + + +@pytest.mark.parametrize( + "example_source, expected_string", + [ + ( + { + "source_title": "OET project page", + "source_authors": "Open Energy Transition gGmbH", + "source_url": "https://outputs.html", + "source_url_archive": "https:archived.html", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + "'Open Energy Transition gGmbH': 'OET project page', from url 'https://outputs.html', last accessed on '2025-05-06 16:02:04', archived at 'https:archived.html', on '2025-05-06 16:02:04'.", + ) + ], + indirect=["example_source"], +) # type: ignore +def test_str(example_source: technologydata.Source, expected_string: str) -> None: + """Check if the override method __str__ works as expected.""" + # Ensure the snapshot is created + assert str(example_source) == expected_string + + @pytest.mark.parametrize( "example_source", [ @@ -34,7 +130,7 @@ "source_url_date_archive": "2025-05-06 16:02:04", }, ], - indirect=True, + indirect=["example_source"], ) # type: ignore def test_retrieve_from_wayback(example_source: technologydata.Source) -> None: """Check if the example source is downloaded from the Internet Archive Wayback Machine.""" diff --git a/test/test_source_collection.py b/test/test_source_collection.py index 41d65f68..fd75356b 100644 --- a/test/test_source_collection.py +++ b/test/test_source_collection.py @@ -14,6 +14,36 @@ path_cwd = pathlib.Path.cwd() +@pytest.mark.parametrize( + "example_source_collection, expected_string", + [ + ( + [ + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url_date": "2025-05-22 15:08:02", + }, + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + ], + "SourceCollection with 2 sources: " + "'NREL/ATB': 'atb_nrel', last accessed on '2025-05-22 15:08:02', " + "'Danish Energy Agency': 'tech_data_generation', on '2025-05-06 16:02:04'.", + ), + ], + indirect=["example_source_collection"], +) # type: ignore +def test_str( + example_source_collection: technologydata.SourceCollection, expected_string: str +) -> None: + """Check if the example source collection is cast to string as expected.""" + assert str(example_source_collection) == expected_string + + @pytest.mark.parametrize( "example_source_collection", [ @@ -28,7 +58,7 @@ }, ] ], - indirect=True, + indirect=["example_source_collection"], ) # type: ignore def test_example_source_collection( example_source_collection: technologydata.SourceCollection, @@ -69,7 +99,7 @@ def test_example_source_collection( }, ], ], - indirect=True, + indirect=["example_source_collection"], ) # type: ignore def test_retrieve_all_from_wayback( example_source_collection: technologydata.SourceCollection, @@ -118,7 +148,7 @@ def test_retrieve_all_from_wayback( }, ], ], - indirect=True, + indirect=["example_source_collection"], ) # type: ignore def test_to_csv(example_source_collection: technologydata.SourceCollection) -> None: """Check if the example source collection is exported to CSV.""" @@ -150,12 +180,12 @@ def test_to_csv(example_source_collection: technologydata.SourceCollection) -> N }, ], ], - indirect=True, + indirect=["example_source_collection"], ) # type: ignore def test_to_json(example_source_collection: technologydata.SourceCollection) -> None: """Check if the example source collection is exported to JSON.""" output_file = pathlib.Path(path_cwd, "sources.json") - schema_file = pathlib.Path(path_cwd, "source_collection_schema.json") + schema_file = pathlib.Path(path_cwd, "sources.schema.json") example_source_collection.to_json(pathlib.Path(output_file)) assert output_file.is_file() assert schema_file.is_file() @@ -185,7 +215,7 @@ def test_to_json(example_source_collection: technologydata.SourceCollection) -> }, ], ], - indirect=True, + indirect=["example_source_collection"], ) # type: ignore def test_to_dataframe( example_source_collection: technologydata.SourceCollection, @@ -195,11 +225,11 @@ def test_to_dataframe( def test_from_json() -> None: - """Check if the example source collection is exported to JSON.""" + """Check if the example source collection is imported from JSON.""" input_file = pathlib.Path( path_cwd, "test", "test_data", "solar_photovoltaics_example_03", "sources.json" ) - source_collection = technologydata.SourceCollection.from_json(input_file) + source_collection = technologydata.SourceCollection.from_json(file_path=input_file) assert isinstance(source_collection, technologydata.SourceCollection) assert len(source_collection) == 2 @@ -214,6 +244,6 @@ def test_get(title_pattern: str, authors_pattern: str) -> None: path_cwd, "test", "test_data", "solar_photovoltaics_example_03", "sources.json" ) - source_collection = technologydata.SourceCollection.from_json(input_file) + source_collection = technologydata.SourceCollection.from_json(file_path=input_file) result = source_collection.get(title=title_pattern, authors=authors_pattern) assert len(result.sources) == 1 diff --git a/test/test_technology_collection.py b/test/test_technology_collection.py new file mode 100644 index 00000000..3e1e7fb5 --- /dev/null +++ b/test/test_technology_collection.py @@ -0,0 +1,106 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +"""Test the initialization and methods of the TechnologyCollection class.""" + +import pathlib + +import pandas +import pytest + +import technologydata + +path_cwd = pathlib.Path.cwd() + + +def test_to_csv() -> None: + """Check if the example technology collection is exported to CSV.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example_03", + "technologies.json", + ) + technology_collection = technologydata.TechnologyCollection.from_json(input_file) + output_file = pathlib.Path(path_cwd, "technologies.csv") + technology_collection.to_csv(path_or_buf=output_file) + assert output_file.is_file() + output_file.unlink(missing_ok=True) + + +def test_to_dataframe() -> None: + """Check if the example technology collection is exported to pandas dataframe.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example_03", + "technologies.json", + ) + technology_collection = technologydata.TechnologyCollection.from_json(input_file) + assert isinstance(technology_collection.to_dataframe(), pandas.DataFrame) + + +def test_to_json() -> None: + """Check if the example technology collection is exported to JSON.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example_03", + "technologies.json", + ) + technology_collection = technologydata.TechnologyCollection.from_json(input_file) + output_file = pathlib.Path(path_cwd, "technologies.json") + schema_file = pathlib.Path(path_cwd, "technologies.schema.json") + technology_collection.to_json(pathlib.Path(output_file)) + assert output_file.is_file() + assert schema_file.is_file() + output_file.unlink(missing_ok=True) + schema_file.unlink(missing_ok=True) + + +def test_from_json() -> None: + """Check if the example technology collection is imported from JSON.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example_03", + "technologies.json", + ) + technology_collection = technologydata.TechnologyCollection.from_json(input_file) + assert isinstance(technology_collection, technologydata.TechnologyCollection) + assert len(technology_collection) == 2 + + +@pytest.mark.parametrize( + "name, region, year, case, detailed_technology", + [ + ["Solar photovoltaics", "DEU", 2022, "example-scenario", "Si-HC"], + ["Solar photovoltaics", "DEU", 2022, "example-project", "Si-HC"], + ], +) # type: ignore +def test_get( + name: str, region: str, year: int, case: str, detailed_technology: str +) -> None: + """Check if the example technology collection is filtered as requested.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example_03", + "technologies.json", + ) + technologies_collection = technologydata.TechnologyCollection.from_json(input_file) + result = technologies_collection.get( + name=name, + region=region, + year=year, + case=case, + detailed_technology=detailed_technology, + ) + assert isinstance(result, technologydata.TechnologyCollection) + assert len(result.technologies) == 1 From 506f17f8efec48541faaf977f8cfccf5435b2a45 Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Mon, 28 Jul 2025 18:59:44 +0200 Subject: [PATCH 04/30] config: add pytest-xdist and pytest-cov (#16) --- pyproject.toml | 13 +- uv.lock | 1383 +++++------------------------------------------- 2 files changed, 143 insertions(+), 1253 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 535a6247..b6b18868 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,9 +30,12 @@ dependencies = [ "ipykernel>=6.29.5", # this one can go into optional as "dev" "mypy>=1.15.0", "pandas>=2.2.3", - "pre-commit>=4.2.0", # this one can go into optional as "dev" + "pre-commit>=4.2.0", # this one can go into optional as "dev" "pytest>=8.3.5", # this one can go into optional as "dev" + "pytest-cov>=6.2.1", # this one can go into optional as "dev" + "pytest-xdist>=3.8.0", # this one can go into optional as "dev" "requests>=2.32.3", + "reuse>=5.0.2", "savepagenow>=1.3.0", ] @@ -53,9 +56,15 @@ docs = [ "mkdocstrings-python>=1.16.11", ] +[tool.pytest.ini_options] +testpaths = "test" +addopts = "--cov=technologydata --cov-report=term" +filterwarnings = [ + "ignore::RuntimeWarning", + "ignore:numpy.ndarray size changed*:RuntimeWarning" +] # Setuptools_scm settings - [tool.uv] package = true diff --git a/uv.lock b/uv.lock index 9a3db3d3..91c5b29f 100644 --- a/uv.lock +++ b/uv.lock @@ -2,15 +2,6 @@ version = 1 revision = 2 requires-python = ">=3.12" -[[package]] -name = "annotated-types" -version = "0.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload_time = "2024-05-20T21:33:25.928Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload_time = "2024-05-20T21:33:24.1Z" }, -] - [[package]] name = "appnope" version = "0.1.4" @@ -62,16 +53,24 @@ wheels = [ ] [[package]] -name = "beautifulsoup4" -version = "4.13.4" +name = "binaryornot" +version = "0.4.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "soupsieve" }, - { name = "typing-extensions" }, + { name = "chardet" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload_time = "2025-04-15T17:05:13.836Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/fe/7ebfec74d49f97fc55cd38240c7a7d08134002b1e14be8c3897c0dd5e49b/binaryornot-0.4.4.tar.gz", hash = "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", size = 371054, upload_time = "2017-08-03T15:55:25.08Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload_time = "2025-04-15T17:05:12.221Z" }, + { url = "https://files.pythonhosted.org/packages/24/7e/f7b6f453e6481d1e233540262ccbfcf89adcd43606f44a028d7f5fae5eb2/binaryornot-0.4.4-py2.py3-none-any.whl", hash = "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4", size = 9006, upload_time = "2017-08-03T15:55:31.23Z" }, +] + +[[package]] +name = "boolean-py" +version = "5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c4/cf/85379f13b76f3a69bca86b60237978af17d6aa0bc5998978c3b8cf05abb2/boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95", size = 37047, upload_time = "2025-04-03T10:39:49.734Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/ca/78d423b324b8d77900030fa59c4aa9054261ef0925631cd2501dd015b7b7/boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9", size = 26577, upload_time = "2025-04-03T10:39:48.449Z" }, ] [[package]] @@ -203,44 +202,67 @@ wheels = [ ] [[package]] -name = "contourpy" -version = "1.3.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload_time = "2025-04-15T17:47:53.79Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload_time = "2025-04-15T17:37:03.105Z" }, - { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload_time = "2025-04-15T17:37:07.026Z" }, - { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688, upload_time = "2025-04-15T17:37:11.481Z" }, - { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331, upload_time = "2025-04-15T17:37:18.212Z" }, - { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963, upload_time = "2025-04-15T17:37:22.76Z" }, - { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681, upload_time = "2025-04-15T17:37:33.001Z" }, - { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674, upload_time = "2025-04-15T17:37:48.64Z" }, - { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480, upload_time = "2025-04-15T17:38:06.7Z" }, - { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489, upload_time = "2025-04-15T17:38:10.338Z" }, - { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042, upload_time = "2025-04-15T17:38:14.239Z" }, - { url = "https://files.pythonhosted.org/packages/2e/61/5673f7e364b31e4e7ef6f61a4b5121c5f170f941895912f773d95270f3a2/contourpy-1.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de39db2604ae755316cb5967728f4bea92685884b1e767b7c24e983ef5f771cb", size = 271630, upload_time = "2025-04-15T17:38:19.142Z" }, - { url = "https://files.pythonhosted.org/packages/ff/66/a40badddd1223822c95798c55292844b7e871e50f6bfd9f158cb25e0bd39/contourpy-1.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f9e896f447c5c8618f1edb2bafa9a4030f22a575ec418ad70611450720b5b08", size = 255670, upload_time = "2025-04-15T17:38:23.688Z" }, - { url = "https://files.pythonhosted.org/packages/1e/c7/cf9fdee8200805c9bc3b148f49cb9482a4e3ea2719e772602a425c9b09f8/contourpy-1.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71e2bd4a1c4188f5c2b8d274da78faab884b59df20df63c34f74aa1813c4427c", size = 306694, upload_time = "2025-04-15T17:38:28.238Z" }, - { url = "https://files.pythonhosted.org/packages/dd/e7/ccb9bec80e1ba121efbffad7f38021021cda5be87532ec16fd96533bb2e0/contourpy-1.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de425af81b6cea33101ae95ece1f696af39446db9682a0b56daaa48cfc29f38f", size = 345986, upload_time = "2025-04-15T17:38:33.502Z" }, - { url = "https://files.pythonhosted.org/packages/dc/49/ca13bb2da90391fa4219fdb23b078d6065ada886658ac7818e5441448b78/contourpy-1.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:977e98a0e0480d3fe292246417239d2d45435904afd6d7332d8455981c408b85", size = 318060, upload_time = "2025-04-15T17:38:38.672Z" }, - { url = "https://files.pythonhosted.org/packages/c8/65/5245ce8c548a8422236c13ffcdcdada6a2a812c361e9e0c70548bb40b661/contourpy-1.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:434f0adf84911c924519d2b08fc10491dd282b20bdd3fa8f60fd816ea0b48841", size = 322747, upload_time = "2025-04-15T17:38:43.712Z" }, - { url = "https://files.pythonhosted.org/packages/72/30/669b8eb48e0a01c660ead3752a25b44fdb2e5ebc13a55782f639170772f9/contourpy-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c66c4906cdbc50e9cba65978823e6e00b45682eb09adbb78c9775b74eb222422", size = 1308895, upload_time = "2025-04-15T17:39:00.224Z" }, - { url = "https://files.pythonhosted.org/packages/05/5a/b569f4250decee6e8d54498be7bdf29021a4c256e77fe8138c8319ef8eb3/contourpy-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b7fc0cd78ba2f4695fd0a6ad81a19e7e3ab825c31b577f384aa9d7817dc3bef", size = 1379098, upload_time = "2025-04-15T17:43:29.649Z" }, - { url = "https://files.pythonhosted.org/packages/19/ba/b227c3886d120e60e41b28740ac3617b2f2b971b9f601c835661194579f1/contourpy-1.3.2-cp313-cp313-win32.whl", hash = "sha256:15ce6ab60957ca74cff444fe66d9045c1fd3e92c8936894ebd1f3eef2fff075f", size = 178535, upload_time = "2025-04-15T17:44:44.532Z" }, - { url = "https://files.pythonhosted.org/packages/12/6e/2fed56cd47ca739b43e892707ae9a13790a486a3173be063681ca67d2262/contourpy-1.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e1578f7eafce927b168752ed7e22646dad6cd9bca673c60bff55889fa236ebf9", size = 223096, upload_time = "2025-04-15T17:44:48.194Z" }, - { url = "https://files.pythonhosted.org/packages/54/4c/e76fe2a03014a7c767d79ea35c86a747e9325537a8b7627e0e5b3ba266b4/contourpy-1.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f", size = 285090, upload_time = "2025-04-15T17:43:34.084Z" }, - { url = "https://files.pythonhosted.org/packages/7b/e2/5aba47debd55d668e00baf9651b721e7733975dc9fc27264a62b0dd26eb8/contourpy-1.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c85bb486e9be652314bb5b9e2e3b0d1b2e643d5eec4992c0fbe8ac71775da739", size = 268643, upload_time = "2025-04-15T17:43:38.626Z" }, - { url = "https://files.pythonhosted.org/packages/a1/37/cd45f1f051fe6230f751cc5cdd2728bb3a203f5619510ef11e732109593c/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:745b57db7758f3ffc05a10254edd3182a2a83402a89c00957a8e8a22f5582823", size = 310443, upload_time = "2025-04-15T17:43:44.522Z" }, - { url = "https://files.pythonhosted.org/packages/8b/a2/36ea6140c306c9ff6dd38e3bcec80b3b018474ef4d17eb68ceecd26675f4/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970e9173dbd7eba9b4e01aab19215a48ee5dd3f43cef736eebde064a171f89a5", size = 349865, upload_time = "2025-04-15T17:43:49.545Z" }, - { url = "https://files.pythonhosted.org/packages/95/b7/2fc76bc539693180488f7b6cc518da7acbbb9e3b931fd9280504128bf956/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6c4639a9c22230276b7bffb6a850dfc8258a2521305e1faefe804d006b2e532", size = 321162, upload_time = "2025-04-15T17:43:54.203Z" }, - { url = "https://files.pythonhosted.org/packages/f4/10/76d4f778458b0aa83f96e59d65ece72a060bacb20cfbee46cf6cd5ceba41/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc829960f34ba36aad4302e78eabf3ef16a3a100863f0d4eeddf30e8a485a03b", size = 327355, upload_time = "2025-04-15T17:44:01.025Z" }, - { url = "https://files.pythonhosted.org/packages/43/a3/10cf483ea683f9f8ab096c24bad3cce20e0d1dd9a4baa0e2093c1c962d9d/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d32530b534e986374fc19eaa77fcb87e8a99e5431499949b828312bdcd20ac52", size = 1307935, upload_time = "2025-04-15T17:44:17.322Z" }, - { url = "https://files.pythonhosted.org/packages/78/73/69dd9a024444489e22d86108e7b913f3528f56cfc312b5c5727a44188471/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd", size = 1372168, upload_time = "2025-04-15T17:44:33.43Z" }, - { url = "https://files.pythonhosted.org/packages/0f/1b/96d586ccf1b1a9d2004dd519b25fbf104a11589abfd05484ff12199cca21/contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1", size = 189550, upload_time = "2025-04-15T17:44:37.092Z" }, - { url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214, upload_time = "2025-04-15T17:44:40.827Z" }, +name = "coverage" +version = "7.10.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/87/0e/66dbd4c6a7f0758a8d18044c048779ba21fb94856e1edcf764bd5403e710/coverage-7.10.1.tar.gz", hash = "sha256:ae2b4856f29ddfe827106794f3589949a57da6f0d38ab01e24ec35107979ba57", size = 819938, upload_time = "2025-07-27T14:13:39.045Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/3f/b051feeb292400bd22d071fdf933b3ad389a8cef5c80c7866ed0c7414b9e/coverage-7.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b7dc7f0a75a7eaa4584e5843c873c561b12602439d2351ee28c7478186c4da4", size = 214934, upload_time = "2025-07-27T14:11:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e4/a61b27d5c4c2d185bdfb0bfe9d15ab4ac4f0073032665544507429ae60eb/coverage-7.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:607f82389f0ecafc565813aa201a5cade04f897603750028dd660fb01797265e", size = 215173, upload_time = "2025-07-27T14:11:38.005Z" }, + { url = "https://files.pythonhosted.org/packages/8a/01/40a6ee05b60d02d0bc53742ad4966e39dccd450aafb48c535a64390a3552/coverage-7.10.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f7da31a1ba31f1c1d4d5044b7c5813878adae1f3af8f4052d679cc493c7328f4", size = 246190, upload_time = "2025-07-27T14:11:39.887Z" }, + { url = "https://files.pythonhosted.org/packages/11/ef/a28d64d702eb583c377255047281305dc5a5cfbfb0ee36e721f78255adb6/coverage-7.10.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:51fe93f3fe4f5d8483d51072fddc65e717a175490804e1942c975a68e04bf97a", size = 248618, upload_time = "2025-07-27T14:11:41.841Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ad/73d018bb0c8317725370c79d69b5c6e0257df84a3b9b781bda27a438a3be/coverage-7.10.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3e59d00830da411a1feef6ac828b90bbf74c9b6a8e87b8ca37964925bba76dbe", size = 250081, upload_time = "2025-07-27T14:11:43.705Z" }, + { url = "https://files.pythonhosted.org/packages/2d/dd/496adfbbb4503ebca5d5b2de8bed5ec00c0a76558ffc5b834fd404166bc9/coverage-7.10.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:924563481c27941229cb4e16eefacc35da28563e80791b3ddc5597b062a5c386", size = 247990, upload_time = "2025-07-27T14:11:45.244Z" }, + { url = "https://files.pythonhosted.org/packages/18/3c/a9331a7982facfac0d98a4a87b36ae666fe4257d0f00961a3a9ef73e015d/coverage-7.10.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ca79146ee421b259f8131f153102220b84d1a5e6fb9c8aed13b3badfd1796de6", size = 246191, upload_time = "2025-07-27T14:11:47.093Z" }, + { url = "https://files.pythonhosted.org/packages/62/0c/75345895013b83f7afe92ec595e15a9a525ede17491677ceebb2ba5c3d85/coverage-7.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2b225a06d227f23f386fdc0eab471506d9e644be699424814acc7d114595495f", size = 247400, upload_time = "2025-07-27T14:11:48.643Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a9/98b268cfc5619ef9df1d5d34fee408ecb1542d9fd43d467e5c2f28668cd4/coverage-7.10.1-cp312-cp312-win32.whl", hash = "sha256:5ba9a8770effec5baaaab1567be916c87d8eea0c9ad11253722d86874d885eca", size = 217338, upload_time = "2025-07-27T14:11:50.258Z" }, + { url = "https://files.pythonhosted.org/packages/fe/31/22a5440e4d1451f253c5cd69fdcead65e92ef08cd4ec237b8756dc0b20a7/coverage-7.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:9eb245a8d8dd0ad73b4062135a251ec55086fbc2c42e0eb9725a9b553fba18a3", size = 218125, upload_time = "2025-07-27T14:11:52.034Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2b/40d9f0ce7ee839f08a43c5bfc9d05cec28aaa7c9785837247f96cbe490b9/coverage-7.10.1-cp312-cp312-win_arm64.whl", hash = "sha256:7718060dd4434cc719803a5e526838a5d66e4efa5dc46d2b25c21965a9c6fcc4", size = 216523, upload_time = "2025-07-27T14:11:53.965Z" }, + { url = "https://files.pythonhosted.org/packages/ef/72/135ff5fef09b1ffe78dbe6fcf1e16b2e564cd35faeacf3d63d60d887f12d/coverage-7.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ebb08d0867c5a25dffa4823377292a0ffd7aaafb218b5d4e2e106378b1061e39", size = 214960, upload_time = "2025-07-27T14:11:55.959Z" }, + { url = "https://files.pythonhosted.org/packages/b1/aa/73a5d1a6fc08ca709a8177825616aa95ee6bf34d522517c2595484a3e6c9/coverage-7.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f32a95a83c2e17422f67af922a89422cd24c6fa94041f083dd0bb4f6057d0bc7", size = 215220, upload_time = "2025-07-27T14:11:57.899Z" }, + { url = "https://files.pythonhosted.org/packages/8d/40/3124fdd45ed3772a42fc73ca41c091699b38a2c3bd4f9cb564162378e8b6/coverage-7.10.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c4c746d11c8aba4b9f58ca8bfc6fbfd0da4efe7960ae5540d1a1b13655ee8892", size = 245772, upload_time = "2025-07-27T14:12:00.422Z" }, + { url = "https://files.pythonhosted.org/packages/42/62/a77b254822efa8c12ad59e8039f2bc3df56dc162ebda55e1943e35ba31a5/coverage-7.10.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7f39edd52c23e5c7ed94e0e4bf088928029edf86ef10b95413e5ea670c5e92d7", size = 248116, upload_time = "2025-07-27T14:12:03.099Z" }, + { url = "https://files.pythonhosted.org/packages/1d/01/8101f062f472a3a6205b458d18ef0444a63ae5d36a8a5ed5dd0f6167f4db/coverage-7.10.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab6e19b684981d0cd968906e293d5628e89faacb27977c92f3600b201926b994", size = 249554, upload_time = "2025-07-27T14:12:04.668Z" }, + { url = "https://files.pythonhosted.org/packages/8f/7b/e51bc61573e71ff7275a4f167aecbd16cb010aefdf54bcd8b0a133391263/coverage-7.10.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5121d8cf0eacb16133501455d216bb5f99899ae2f52d394fe45d59229e6611d0", size = 247766, upload_time = "2025-07-27T14:12:06.234Z" }, + { url = "https://files.pythonhosted.org/packages/4b/71/1c96d66a51d4204a9d6d12df53c4071d87e110941a2a1fe94693192262f5/coverage-7.10.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:df1c742ca6f46a6f6cbcaef9ac694dc2cb1260d30a6a2f5c68c5f5bcfee1cfd7", size = 245735, upload_time = "2025-07-27T14:12:08.305Z" }, + { url = "https://files.pythonhosted.org/packages/13/d5/efbc2ac4d35ae2f22ef6df2ca084c60e13bd9378be68655e3268c80349ab/coverage-7.10.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:40f9a38676f9c073bf4b9194707aa1eb97dca0e22cc3766d83879d72500132c7", size = 247118, upload_time = "2025-07-27T14:12:09.903Z" }, + { url = "https://files.pythonhosted.org/packages/d1/22/073848352bec28ca65f2b6816b892fcf9a31abbef07b868487ad15dd55f1/coverage-7.10.1-cp313-cp313-win32.whl", hash = "sha256:2348631f049e884839553b9974f0821d39241c6ffb01a418efce434f7eba0fe7", size = 217381, upload_time = "2025-07-27T14:12:11.535Z" }, + { url = "https://files.pythonhosted.org/packages/b7/df/df6a0ff33b042f000089bd11b6bb034bab073e2ab64a56e78ed882cba55d/coverage-7.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:4072b31361b0d6d23f750c524f694e1a417c1220a30d3ef02741eed28520c48e", size = 218152, upload_time = "2025-07-27T14:12:13.182Z" }, + { url = "https://files.pythonhosted.org/packages/30/e3/5085ca849a40ed6b47cdb8f65471c2f754e19390b5a12fa8abd25cbfaa8f/coverage-7.10.1-cp313-cp313-win_arm64.whl", hash = "sha256:3e31dfb8271937cab9425f19259b1b1d1f556790e98eb266009e7a61d337b6d4", size = 216559, upload_time = "2025-07-27T14:12:14.807Z" }, + { url = "https://files.pythonhosted.org/packages/cc/93/58714efbfdeb547909feaabe1d67b2bdd59f0597060271b9c548d5efb529/coverage-7.10.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1c4f679c6b573a5257af6012f167a45be4c749c9925fd44d5178fd641ad8bf72", size = 215677, upload_time = "2025-07-27T14:12:16.68Z" }, + { url = "https://files.pythonhosted.org/packages/c0/0c/18eaa5897e7e8cb3f8c45e563e23e8a85686b4585e29d53cacb6bc9cb340/coverage-7.10.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:871ebe8143da284bd77b84a9136200bd638be253618765d21a1fce71006d94af", size = 215899, upload_time = "2025-07-27T14:12:18.758Z" }, + { url = "https://files.pythonhosted.org/packages/84/c1/9d1affacc3c75b5a184c140377701bbf14fc94619367f07a269cd9e4fed6/coverage-7.10.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:998c4751dabf7d29b30594af416e4bf5091f11f92a8d88eb1512c7ba136d1ed7", size = 257140, upload_time = "2025-07-27T14:12:20.357Z" }, + { url = "https://files.pythonhosted.org/packages/3d/0f/339bc6b8fa968c346df346068cca1f24bdea2ddfa93bb3dc2e7749730962/coverage-7.10.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:780f750a25e7749d0af6b3631759c2c14f45de209f3faaa2398312d1c7a22759", size = 259005, upload_time = "2025-07-27T14:12:22.007Z" }, + { url = "https://files.pythonhosted.org/packages/c8/22/89390864b92ea7c909079939b71baba7e5b42a76bf327c1d615bd829ba57/coverage-7.10.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:590bdba9445df4763bdbebc928d8182f094c1f3947a8dc0fc82ef014dbdd8324", size = 261143, upload_time = "2025-07-27T14:12:23.746Z" }, + { url = "https://files.pythonhosted.org/packages/2c/56/3d04d89017c0c41c7a71bd69b29699d919b6bbf2649b8b2091240b97dd6a/coverage-7.10.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b2df80cb6a2af86d300e70acb82e9b79dab2c1e6971e44b78dbfc1a1e736b53", size = 258735, upload_time = "2025-07-27T14:12:25.73Z" }, + { url = "https://files.pythonhosted.org/packages/cb/40/312252c8afa5ca781063a09d931f4b9409dc91526cd0b5a2b84143ffafa2/coverage-7.10.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d6a558c2725bfb6337bf57c1cd366c13798bfd3bfc9e3dd1f4a6f6fc95a4605f", size = 256871, upload_time = "2025-07-27T14:12:27.767Z" }, + { url = "https://files.pythonhosted.org/packages/1f/2b/564947d5dede068215aaddb9e05638aeac079685101462218229ddea9113/coverage-7.10.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e6150d167f32f2a54690e572e0a4c90296fb000a18e9b26ab81a6489e24e78dd", size = 257692, upload_time = "2025-07-27T14:12:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/93/1b/c8a867ade85cb26d802aea2209b9c2c80613b9c122baa8c8ecea6799648f/coverage-7.10.1-cp313-cp313t-win32.whl", hash = "sha256:d946a0c067aa88be4a593aad1236493313bafaa27e2a2080bfe88db827972f3c", size = 218059, upload_time = "2025-07-27T14:12:31.076Z" }, + { url = "https://files.pythonhosted.org/packages/a1/fe/cd4ab40570ae83a516bf5e754ea4388aeedd48e660e40c50b7713ed4f930/coverage-7.10.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e37c72eaccdd5ed1130c67a92ad38f5b2af66eeff7b0abe29534225db2ef7b18", size = 219150, upload_time = "2025-07-27T14:12:32.746Z" }, + { url = "https://files.pythonhosted.org/packages/8d/16/6e5ed5854be6d70d0c39e9cb9dd2449f2c8c34455534c32c1a508c7dbdb5/coverage-7.10.1-cp313-cp313t-win_arm64.whl", hash = "sha256:89ec0ffc215c590c732918c95cd02b55c7d0f569d76b90bb1a5e78aa340618e4", size = 217014, upload_time = "2025-07-27T14:12:34.406Z" }, + { url = "https://files.pythonhosted.org/packages/54/8e/6d0bfe9c3d7121cf936c5f8b03e8c3da1484fb801703127dba20fb8bd3c7/coverage-7.10.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:166d89c57e877e93d8827dac32cedae6b0277ca684c6511497311249f35a280c", size = 214951, upload_time = "2025-07-27T14:12:36.069Z" }, + { url = "https://files.pythonhosted.org/packages/f2/29/e3e51a8c653cf2174c60532aafeb5065cea0911403fa144c9abe39790308/coverage-7.10.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:bed4a2341b33cd1a7d9ffc47df4a78ee61d3416d43b4adc9e18b7d266650b83e", size = 215229, upload_time = "2025-07-27T14:12:37.759Z" }, + { url = "https://files.pythonhosted.org/packages/e0/59/3c972080b2fa18b6c4510201f6d4dc87159d450627d062cd9ad051134062/coverage-7.10.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ddca1e4f5f4c67980533df01430184c19b5359900e080248bbf4ed6789584d8b", size = 245738, upload_time = "2025-07-27T14:12:39.453Z" }, + { url = "https://files.pythonhosted.org/packages/2e/04/fc0d99d3f809452654e958e1788454f6e27b34e43f8f8598191c8ad13537/coverage-7.10.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:37b69226001d8b7de7126cad7366b0778d36777e4d788c66991455ba817c5b41", size = 248045, upload_time = "2025-07-27T14:12:41.387Z" }, + { url = "https://files.pythonhosted.org/packages/5e/2e/afcbf599e77e0dfbf4c97197747250d13d397d27e185b93987d9eaac053d/coverage-7.10.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2f22102197bcb1722691296f9e589f02b616f874e54a209284dd7b9294b0b7f", size = 249666, upload_time = "2025-07-27T14:12:43.056Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ae/bc47f7f8ecb7a06cbae2bf86a6fa20f479dd902bc80f57cff7730438059d/coverage-7.10.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1e0c768b0f9ac5839dac5cf88992a4bb459e488ee8a1f8489af4cb33b1af00f1", size = 247692, upload_time = "2025-07-27T14:12:44.83Z" }, + { url = "https://files.pythonhosted.org/packages/b6/26/cbfa3092d31ccba8ba7647e4d25753263e818b4547eba446b113d7d1efdf/coverage-7.10.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:991196702d5e0b120a8fef2664e1b9c333a81d36d5f6bcf6b225c0cf8b0451a2", size = 245536, upload_time = "2025-07-27T14:12:46.527Z" }, + { url = "https://files.pythonhosted.org/packages/56/77/9c68e92500e6a1c83d024a70eadcc9a173f21aadd73c4675fe64c9c43fdf/coverage-7.10.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ae8e59e5f4fd85d6ad34c2bb9d74037b5b11be072b8b7e9986beb11f957573d4", size = 246954, upload_time = "2025-07-27T14:12:49.279Z" }, + { url = "https://files.pythonhosted.org/packages/7f/a5/ba96671c5a669672aacd9877a5987c8551501b602827b4e84256da2a30a7/coverage-7.10.1-cp314-cp314-win32.whl", hash = "sha256:042125c89cf74a074984002e165d61fe0e31c7bd40ebb4bbebf07939b5924613", size = 217616, upload_time = "2025-07-27T14:12:51.214Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3c/e1e1eb95fc1585f15a410208c4795db24a948e04d9bde818fe4eb893bc85/coverage-7.10.1-cp314-cp314-win_amd64.whl", hash = "sha256:a22c3bfe09f7a530e2c94c87ff7af867259c91bef87ed2089cd69b783af7b84e", size = 218412, upload_time = "2025-07-27T14:12:53.429Z" }, + { url = "https://files.pythonhosted.org/packages/b0/85/7e1e5be2cb966cba95566ba702b13a572ca744fbb3779df9888213762d67/coverage-7.10.1-cp314-cp314-win_arm64.whl", hash = "sha256:ee6be07af68d9c4fca4027c70cea0c31a0f1bc9cb464ff3c84a1f916bf82e652", size = 216776, upload_time = "2025-07-27T14:12:55.482Z" }, + { url = "https://files.pythonhosted.org/packages/62/0f/5bb8f29923141cca8560fe2217679caf4e0db643872c1945ac7d8748c2a7/coverage-7.10.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d24fb3c0c8ff0d517c5ca5de7cf3994a4cd559cde0315201511dbfa7ab528894", size = 215698, upload_time = "2025-07-27T14:12:57.225Z" }, + { url = "https://files.pythonhosted.org/packages/80/29/547038ffa4e8e4d9e82f7dfc6d152f75fcdc0af146913f0ba03875211f03/coverage-7.10.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1217a54cfd79be20512a67ca81c7da3f2163f51bbfd188aab91054df012154f5", size = 215902, upload_time = "2025-07-27T14:12:59.071Z" }, + { url = "https://files.pythonhosted.org/packages/e1/8a/7aaa8fbfaed900147987a424e112af2e7790e1ac9cd92601e5bd4e1ba60a/coverage-7.10.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:51f30da7a52c009667e02f125737229d7d8044ad84b79db454308033a7808ab2", size = 257230, upload_time = "2025-07-27T14:13:01.248Z" }, + { url = "https://files.pythonhosted.org/packages/e5/1d/c252b5ffac44294e23a0d79dd5acf51749b39795ccc898faeabf7bee903f/coverage-7.10.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ed3718c757c82d920f1c94089066225ca2ad7f00bb904cb72b1c39ebdd906ccb", size = 259194, upload_time = "2025-07-27T14:13:03.247Z" }, + { url = "https://files.pythonhosted.org/packages/16/ad/6c8d9f83d08f3bac2e7507534d0c48d1a4f52c18e6f94919d364edbdfa8f/coverage-7.10.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc452481e124a819ced0c25412ea2e144269ef2f2534b862d9f6a9dae4bda17b", size = 261316, upload_time = "2025-07-27T14:13:04.957Z" }, + { url = "https://files.pythonhosted.org/packages/d6/4e/f9bbf3a36c061e2e0e0f78369c006d66416561a33d2bee63345aee8ee65e/coverage-7.10.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9d6f494c307e5cb9b1e052ec1a471060f1dea092c8116e642e7a23e79d9388ea", size = 258794, upload_time = "2025-07-27T14:13:06.715Z" }, + { url = "https://files.pythonhosted.org/packages/87/82/e600bbe78eb2cb0541751d03cef9314bcd0897e8eea156219c39b685f869/coverage-7.10.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:fc0e46d86905ddd16b85991f1f4919028092b4e511689bbdaff0876bd8aab3dd", size = 256869, upload_time = "2025-07-27T14:13:08.933Z" }, + { url = "https://files.pythonhosted.org/packages/ce/5d/2fc9a9236c5268f68ac011d97cd3a5ad16cc420535369bedbda659fdd9b7/coverage-7.10.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80b9ccd82e30038b61fc9a692a8dc4801504689651b281ed9109f10cc9fe8b4d", size = 257765, upload_time = "2025-07-27T14:13:10.778Z" }, + { url = "https://files.pythonhosted.org/packages/8a/05/b4e00b2bd48a2dc8e1c7d2aea7455f40af2e36484ab2ef06deb85883e9fe/coverage-7.10.1-cp314-cp314t-win32.whl", hash = "sha256:e58991a2b213417285ec866d3cd32db17a6a88061a985dbb7e8e8f13af429c47", size = 218420, upload_time = "2025-07-27T14:13:12.882Z" }, + { url = "https://files.pythonhosted.org/packages/77/fb/d21d05f33ea27ece327422240e69654b5932b0b29e7fbc40fbab3cf199bf/coverage-7.10.1-cp314-cp314t-win_amd64.whl", hash = "sha256:e88dd71e4ecbc49d9d57d064117462c43f40a21a1383507811cf834a4a620651", size = 219536, upload_time = "2025-07-27T14:13:14.718Z" }, + { url = "https://files.pythonhosted.org/packages/a6/68/7fea94b141281ed8be3d1d5c4319a97f2befc3e487ce33657fc64db2c45e/coverage-7.10.1-cp314-cp314t-win_arm64.whl", hash = "sha256:1aadfb06a30c62c2eb82322171fe1f7c288c80ca4156d46af0ca039052814bab", size = 217190, upload_time = "2025-07-27T14:13:16.85Z" }, + { url = "https://files.pythonhosted.org/packages/0f/64/922899cff2c0fd3496be83fa8b81230f5a8d82a2ad30f98370b133c2c83b/coverage-7.10.1-py3-none-any.whl", hash = "sha256:fa2a258aa6bf188eb9a8948f7102a83da7c430a0dce918dbd8b60ef8fcb772d7", size = 206597, upload_time = "2025-07-27T14:13:37.221Z" }, ] [[package]] @@ -249,15 +271,6 @@ version = "0.9.5" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/f1/2a/8c3ac3d8bc94e6de8d7ae270bb5bc437b210bb9d6d9e46630c98f4abd20c/csscompressor-0.9.5.tar.gz", hash = "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05", size = 237808, upload_time = "2017-11-26T21:13:08.238Z" } -[[package]] -name = "cycler" -version = "0.12.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload_time = "2023-10-07T05:32:18.335Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload_time = "2023-10-07T05:32:16.783Z" }, -] - [[package]] name = "debugpy" version = "1.8.14" @@ -294,12 +307,12 @@ wheels = [ ] [[package]] -name = "et-xmlfile" -version = "2.0.0" +name = "execnet" +version = "2.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234, upload_time = "2024-10-25T17:25:40.039Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/ff/b4c0dc78fbe20c3e59c0c7334de0c27eb4001a2b2017999af398bf730817/execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3", size = 166524, upload_time = "2024-04-08T09:04:19.245Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059, upload_time = "2024-10-25T17:25:39.051Z" }, + { url = "https://files.pythonhosted.org/packages/43/09/2aea36ff60d16dd8879bdb2f5b3ee0ba8d08cbbdcdfe870e695ce3784385/execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc", size = 40612, upload_time = "2024-04-08T09:04:17.414Z" }, ] [[package]] @@ -320,91 +333,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload_time = "2025-03-14T07:11:39.145Z" }, ] -[[package]] -name = "flexcache" -version = "0.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/55/b0/8a21e330561c65653d010ef112bf38f60890051d244ede197ddaa08e50c1/flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656", size = 15816, upload_time = "2024-03-09T03:21:07.555Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/27/cd/c883e1a7c447479d6e13985565080e3fea88ab5a107c21684c813dba1875/flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32", size = 13263, upload_time = "2024-03-09T03:21:05.635Z" }, -] - -[[package]] -name = "flexparser" -version = "0.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/82/99/b4de7e39e8eaf8207ba1a8fa2241dd98b2ba72ae6e16960d8351736d8702/flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2", size = 31799, upload_time = "2024-11-07T02:00:56.249Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/5e/3be305568fe5f34448807976dc82fc151d76c3e0e03958f34770286278c1/flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846", size = 27625, upload_time = "2024-11-07T02:00:54.523Z" }, -] - -[[package]] -name = "fonttools" -version = "4.58.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/97/5735503e58d3816b0989955ef9b2df07e4c99b246469bd8b3823a14095da/fonttools-4.58.5.tar.gz", hash = "sha256:b2a35b0a19f1837284b3a23dd64fd7761b8911d50911ecd2bdbaf5b2d1b5df9c", size = 3526243, upload_time = "2025-07-03T14:04:47.736Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d6/68/66b498ee66f3e7e92fd68476c2509508082b7f57d68c0cdb4b8573f44331/fonttools-4.58.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c3af3fefaafb570a03051a0d6899b8374dcf8e6a4560e42575843aef33bdbad6", size = 2754751, upload_time = "2025-07-03T14:03:52.976Z" }, - { url = "https://files.pythonhosted.org/packages/f1/1e/edbc14b79290980c3944a1f43098624bc8965f534964aa03d52041f24cb4/fonttools-4.58.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:688137789dbd44e8757ad77b49a771539d8069195ffa9a8bcf18176e90bbd86d", size = 2322342, upload_time = "2025-07-03T14:03:54.957Z" }, - { url = "https://files.pythonhosted.org/packages/c1/d7/3c87cf147185d91c2e946460a5cf68c236427b4a23ab96793ccb7d8017c9/fonttools-4.58.5-cp312-cp312-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:2af65836cf84cd7cb882d0b353bdc73643a497ce23b7414c26499bb8128ca1af", size = 4897011, upload_time = "2025-07-03T14:03:56.829Z" }, - { url = "https://files.pythonhosted.org/packages/a0/d6/fbb44cc85d4195fe54356658bd9f934328b4f74ae14addd90b4b5558b5c9/fonttools-4.58.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d2d79cfeb456bf438cb9fb87437634d4d6f228f27572ca5c5355e58472d5519d", size = 4942291, upload_time = "2025-07-03T14:03:59.204Z" }, - { url = "https://files.pythonhosted.org/packages/4d/c8/453f82e21aedf25cdc2ae619c03a73512398cec9bd8b6c3b1c571e0b6632/fonttools-4.58.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0feac9dda9a48a7a342a593f35d50a5cee2dbd27a03a4c4a5192834a4853b204", size = 4886824, upload_time = "2025-07-03T14:04:01.517Z" }, - { url = "https://files.pythonhosted.org/packages/40/54/e9190001b8e22d123f78925b2f508c866d9d18531694b979277ad45d59b0/fonttools-4.58.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:36555230e168511e83ad8637232268649634b8dfff6ef58f46e1ebc057a041ad", size = 5038510, upload_time = "2025-07-03T14:04:03.917Z" }, - { url = "https://files.pythonhosted.org/packages/cf/9c/07cdad4774841a6304aabae939f8cbb9538cb1d8e97f5016b334da98e73a/fonttools-4.58.5-cp312-cp312-win32.whl", hash = "sha256:26ec05319353842d127bd02516eacb25b97ca83966e40e9ad6fab85cab0576f4", size = 2188459, upload_time = "2025-07-03T14:04:06.103Z" }, - { url = "https://files.pythonhosted.org/packages/0e/4d/1eaaad22781d55f49d1b184563842172aeb6a4fe53c029e503be81114314/fonttools-4.58.5-cp312-cp312-win_amd64.whl", hash = "sha256:778a632e538f82c1920579c0c01566a8f83dc24470c96efbf2fbac698907f569", size = 2236565, upload_time = "2025-07-03T14:04:08.27Z" }, - { url = "https://files.pythonhosted.org/packages/3a/ee/764dd8b99891f815241f449345863cfed9e546923d9cef463f37fd1d7168/fonttools-4.58.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f4b6f1360da13cecc88c0d60716145b31e1015fbe6a59e32f73a4404e2ea92cf", size = 2745867, upload_time = "2025-07-03T14:04:10.586Z" }, - { url = "https://files.pythonhosted.org/packages/e2/23/8fef484c02fef55e226dfeac4339a015c5480b6a496064058491759ac71e/fonttools-4.58.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:4a036822e915692aa2c03e2decc60f49a8190f8111b639c947a4f4e5774d0d7a", size = 2317933, upload_time = "2025-07-03T14:04:12.335Z" }, - { url = "https://files.pythonhosted.org/packages/ab/47/f92b135864fa777e11ad68420bf89446c91a572fe2782745586f8e6aac0c/fonttools-4.58.5-cp313-cp313-manylinux1_x86_64.manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:a6d7709fcf4577b0f294ee6327088884ca95046e1eccde87c53bbba4d5008541", size = 4877844, upload_time = "2025-07-03T14:04:14.58Z" }, - { url = "https://files.pythonhosted.org/packages/3e/65/6c1a83511d8ac32411930495645edb3f8dfabebcb78f08cf6009ba2585ec/fonttools-4.58.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b9b5099ca99b79d6d67162778b1b1616fc0e1de02c1a178248a0da8d78a33852", size = 4940106, upload_time = "2025-07-03T14:04:16.563Z" }, - { url = "https://files.pythonhosted.org/packages/fa/90/df8eb77d6cf266cbbba01866a1349a3e9121e0a63002cf8d6754e994f755/fonttools-4.58.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:3f2c05a8d82a4d15aebfdb3506e90793aea16e0302cec385134dd960647a36c0", size = 4879458, upload_time = "2025-07-03T14:04:19.584Z" }, - { url = "https://files.pythonhosted.org/packages/26/b1/e32f8de51b7afcfea6ad62780da2fa73212c43a32cd8cafcc852189d7949/fonttools-4.58.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:79f0c4b1cc63839b61deeac646d8dba46f8ed40332c2ac1b9997281462c2e4ba", size = 5021917, upload_time = "2025-07-03T14:04:21.736Z" }, - { url = "https://files.pythonhosted.org/packages/89/72/578aa7fe32918dd763c62f447aaed672d665ee10e3eeb1725f4d6493fe96/fonttools-4.58.5-cp313-cp313-win32.whl", hash = "sha256:a1a9a2c462760976882131cbab7d63407813413a2d32cd699e86a1ff22bf7aa5", size = 2186827, upload_time = "2025-07-03T14:04:24.237Z" }, - { url = "https://files.pythonhosted.org/packages/71/a3/21e921b16cb9c029d3308e0cb79c9a937e9ff1fc1ee28c2419f0957b9e7c/fonttools-4.58.5-cp313-cp313-win_amd64.whl", hash = "sha256:bca61b14031a4b7dc87e14bf6ca34c275f8e4b9f7a37bc2fe746b532a924cf30", size = 2235706, upload_time = "2025-07-03T14:04:26.082Z" }, - { url = "https://files.pythonhosted.org/packages/d7/d4/1d85a1996b6188cd2713230e002d79a6f3a289bb17cef600cba385848b72/fonttools-4.58.5-py3-none-any.whl", hash = "sha256:e48a487ed24d9b611c5c4b25db1e50e69e9854ca2670e39a3486ffcd98863ec4", size = 1115318, upload_time = "2025-07-03T14:04:45.378Z" }, -] - -[[package]] -name = "frictionless" -version = "5.18.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "chardet" }, - { name = "humanize" }, - { name = "isodate" }, - { name = "jinja2" }, - { name = "jsonschema" }, - { name = "marko" }, - { name = "petl" }, - { name = "pydantic" }, - { name = "python-dateutil" }, - { name = "python-slugify" }, - { name = "pyyaml" }, - { name = "requests" }, - { name = "rfc3986" }, - { name = "simpleeval" }, - { name = "tabulate" }, - { name = "typer" }, - { name = "typing-extensions" }, - { name = "validators" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/11/d0/c94675a1c1b8c12fd68489e2b4a924f80a2b122199cd986c58a5136197d2/frictionless-5.18.1.tar.gz", hash = "sha256:daeaf55f896eeb52b43e62600466af9528fe0aeeebd28b1b917e13322f370a8b", size = 74372478, upload_time = "2025-03-25T21:32:50.081Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/7a/dac76d31584bb4f874ae860490c9465f5b59bd8c110f68fbbb07aba48845/frictionless-5.18.1-py3-none-any.whl", hash = "sha256:3f4c87469a89bdb88e9cc318088553a26f3d14839098f95c183ea01fc89628dd", size = 531615, upload_time = "2025-03-25T21:32:45.534Z" }, -] - -[package.optional-dependencies] -pandas = [ - { name = "pandas" }, - { name = "pyarrow" }, -] - [[package]] name = "ghp-import" version = "2.1.0" @@ -453,45 +381,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/58/c6/5c20af38c2a57c15d87f7f38bee77d63c1d2a3689f74fefaf35915dd12b2/griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75", size = 129303, upload_time = "2025-04-23T11:29:07.145Z" }, ] -[[package]] -name = "hdx-python-country" -version = "3.9.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "hdx-python-utilities" }, - { name = "libhxl" }, - { name = "tenacity" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1d/6b/424edb0f0834cd645a9ea97e2741046d42dbc54407eaef17bcd160f8e58d/hdx_python_country-3.9.5.tar.gz", hash = "sha256:1db9872a083c8bd0632ae13247b48011ab4655265b7967f73eeac88123168879", size = 529170, upload_time = "2025-06-24T22:28:08.996Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/45/9a/19b60f18d26bc674cc5c5e6a55ea0ec1da3713df6a307dfe6881486464f3/hdx_python_country-3.9.5-py3-none-any.whl", hash = "sha256:6e21b3f904564c8ef61835f063d2bcefff11393967bbe261b42ea87fe82f9b7c", size = 55537, upload_time = "2025-06-24T22:28:06.824Z" }, -] - -[[package]] -name = "hdx-python-utilities" -version = "3.8.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "frictionless" }, - { name = "ijson" }, - { name = "jsonlines" }, - { name = "loguru" }, - { name = "openpyxl" }, - { name = "pyphonetics" }, - { name = "python-dateutil" }, - { name = "ratelimit" }, - { name = "requests-file" }, - { name = "ruamel-yaml" }, - { name = "tableschema-to-template" }, - { name = "xlrd" }, - { name = "xlsx2csv" }, - { name = "xlwt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/66/de/b812b6b242f47db98ed043b7f3211c81443f0e59959377e97a93915331c0/hdx_python_utilities-3.8.7.tar.gz", hash = "sha256:41212cd5b682777d393ee991b546f1b4326665d981714a829e5483101fd15a60", size = 656009, upload_time = "2025-05-14T02:31:28.578Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/db/38/44f2a0b83e103bb3d47dbc66dfaa4aaa65c34c60fd26d5445fb2bbd3c09a/hdx_python_utilities-3.8.7-py3-none-any.whl", hash = "sha256:47e67810e81a481504b8653c429b31b8c237da594dc27604075c8e79077c8640", size = 60787, upload_time = "2025-05-14T02:31:26.794Z" }, -] - [[package]] name = "htmlmin2" version = "0.1.13" @@ -500,15 +389,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/be/31/a76f4bfa885f93b8167cb4c85cf32b54d1f64384d0b897d45bc6d19b7b45/htmlmin2-0.1.13-py3-none-any.whl", hash = "sha256:75609f2a42e64f7ce57dbff28a39890363bde9e7e5885db633317efbdf8c79a2", size = 34486, upload_time = "2023-03-14T21:28:30.388Z" }, ] -[[package]] -name = "humanize" -version = "4.12.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/22/d1/bbc4d251187a43f69844f7fd8941426549bbe4723e8ff0a7441796b0789f/humanize-4.12.3.tar.gz", hash = "sha256:8430be3a615106fdfceb0b2c1b41c4c98c6b0fc5cc59663a5539b111dd325fb0", size = 80514, upload_time = "2025-04-30T11:51:07.98Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/1e/62a2ec3104394a2975a2629eec89276ede9dbe717092f6966fcf963e1bf0/humanize-4.12.3-py3-none-any.whl", hash = "sha256:2cbf6370af06568fa6d2da77c86edb7886f3160ecd19ee1ffef07979efc597f6", size = 128487, upload_time = "2025-04-30T11:51:06.468Z" }, -] - [[package]] name = "identify" version = "2.6.12" @@ -527,62 +407,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload_time = "2024-09-15T18:07:37.964Z" }, ] -[[package]] -name = "ijson" -version = "3.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a3/4f/1cfeada63f5fce87536651268ddf5cca79b8b4bbb457aee4e45777964a0a/ijson-3.4.0.tar.gz", hash = "sha256:5f74dcbad9d592c428d3ca3957f7115a42689ee7ee941458860900236ae9bb13", size = 65782, upload_time = "2025-05-08T02:37:20.135Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/ec/317ee5b2d13e50448833ead3aa906659a32b376191f6abc2a7c6112d2b27/ijson-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:956b148f88259a80a9027ffbe2d91705fae0c004fbfba3e5a24028fbe72311a9", size = 87212, upload_time = "2025-05-08T02:35:51.835Z" }, - { url = "https://files.pythonhosted.org/packages/f8/43/b06c96ced30cacecc5d518f89b0fd1c98c294a30ff88848b70ed7b7f72a1/ijson-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:06b89960f5c721106394c7fba5760b3f67c515b8eb7d80f612388f5eca2f4621", size = 59175, upload_time = "2025-05-08T02:35:52.988Z" }, - { url = "https://files.pythonhosted.org/packages/e9/df/b4aeafb7ecde463130840ee9be36130823ec94a00525049bf700883378b8/ijson-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a0bb591cf250dd7e9dfab69d634745a7f3272d31cfe879f9156e0a081fd97ee", size = 59011, upload_time = "2025-05-08T02:35:54.394Z" }, - { url = "https://files.pythonhosted.org/packages/e3/7c/a80b8e361641609507f62022089626d4b8067f0826f51e1c09e4ba86eba8/ijson-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e92de999977f4c6b660ffcf2b8d59604ccd531edcbfde05b642baf283e0de8", size = 146094, upload_time = "2025-05-08T02:35:55.601Z" }, - { url = "https://files.pythonhosted.org/packages/01/44/fa416347b9a802e3646c6ff377fc3278bd7d6106e17beb339514b6a3184e/ijson-3.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e9602157a5b869d44b6896e64f502c712a312fcde044c2e586fccb85d3e316e", size = 137903, upload_time = "2025-05-08T02:35:56.814Z" }, - { url = "https://files.pythonhosted.org/packages/24/c6/41a9ad4d42df50ff6e70fdce79b034f09b914802737ebbdc141153d8d791/ijson-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e83660edb931a425b7ff662eb49db1f10d30ca6d4d350e5630edbed098bc01", size = 148339, upload_time = "2025-05-08T02:35:58.595Z" }, - { url = "https://files.pythonhosted.org/packages/5f/6f/7d01efda415b8502dce67e067ed9e8a124f53e763002c02207e542e1a2f1/ijson-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:49bf8eac1c7b7913073865a859c215488461f7591b4fa6a33c14b51cb73659d0", size = 149383, upload_time = "2025-05-08T02:36:00.197Z" }, - { url = "https://files.pythonhosted.org/packages/95/6c/0d67024b9ecb57916c5e5ab0350251c9fe2f86dc9c8ca2b605c194bdad6a/ijson-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:160b09273cb42019f1811469508b0a057d19f26434d44752bde6f281da6d3f32", size = 141580, upload_time = "2025-05-08T02:36:01.998Z" }, - { url = "https://files.pythonhosted.org/packages/06/43/e10edcc1c6a3b619294de835e7678bfb3a1b8a75955f3689fd66a1e9e7b4/ijson-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2019ff4e6f354aa00c76c8591bd450899111c61f2354ad55cc127e2ce2492c44", size = 150280, upload_time = "2025-05-08T02:36:03.926Z" }, - { url = "https://files.pythonhosted.org/packages/07/84/1cbeee8e8190a1ebe6926569a92cf1fa80ddb380c129beb6f86559e1bb24/ijson-3.4.0-cp312-cp312-win32.whl", hash = "sha256:931c007bf6bb8330705429989b2deed6838c22b63358a330bf362b6e458ba0bf", size = 51512, upload_time = "2025-05-08T02:36:05.595Z" }, - { url = "https://files.pythonhosted.org/packages/66/13/530802bc391c95be6fe9f96e9aa427d94067e7c0b7da7a9092344dc44c4b/ijson-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:71523f2b64cb856a820223e94d23e88369f193017ecc789bb4de198cc9d349eb", size = 54081, upload_time = "2025-05-08T02:36:07.099Z" }, - { url = "https://files.pythonhosted.org/packages/77/b3/b1d2eb2745e5204ec7a25365a6deb7868576214feb5e109bce368fb692c9/ijson-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e8d96f88d75196a61c9d9443de2b72c2d4a7ba9456ff117b57ae3bba23a54256", size = 87216, upload_time = "2025-05-08T02:36:08.414Z" }, - { url = "https://files.pythonhosted.org/packages/b1/cd/cd6d340087617f8cc9bedbb21d974542fe2f160ed0126b8288d3499a469b/ijson-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c45906ce2c1d3b62f15645476fc3a6ca279549127f01662a39ca5ed334a00cf9", size = 59170, upload_time = "2025-05-08T02:36:09.604Z" }, - { url = "https://files.pythonhosted.org/packages/3e/4d/32d3a9903b488d3306e3c8288f6ee4217d2eea82728261db03a1045eb5d1/ijson-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4ab4bc2119b35c4363ea49f29563612237cae9413d2fbe54b223be098b97bc9e", size = 59013, upload_time = "2025-05-08T02:36:10.696Z" }, - { url = "https://files.pythonhosted.org/packages/d5/c8/db15465ab4b0b477cee5964c8bfc94bf8c45af8e27a23e1ad78d1926e587/ijson-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97b0a9b5a15e61dfb1f14921ea4e0dba39f3a650df6d8f444ddbc2b19b479ff1", size = 146564, upload_time = "2025-05-08T02:36:11.916Z" }, - { url = "https://files.pythonhosted.org/packages/c4/d8/0755545bc122473a9a434ab90e0f378780e603d75495b1ca3872de757873/ijson-3.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3047bb994dabedf11de11076ed1147a307924b6e5e2df6784fb2599c4ad8c60", size = 137917, upload_time = "2025-05-08T02:36:13.532Z" }, - { url = "https://files.pythonhosted.org/packages/d0/c6/aeb89c8939ebe3f534af26c8c88000c5e870dbb6ae33644c21a4531f87d2/ijson-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68c83161b052e9f5dc8191acbc862bb1e63f8a35344cb5cd0db1afd3afd487a6", size = 148897, upload_time = "2025-05-08T02:36:14.813Z" }, - { url = "https://files.pythonhosted.org/packages/be/0e/7ef6e9b372106f2682a4a32b3c65bf86bb471a1670e4dac242faee4a7d3f/ijson-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1eebd9b6c20eb1dffde0ae1f0fbb4aeacec2eb7b89adb5c7c0449fc9fd742760", size = 149711, upload_time = "2025-05-08T02:36:16.476Z" }, - { url = "https://files.pythonhosted.org/packages/d1/5d/9841c3ed75bcdabf19b3202de5f862a9c9c86ce5c7c9d95fa32347fdbf5f/ijson-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:13fb6d5c35192c541421f3ee81239d91fc15a8d8f26c869250f941f4b346a86c", size = 141691, upload_time = "2025-05-08T02:36:18.044Z" }, - { url = "https://files.pythonhosted.org/packages/d5/d2/ce74e17218dba292e9be10a44ed0c75439f7958cdd263adb0b5b92d012d5/ijson-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:28b7196ff7b37c4897c547a28fa4876919696739fc91c1f347651c9736877c69", size = 150738, upload_time = "2025-05-08T02:36:19.483Z" }, - { url = "https://files.pythonhosted.org/packages/4e/43/dcc480f94453b1075c9911d4755b823f3ace275761bb37b40139f22109ca/ijson-3.4.0-cp313-cp313-win32.whl", hash = "sha256:3c2691d2da42629522140f77b99587d6f5010440d58d36616f33bc7bdc830cc3", size = 51512, upload_time = "2025-05-08T02:36:20.99Z" }, - { url = "https://files.pythonhosted.org/packages/35/dd/d8c5f15efd85ba51e6e11451ebe23d779361a9ec0d192064c2a8c3cdfcb8/ijson-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:c4554718c275a044c47eb3874f78f2c939f300215d9031e785a6711cc51b83fc", size = 54074, upload_time = "2025-05-08T02:36:22.075Z" }, - { url = "https://files.pythonhosted.org/packages/79/73/24ad8cd106203419c4d22bed627e02e281d66b83e91bc206a371893d0486/ijson-3.4.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:915a65e3f3c0eee2ea937bc62aaedb6c14cc1e8f0bb9f3f4fb5a9e2bbfa4b480", size = 91694, upload_time = "2025-05-08T02:36:23.289Z" }, - { url = "https://files.pythonhosted.org/packages/17/2d/f7f680984bcb7324a46a4c2df3bd73cf70faef0acfeb85a3f811abdfd590/ijson-3.4.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:afbe9748707684b6c5adc295c4fdcf27765b300aec4d484e14a13dca4e5c0afa", size = 61390, upload_time = "2025-05-08T02:36:24.42Z" }, - { url = "https://files.pythonhosted.org/packages/09/a1/f3ca7bab86f95bdb82494739e71d271410dfefce4590785d511669127145/ijson-3.4.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d823f8f321b4d8d5fa020d0a84f089fec5d52b7c0762430476d9f8bf95bbc1a9", size = 61140, upload_time = "2025-05-08T02:36:26.708Z" }, - { url = "https://files.pythonhosted.org/packages/51/79/dd340df3d4fc7771c95df29997956b92ed0570fe7b616d1792fea9ad93f2/ijson-3.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0a2c54f3becf76881188beefd98b484b1d3bd005769a740d5b433b089fa23", size = 214739, upload_time = "2025-05-08T02:36:27.973Z" }, - { url = "https://files.pythonhosted.org/packages/59/f0/85380b7f51d1f5fb7065d76a7b623e02feca920cc678d329b2eccc0011e0/ijson-3.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ced19a83ab09afa16257a0b15bc1aa888dbc555cb754be09d375c7f8d41051f2", size = 198338, upload_time = "2025-05-08T02:36:29.496Z" }, - { url = "https://files.pythonhosted.org/packages/a5/cd/313264cf2ec42e0f01d198c49deb7b6fadeb793b3685e20e738eb6b3fa13/ijson-3.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8100f9885eff1f38d35cef80ef759a1bbf5fc946349afa681bd7d0e681b7f1a0", size = 207515, upload_time = "2025-05-08T02:36:30.981Z" }, - { url = "https://files.pythonhosted.org/packages/12/94/bf14457aa87ea32641f2db577c9188ef4e4ae373478afef422b31fc7f309/ijson-3.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d7bcc3f7f21b0f703031ecd15209b1284ea51b2a329d66074b5261de3916c1eb", size = 210081, upload_time = "2025-05-08T02:36:32.403Z" }, - { url = "https://files.pythonhosted.org/packages/7d/b4/eaee39e290e40e52d665db9bd1492cfdce86bd1e47948e0440db209c6023/ijson-3.4.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2dcb190227b09dd171bdcbfe4720fddd574933c66314818dfb3960c8a6246a77", size = 199253, upload_time = "2025-05-08T02:36:33.861Z" }, - { url = "https://files.pythonhosted.org/packages/c5/9c/e09c7b9ac720a703ab115b221b819f149ed54c974edfff623c1e925e57da/ijson-3.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:eda4cfb1d49c6073a901735aaa62e39cb7ab47f3ad7bb184862562f776f1fa8a", size = 203816, upload_time = "2025-05-08T02:36:35.348Z" }, - { url = "https://files.pythonhosted.org/packages/7c/14/acd304f412e32d16a2c12182b9d78206bb0ae35354d35664f45db05c1b3b/ijson-3.4.0-cp313-cp313t-win32.whl", hash = "sha256:0772638efa1f3b72b51736833404f1cbd2f5beeb9c1a3d392e7d385b9160cba7", size = 53760, upload_time = "2025-05-08T02:36:36.608Z" }, - { url = "https://files.pythonhosted.org/packages/2f/24/93dd0a467191590a5ed1fc2b35842bca9d09900d001e00b0b497c0208ef6/ijson-3.4.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3d8a0d67f36e4fb97c61a724456ef0791504b16ce6f74917a31c2e92309bbeb9", size = 56948, upload_time = "2025-05-08T02:36:37.849Z" }, -] - -[[package]] -name = "imf-reader" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "beautifulsoup4" }, - { name = "chardet" }, - { name = "pandas" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/af/45/24521d229aec5c058d998510794567788bc7b1b764dfaa02fb8e0aeda4b7/imf_reader-1.3.0.tar.gz", hash = "sha256:3f3130dd793a112fdd5913a7c7b733847a5a07fd70dee14d57624ae4e021a141", size = 12990, upload_time = "2025-02-06T09:16:10.723Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/5b/3a063116950f2aa2b450120e78162bb5b87098dde3b75ae90210c6f2c099/imf_reader-1.3.0-py3-none-any.whl", hash = "sha256:3515c6644dfef44d5fda89f5bb3786b4f83da20f49184911f0df2386782106f1", size = 16520, upload_time = "2025-02-06T09:16:09.042Z" }, -] - [[package]] name = "iniconfig" version = "2.1.0" @@ -649,15 +473,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload_time = "2025-01-17T11:24:33.271Z" }, ] -[[package]] -name = "isodate" -version = "0.7.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload_time = "2024-10-08T23:04:11.5Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload_time = "2024-10-08T23:04:09.501Z" }, -] - [[package]] name = "jedi" version = "0.19.2" @@ -682,72 +497,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload_time = "2025-03-05T20:05:00.369Z" }, ] -[[package]] -name = "joblib" -version = "1.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475, upload_time = "2025-05-23T12:04:37.097Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746, upload_time = "2025-05-23T12:04:35.124Z" }, -] - [[package]] name = "jsmin" version = "3.0.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/5e/73/e01e4c5e11ad0494f4407a3f623ad4d87714909f50b17a06ed121034ff6e/jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc", size = 13925, upload_time = "2022-01-16T20:35:59.13Z" } -[[package]] -name = "jsonlines" -version = "4.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/35/87/bcda8e46c88d0e34cad2f09ee2d0c7f5957bccdb9791b0b934ec84d84be4/jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74", size = 11359, upload_time = "2023-09-01T12:34:44.187Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/62/d9ba6323b9202dd2fe166beab8a86d29465c41a0288cbe229fac60c1ab8d/jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55", size = 8701, upload_time = "2023-09-01T12:34:42.563Z" }, -] - -[[package]] -name = "jsonpath-ng" -version = "1.7.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "ply" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838, upload_time = "2024-10-11T15:41:42.404Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105, upload_time = "2024-11-20T17:58:30.418Z" }, -] - -[[package]] -name = "jsonschema" -version = "4.24.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "jsonschema-specifications" }, - { name = "referencing" }, - { name = "rpds-py" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480, upload_time = "2025-05-26T18:48:10.459Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709, upload_time = "2025-05-26T18:48:08.417Z" }, -] - -[[package]] -name = "jsonschema-specifications" -version = "2025.4.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "referencing" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload_time = "2025-04-23T12:34:07.418Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload_time = "2025-04-23T12:34:05.422Z" }, -] - [[package]] name = "jupyter-client" version = "8.6.3" @@ -779,94 +534,15 @@ wheels = [ ] [[package]] -name = "kiwisolver" -version = "1.4.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538, upload_time = "2024-12-24T18:30:51.519Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152, upload_time = "2024-12-24T18:29:16.85Z" }, - { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555, upload_time = "2024-12-24T18:29:19.146Z" }, - { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067, upload_time = "2024-12-24T18:29:20.096Z" }, - { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443, upload_time = "2024-12-24T18:29:22.843Z" }, - { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728, upload_time = "2024-12-24T18:29:24.463Z" }, - { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388, upload_time = "2024-12-24T18:29:25.776Z" }, - { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849, upload_time = "2024-12-24T18:29:27.202Z" }, - { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533, upload_time = "2024-12-24T18:29:28.638Z" }, - { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898, upload_time = "2024-12-24T18:29:30.368Z" }, - { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605, upload_time = "2024-12-24T18:29:33.151Z" }, - { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801, upload_time = "2024-12-24T18:29:34.584Z" }, - { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077, upload_time = "2024-12-24T18:29:36.138Z" }, - { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410, upload_time = "2024-12-24T18:29:39.991Z" }, - { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853, upload_time = "2024-12-24T18:29:42.006Z" }, - { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424, upload_time = "2024-12-24T18:29:44.38Z" }, - { url = "https://files.pythonhosted.org/packages/79/b3/e62464a652f4f8cd9006e13d07abad844a47df1e6537f73ddfbf1bc997ec/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09", size = 124156, upload_time = "2024-12-24T18:29:45.368Z" }, - { url = "https://files.pythonhosted.org/packages/8d/2d/f13d06998b546a2ad4f48607a146e045bbe48030774de29f90bdc573df15/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1", size = 66555, upload_time = "2024-12-24T18:29:46.37Z" }, - { url = "https://files.pythonhosted.org/packages/59/e3/b8bd14b0a54998a9fd1e8da591c60998dc003618cb19a3f94cb233ec1511/kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c", size = 65071, upload_time = "2024-12-24T18:29:47.333Z" }, - { url = "https://files.pythonhosted.org/packages/f0/1c/6c86f6d85ffe4d0ce04228d976f00674f1df5dc893bf2dd4f1928748f187/kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b", size = 1378053, upload_time = "2024-12-24T18:29:49.636Z" }, - { url = "https://files.pythonhosted.org/packages/4e/b9/1c6e9f6dcb103ac5cf87cb695845f5fa71379021500153566d8a8a9fc291/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47", size = 1472278, upload_time = "2024-12-24T18:29:51.164Z" }, - { url = "https://files.pythonhosted.org/packages/ee/81/aca1eb176de671f8bda479b11acdc42c132b61a2ac861c883907dde6debb/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16", size = 1478139, upload_time = "2024-12-24T18:29:52.594Z" }, - { url = "https://files.pythonhosted.org/packages/49/f4/e081522473671c97b2687d380e9e4c26f748a86363ce5af48b4a28e48d06/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc", size = 1413517, upload_time = "2024-12-24T18:29:53.941Z" }, - { url = "https://files.pythonhosted.org/packages/8f/e9/6a7d025d8da8c4931522922cd706105aa32b3291d1add8c5427cdcd66e63/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246", size = 1474952, upload_time = "2024-12-24T18:29:56.523Z" }, - { url = "https://files.pythonhosted.org/packages/82/13/13fa685ae167bee5d94b415991c4fc7bb0a1b6ebea6e753a87044b209678/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794", size = 2269132, upload_time = "2024-12-24T18:29:57.989Z" }, - { url = "https://files.pythonhosted.org/packages/ef/92/bb7c9395489b99a6cb41d502d3686bac692586db2045adc19e45ee64ed23/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b", size = 2425997, upload_time = "2024-12-24T18:29:59.393Z" }, - { url = "https://files.pythonhosted.org/packages/ed/12/87f0e9271e2b63d35d0d8524954145837dd1a6c15b62a2d8c1ebe0f182b4/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3", size = 2376060, upload_time = "2024-12-24T18:30:01.338Z" }, - { url = "https://files.pythonhosted.org/packages/02/6e/c8af39288edbce8bf0fa35dee427b082758a4b71e9c91ef18fa667782138/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957", size = 2520471, upload_time = "2024-12-24T18:30:04.574Z" }, - { url = "https://files.pythonhosted.org/packages/13/78/df381bc7b26e535c91469f77f16adcd073beb3e2dd25042efd064af82323/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb", size = 2338793, upload_time = "2024-12-24T18:30:06.25Z" }, - { url = "https://files.pythonhosted.org/packages/d0/dc/c1abe38c37c071d0fc71c9a474fd0b9ede05d42f5a458d584619cfd2371a/kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2", size = 71855, upload_time = "2024-12-24T18:30:07.535Z" }, - { url = "https://files.pythonhosted.org/packages/a0/b6/21529d595b126ac298fdd90b705d87d4c5693de60023e0efcb4f387ed99e/kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30", size = 65430, upload_time = "2024-12-24T18:30:08.504Z" }, - { url = "https://files.pythonhosted.org/packages/34/bd/b89380b7298e3af9b39f49334e3e2a4af0e04819789f04b43d560516c0c8/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c", size = 126294, upload_time = "2024-12-24T18:30:09.508Z" }, - { url = "https://files.pythonhosted.org/packages/83/41/5857dc72e5e4148eaac5aa76e0703e594e4465f8ab7ec0fc60e3a9bb8fea/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc", size = 67736, upload_time = "2024-12-24T18:30:11.039Z" }, - { url = "https://files.pythonhosted.org/packages/e1/d1/be059b8db56ac270489fb0b3297fd1e53d195ba76e9bbb30e5401fa6b759/kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712", size = 66194, upload_time = "2024-12-24T18:30:14.886Z" }, - { url = "https://files.pythonhosted.org/packages/e1/83/4b73975f149819eb7dcf9299ed467eba068ecb16439a98990dcb12e63fdd/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e", size = 1465942, upload_time = "2024-12-24T18:30:18.927Z" }, - { url = "https://files.pythonhosted.org/packages/c7/2c/30a5cdde5102958e602c07466bce058b9d7cb48734aa7a4327261ac8e002/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880", size = 1595341, upload_time = "2024-12-24T18:30:22.102Z" }, - { url = "https://files.pythonhosted.org/packages/ff/9b/1e71db1c000385aa069704f5990574b8244cce854ecd83119c19e83c9586/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062", size = 1598455, upload_time = "2024-12-24T18:30:24.947Z" }, - { url = "https://files.pythonhosted.org/packages/85/92/c8fec52ddf06231b31cbb779af77e99b8253cd96bd135250b9498144c78b/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7", size = 1522138, upload_time = "2024-12-24T18:30:26.286Z" }, - { url = "https://files.pythonhosted.org/packages/0b/51/9eb7e2cd07a15d8bdd976f6190c0164f92ce1904e5c0c79198c4972926b7/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed", size = 1582857, upload_time = "2024-12-24T18:30:28.86Z" }, - { url = "https://files.pythonhosted.org/packages/0f/95/c5a00387a5405e68ba32cc64af65ce881a39b98d73cc394b24143bebc5b8/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d", size = 2293129, upload_time = "2024-12-24T18:30:30.34Z" }, - { url = "https://files.pythonhosted.org/packages/44/83/eeb7af7d706b8347548313fa3a3a15931f404533cc54fe01f39e830dd231/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165", size = 2421538, upload_time = "2024-12-24T18:30:33.334Z" }, - { url = "https://files.pythonhosted.org/packages/05/f9/27e94c1b3eb29e6933b6986ffc5fa1177d2cd1f0c8efc5f02c91c9ac61de/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", size = 2390661, upload_time = "2024-12-24T18:30:34.939Z" }, - { url = "https://files.pythonhosted.org/packages/d9/d4/3c9735faa36ac591a4afcc2980d2691000506050b7a7e80bcfe44048daa7/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", size = 2546710, upload_time = "2024-12-24T18:30:37.281Z" }, - { url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213, upload_time = "2024-12-24T18:30:40.019Z" }, -] - -[[package]] -name = "lark" -version = "1.2.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/60/bc7622aefb2aee1c0b4ba23c1446d3e30225c8770b38d7aedbfb65ca9d5a/lark-1.2.2.tar.gz", hash = "sha256:ca807d0162cd16cef15a8feecb862d7319e7a09bdb13aef927968e45040fed80", size = 252132, upload_time = "2024-08-13T19:49:00.652Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2d/00/d90b10b962b4277f5e64a78b6609968859ff86889f5b898c1a778c06ec00/lark-1.2.2-py3-none-any.whl", hash = "sha256:c2276486b02f0f1b90be155f2c8ba4a8e194d42775786db622faccd652d8e80c", size = 111036, upload_time = "2024-08-13T19:48:58.603Z" }, -] - -[[package]] -name = "libhxl" -version = "5.2.2" +name = "license-expression" +version = "30.4.4" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "jsonpath-ng" }, - { name = "ply" }, - { name = "python-dateutil" }, - { name = "python-io-wrapper" }, - { name = "requests" }, - { name = "structlog" }, - { name = "unidecode" }, - { name = "urllib3" }, - { name = "wheel" }, - { name = "xlrd3" }, + { name = "boolean-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/ad/c1dafb7c59e685692a2eeafce83245b7c5f46e05881fdb77a0cbb7c19c74/libhxl-5.2.2.tar.gz", hash = "sha256:3a74d9f23561bfcefd20e5229c574bc68dfc114fdb6ba1ba684d9e9d7ea52483", size = 127736, upload_time = "2024-10-25T09:19:11.202Z" } - -[[package]] -name = "loguru" -version = "0.7.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "win32-setctime", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559, upload_time = "2024-12-06T11:20:56.608Z" } +sdist = { url = "https://files.pythonhosted.org/packages/40/71/d89bb0e71b1415453980fd32315f2a037aad9f7f70f695c7cec7035feb13/license_expression-30.4.4.tar.gz", hash = "sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd", size = 186402, upload_time = "2025-07-22T11:13:32.17Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595, upload_time = "2024-12-06T11:20:54.538Z" }, + { url = "https://files.pythonhosted.org/packages/af/40/791891d4c0c4dab4c5e187c17261cedc26285fd41541577f900470a45a4d/license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4", size = 120615, upload_time = "2025-07-22T11:13:31.217Z" }, ] [[package]] @@ -878,27 +554,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/96/2b/34cc11786bc00d0f04d0f5fdc3a2b1ae0b6239eef72d3d345805f9ad92a1/markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24", size = 106827, upload_time = "2025-06-19T17:12:42.994Z" }, ] -[[package]] -name = "markdown-it-py" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mdurl" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload_time = "2023-06-03T06:41:14.443Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload_time = "2023-06-03T06:41:11.019Z" }, -] - -[[package]] -name = "marko" -version = "2.1.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/dc/c8cadbd83de1b38d95a48568b445a5553005ebdd32e00a333ca940113db4/marko-2.1.4.tar.gz", hash = "sha256:dd7d66f3706732bf8f994790e674649a4fd0a6c67f16b80246f30de8e16a1eac", size = 142795, upload_time = "2025-06-13T03:25:50.857Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c3/66/49e3691d14898fb6e34ccb337c7677dfb7e18269ed170f12e4b85315eae6/marko-2.1.4-py3-none-any.whl", hash = "sha256:81c2b9f570ca485bc356678d9ba1a1b3eb78b4a315d01f3ded25442fdc796990", size = 42186, upload_time = "2025-06-13T03:25:49.858Z" }, -] - [[package]] name = "markupsafe" version = "3.0.2" @@ -937,43 +592,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload_time = "2024-10-18T15:21:42.784Z" }, ] -[[package]] -name = "matplotlib" -version = "3.10.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "contourpy" }, - { name = "cycler" }, - { name = "fonttools" }, - { name = "kiwisolver" }, - { name = "numpy" }, - { name = "packaging" }, - { name = "pillow" }, - { name = "pyparsing" }, - { name = "python-dateutil" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811, upload_time = "2025-05-08T19:10:54.39Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689, upload_time = "2025-05-08T19:10:07.602Z" }, - { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466, upload_time = "2025-05-08T19:10:09.383Z" }, - { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252, upload_time = "2025-05-08T19:10:11.958Z" }, - { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321, upload_time = "2025-05-08T19:10:14.47Z" }, - { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972, upload_time = "2025-05-08T19:10:16.569Z" }, - { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954, upload_time = "2025-05-08T19:10:18.663Z" }, - { url = "https://files.pythonhosted.org/packages/3b/c1/23cfb566a74c696a3b338d8955c549900d18fe2b898b6e94d682ca21e7c2/matplotlib-3.10.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9f2efccc8dcf2b86fc4ee849eea5dcaecedd0773b30f47980dc0cbeabf26ec84", size = 8180318, upload_time = "2025-05-08T19:10:20.426Z" }, - { url = "https://files.pythonhosted.org/packages/6c/0c/02f1c3b66b30da9ee343c343acbb6251bef5b01d34fad732446eaadcd108/matplotlib-3.10.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3ddbba06a6c126e3301c3d272a99dcbe7f6c24c14024e80307ff03791a5f294e", size = 8051132, upload_time = "2025-05-08T19:10:22.569Z" }, - { url = "https://files.pythonhosted.org/packages/b4/ab/8db1a5ac9b3a7352fb914133001dae889f9fcecb3146541be46bed41339c/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748302b33ae9326995b238f606e9ed840bf5886ebafcb233775d946aa8107a15", size = 8457633, upload_time = "2025-05-08T19:10:24.749Z" }, - { url = "https://files.pythonhosted.org/packages/f5/64/41c4367bcaecbc03ef0d2a3ecee58a7065d0a36ae1aa817fe573a2da66d4/matplotlib-3.10.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a80fcccbef63302c0efd78042ea3c2436104c5b1a4d3ae20f864593696364ac7", size = 8601031, upload_time = "2025-05-08T19:10:27.03Z" }, - { url = "https://files.pythonhosted.org/packages/12/6f/6cc79e9e5ab89d13ed64da28898e40fe5b105a9ab9c98f83abd24e46d7d7/matplotlib-3.10.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:55e46cbfe1f8586adb34f7587c3e4f7dedc59d5226719faf6cb54fc24f2fd52d", size = 9406988, upload_time = "2025-05-08T19:10:29.056Z" }, - { url = "https://files.pythonhosted.org/packages/b1/0f/eed564407bd4d935ffabf561ed31099ed609e19287409a27b6d336848653/matplotlib-3.10.3-cp313-cp313-win_amd64.whl", hash = "sha256:151d89cb8d33cb23345cd12490c76fd5d18a56581a16d950b48c6ff19bb2ab93", size = 8068034, upload_time = "2025-05-08T19:10:31.221Z" }, - { url = "https://files.pythonhosted.org/packages/3e/e5/2f14791ff69b12b09e9975e1d116d9578ac684460860ce542c2588cb7a1c/matplotlib-3.10.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c26dd9834e74d164d06433dc7be5d75a1e9890b926b3e57e74fa446e1a62c3e2", size = 8218223, upload_time = "2025-05-08T19:10:33.114Z" }, - { url = "https://files.pythonhosted.org/packages/5c/08/30a94afd828b6e02d0a52cae4a29d6e9ccfcf4c8b56cc28b021d3588873e/matplotlib-3.10.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:24853dad5b8c84c8c2390fc31ce4858b6df504156893292ce8092d190ef8151d", size = 8094985, upload_time = "2025-05-08T19:10:35.337Z" }, - { url = "https://files.pythonhosted.org/packages/89/44/f3bc6b53066c889d7a1a3ea8094c13af6a667c5ca6220ec60ecceec2dabe/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:68f7878214d369d7d4215e2a9075fef743be38fa401d32e6020bab2dfabaa566", size = 8483109, upload_time = "2025-05-08T19:10:37.611Z" }, - { url = "https://files.pythonhosted.org/packages/ba/c7/473bc559beec08ebee9f86ca77a844b65747e1a6c2691e8c92e40b9f42a8/matplotlib-3.10.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6929fc618cb6db9cb75086f73b3219bbb25920cb24cee2ea7a12b04971a4158", size = 8618082, upload_time = "2025-05-08T19:10:39.892Z" }, - { url = "https://files.pythonhosted.org/packages/d8/e9/6ce8edd264c8819e37bbed8172e0ccdc7107fe86999b76ab5752276357a4/matplotlib-3.10.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6c7818292a5cc372a2dc4c795e5c356942eb8350b98ef913f7fda51fe175ac5d", size = 9413699, upload_time = "2025-05-08T19:10:42.376Z" }, - { url = "https://files.pythonhosted.org/packages/1b/92/9a45c91089c3cf690b5badd4be81e392ff086ccca8a1d4e3a08463d8a966/matplotlib-3.10.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4f23ffe95c5667ef8a2b56eea9b53db7f43910fa4a2d5472ae0f72b64deab4d5", size = 8139044, upload_time = "2025-05-08T19:10:44.551Z" }, -] - [[package]] name = "matplotlib-inline" version = "0.1.7" @@ -986,15 +604,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload_time = "2024-04-15T13:44:43.265Z" }, ] -[[package]] -name = "mdurl" -version = "0.1.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload_time = "2022-08-14T12:40:10.846Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload_time = "2022-08-14T12:40:09.779Z" }, -] - [[package]] name = "mergedeep" version = "1.3.4" @@ -1266,34 +875,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d4/ca/af82bf0fad4c3e573c6930ed743b5308492ff19917c7caaf2f9b6f9e2e98/numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244", size = 10260376, upload_time = "2025-06-21T12:24:56.884Z" }, ] -[[package]] -name = "oda-reader" -version = "1.2.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "joblib" }, - { name = "openpyxl" }, - { name = "pandas" }, - { name = "pyarrow" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1a/d1/5c0bb2a714ebea7df131b8e87010eab39d0df75878f6785f2a214ff66bb2/oda_reader-1.2.2.tar.gz", hash = "sha256:55be081e1744e75184eca3d09e794fad71958201d08b48fb497aac97a95f3685", size = 35630, upload_time = "2025-06-16T16:15:05.49Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d8/ec/59338ec9108848dc53f50e7381b9817595bf98f414f4a732100a06828a3b/oda_reader-1.2.2-py3-none-any.whl", hash = "sha256:7f7b854ab1e9bc2cf64b6c63bd56a2ac64cb90ec054518fd01b741fd518cf007", size = 45314, upload_time = "2025-06-16T16:15:04.328Z" }, -] - -[[package]] -name = "openpyxl" -version = "3.1.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "et-xmlfile" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload_time = "2024-06-28T14:03:44.161Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload_time = "2024-06-28T14:03:41.161Z" }, -] - [[package]] name = "packaging" version = "25.0" @@ -1364,12 +945,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload_time = "2023-12-10T22:30:43.14Z" }, ] -[[package]] -name = "petl" -version = "1.7.16" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/99/28/ce7321fbd3b981fd9c212adf7455e0e4e42babebd83b92e24f8265d13dd3/petl-1.7.16.tar.gz", hash = "sha256:9c2fea64d859da45e120fd86d471e5387396cc45d5d4986efa79679f18eb8752", size = 420780, upload_time = "2025-04-04T23:54:50.921Z" } - [[package]] name = "pexpect" version = "4.9.0" @@ -1382,87 +957,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload_time = "2023-11-25T06:56:14.81Z" }, ] -[[package]] -name = "pillow" -version = "11.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload_time = "2025-07-01T09:16:30.666Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800, upload_time = "2025-07-01T09:14:17.648Z" }, - { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296, upload_time = "2025-07-01T09:14:19.828Z" }, - { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726, upload_time = "2025-07-03T13:10:04.448Z" }, - { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652, upload_time = "2025-07-03T13:10:10.391Z" }, - { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787, upload_time = "2025-07-01T09:14:21.63Z" }, - { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236, upload_time = "2025-07-01T09:14:23.321Z" }, - { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950, upload_time = "2025-07-01T09:14:25.237Z" }, - { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358, upload_time = "2025-07-01T09:14:27.053Z" }, - { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079, upload_time = "2025-07-01T09:14:30.104Z" }, - { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324, upload_time = "2025-07-01T09:14:31.899Z" }, - { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067, upload_time = "2025-07-01T09:14:33.709Z" }, - { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload_time = "2025-07-01T09:14:35.276Z" }, - { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload_time = "2025-07-01T09:14:37.203Z" }, - { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload_time = "2025-07-01T09:14:39.344Z" }, - { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload_time = "2025-07-01T09:14:41.843Z" }, - { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload_time = "2025-07-01T09:14:44.008Z" }, - { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload_time = "2025-07-03T13:10:15.628Z" }, - { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload_time = "2025-07-03T13:10:21.857Z" }, - { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload_time = "2025-07-01T09:14:45.698Z" }, - { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload_time = "2025-07-01T09:14:47.415Z" }, - { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload_time = "2025-07-01T09:14:49.636Z" }, - { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload_time = "2025-07-01T09:14:51.962Z" }, - { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload_time = "2025-07-01T09:14:54.142Z" }, - { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload_time = "2025-07-01T09:14:56.436Z" }, - { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload_time = "2025-07-01T09:14:58.072Z" }, - { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload_time = "2025-07-01T09:14:59.79Z" }, - { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload_time = "2025-07-01T09:15:01.648Z" }, - { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload_time = "2025-07-03T13:10:27.018Z" }, - { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload_time = "2025-07-03T13:10:33.01Z" }, - { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload_time = "2025-07-01T09:15:03.365Z" }, - { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload_time = "2025-07-01T09:15:05.655Z" }, - { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload_time = "2025-07-01T09:15:07.358Z" }, - { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload_time = "2025-07-01T09:15:09.317Z" }, - { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload_time = "2025-07-01T09:15:11.311Z" }, - { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload_time = "2025-07-01T09:15:13.164Z" }, - { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload_time = "2025-07-01T09:15:15.695Z" }, - { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload_time = "2025-07-01T09:15:17.429Z" }, - { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload_time = "2025-07-01T09:15:19.423Z" }, - { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload_time = "2025-07-03T13:10:38.404Z" }, - { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload_time = "2025-07-03T13:10:44.987Z" }, - { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload_time = "2025-07-01T09:15:21.237Z" }, - { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload_time = "2025-07-01T09:15:23.186Z" }, - { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload_time = "2025-07-01T09:15:25.1Z" }, - { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload_time = "2025-07-01T09:15:27.378Z" }, - { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload_time = "2025-07-01T09:15:29.294Z" }, - { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload_time = "2025-07-01T09:15:31.128Z" }, - { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload_time = "2025-07-01T09:15:33.328Z" }, - { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload_time = "2025-07-01T09:15:35.194Z" }, - { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload_time = "2025-07-01T09:15:37.114Z" }, - { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload_time = "2025-07-03T13:10:50.248Z" }, - { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload_time = "2025-07-03T13:10:56.432Z" }, - { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload_time = "2025-07-01T09:15:39.436Z" }, - { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload_time = "2025-07-01T09:15:41.269Z" }, - { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload_time = "2025-07-01T09:15:43.13Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload_time = "2025-07-01T09:15:44.937Z" }, - { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload_time = "2025-07-01T09:15:46.673Z" }, - { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload_time = "2025-07-01T09:15:48.512Z" }, - { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload_time = "2025-07-01T09:15:50.399Z" }, -] - -[[package]] -name = "pint" -version = "0.24.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "flexcache" }, - { name = "flexparser" }, - { name = "platformdirs" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/20/bb/52b15ddf7b7706ed591134a895dbf6e41c8348171fb635e655e0a4bbb0ea/pint-0.24.4.tar.gz", hash = "sha256:35275439b574837a6cd3020a5a4a73645eb125ce4152a73a2f126bf164b91b80", size = 342225, upload_time = "2024-11-07T16:29:46.061Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/16/bd2f5904557265882108dc2e04f18abc05ab0c2b7082ae9430091daf1d5c/Pint-0.24.4-py3-none-any.whl", hash = "sha256:aa54926c8772159fcf65f82cc0d34de6768c151b32ad1deb0331291c38fe7659", size = 302029, upload_time = "2024-11-07T16:29:43.976Z" }, -] - [[package]] name = "platformdirs" version = "4.3.8" @@ -1481,15 +975,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload_time = "2025-05-15T12:30:06.134Z" }, ] -[[package]] -name = "ply" -version = "3.11" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130, upload_time = "2018-02-15T19:01:31.097Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567, upload_time = "2018-02-15T19:01:27.172Z" }, -] - [[package]] name = "pre-commit" version = "4.2.0" @@ -1551,41 +1036,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload_time = "2024-07-21T12:58:20.04Z" }, ] -[[package]] -name = "pyarrow" -version = "20.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187, upload_time = "2025-04-27T12:34:23.264Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067, upload_time = "2025-04-27T12:29:44.384Z" }, - { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128, upload_time = "2025-04-27T12:29:52.038Z" }, - { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890, upload_time = "2025-04-27T12:29:59.452Z" }, - { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775, upload_time = "2025-04-27T12:30:06.875Z" }, - { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231, upload_time = "2025-04-27T12:30:13.954Z" }, - { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639, upload_time = "2025-04-27T12:30:21.949Z" }, - { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549, upload_time = "2025-04-27T12:30:29.551Z" }, - { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216, upload_time = "2025-04-27T12:30:36.977Z" }, - { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496, upload_time = "2025-04-27T12:30:42.809Z" }, - { url = "https://files.pythonhosted.org/packages/9b/aa/daa413b81446d20d4dad2944110dcf4cf4f4179ef7f685dd5a6d7570dc8e/pyarrow-20.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a15532e77b94c61efadde86d10957950392999503b3616b2ffcef7621a002893", size = 30798501, upload_time = "2025-04-27T12:30:48.351Z" }, - { url = "https://files.pythonhosted.org/packages/ff/75/2303d1caa410925de902d32ac215dc80a7ce7dd8dfe95358c165f2adf107/pyarrow-20.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:dd43f58037443af715f34f1322c782ec463a3c8a94a85fdb2d987ceb5658e061", size = 32277895, upload_time = "2025-04-27T12:30:55.238Z" }, - { url = "https://files.pythonhosted.org/packages/92/41/fe18c7c0b38b20811b73d1bdd54b1fccba0dab0e51d2048878042d84afa8/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa0d288143a8585806e3cc7c39566407aab646fb9ece164609dac1cfff45f6ae", size = 41327322, upload_time = "2025-04-27T12:31:05.587Z" }, - { url = "https://files.pythonhosted.org/packages/da/ab/7dbf3d11db67c72dbf36ae63dcbc9f30b866c153b3a22ef728523943eee6/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6953f0114f8d6f3d905d98e987d0924dabce59c3cda380bdfaa25a6201563b4", size = 42411441, upload_time = "2025-04-27T12:31:15.675Z" }, - { url = "https://files.pythonhosted.org/packages/90/c3/0c7da7b6dac863af75b64e2f827e4742161128c350bfe7955b426484e226/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:991f85b48a8a5e839b2128590ce07611fae48a904cae6cab1f089c5955b57eb5", size = 40677027, upload_time = "2025-04-27T12:31:24.631Z" }, - { url = "https://files.pythonhosted.org/packages/be/27/43a47fa0ff9053ab5203bb3faeec435d43c0d8bfa40179bfd076cdbd4e1c/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:97c8dc984ed09cb07d618d57d8d4b67a5100a30c3818c2fb0b04599f0da2de7b", size = 42281473, upload_time = "2025-04-27T12:31:31.311Z" }, - { url = "https://files.pythonhosted.org/packages/bc/0b/d56c63b078876da81bbb9ba695a596eabee9b085555ed12bf6eb3b7cab0e/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9b71daf534f4745818f96c214dbc1e6124d7daf059167330b610fc69b6f3d3e3", size = 42893897, upload_time = "2025-04-27T12:31:39.406Z" }, - { url = "https://files.pythonhosted.org/packages/92/ac/7d4bd020ba9145f354012838692d48300c1b8fe5634bfda886abcada67ed/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e8b88758f9303fa5a83d6c90e176714b2fd3852e776fc2d7e42a22dd6c2fb368", size = 44543847, upload_time = "2025-04-27T12:31:45.997Z" }, - { url = "https://files.pythonhosted.org/packages/9d/07/290f4abf9ca702c5df7b47739c1b2c83588641ddfa2cc75e34a301d42e55/pyarrow-20.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:30b3051b7975801c1e1d387e17c588d8ab05ced9b1e14eec57915f79869b5031", size = 25653219, upload_time = "2025-04-27T12:31:54.11Z" }, - { url = "https://files.pythonhosted.org/packages/95/df/720bb17704b10bd69dde086e1400b8eefb8f58df3f8ac9cff6c425bf57f1/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:ca151afa4f9b7bc45bcc791eb9a89e90a9eb2772767d0b1e5389609c7d03db63", size = 30853957, upload_time = "2025-04-27T12:31:59.215Z" }, - { url = "https://files.pythonhosted.org/packages/d9/72/0d5f875efc31baef742ba55a00a25213a19ea64d7176e0fe001c5d8b6e9a/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:4680f01ecd86e0dd63e39eb5cd59ef9ff24a9d166db328679e36c108dc993d4c", size = 32247972, upload_time = "2025-04-27T12:32:05.369Z" }, - { url = "https://files.pythonhosted.org/packages/d5/bc/e48b4fa544d2eea72f7844180eb77f83f2030b84c8dad860f199f94307ed/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f4c8534e2ff059765647aa69b75d6543f9fef59e2cd4c6d18015192565d2b70", size = 41256434, upload_time = "2025-04-27T12:32:11.814Z" }, - { url = "https://files.pythonhosted.org/packages/c3/01/974043a29874aa2cf4f87fb07fd108828fc7362300265a2a64a94965e35b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e1f8a47f4b4ae4c69c4d702cfbdfe4d41e18e5c7ef6f1bb1c50918c1e81c57b", size = 42353648, upload_time = "2025-04-27T12:32:20.766Z" }, - { url = "https://files.pythonhosted.org/packages/68/95/cc0d3634cde9ca69b0e51cbe830d8915ea32dda2157560dda27ff3b3337b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:a1f60dc14658efaa927f8214734f6a01a806d7690be4b3232ba526836d216122", size = 40619853, upload_time = "2025-04-27T12:32:28.1Z" }, - { url = "https://files.pythonhosted.org/packages/29/c2/3ad40e07e96a3e74e7ed7cc8285aadfa84eb848a798c98ec0ad009eb6bcc/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:204a846dca751428991346976b914d6d2a82ae5b8316a6ed99789ebf976551e6", size = 42241743, upload_time = "2025-04-27T12:32:35.792Z" }, - { url = "https://files.pythonhosted.org/packages/eb/cb/65fa110b483339add6a9bc7b6373614166b14e20375d4daa73483755f830/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f3b117b922af5e4c6b9a9115825726cac7d8b1421c37c2b5e24fbacc8930612c", size = 42839441, upload_time = "2025-04-27T12:32:46.64Z" }, - { url = "https://files.pythonhosted.org/packages/98/7b/f30b1954589243207d7a0fbc9997401044bf9a033eec78f6cb50da3f304a/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e724a3fd23ae5b9c010e7be857f4405ed5e679db5c93e66204db1a69f733936a", size = 44503279, upload_time = "2025-04-27T12:32:56.503Z" }, - { url = "https://files.pythonhosted.org/packages/37/40/ad395740cd641869a13bcf60851296c89624662575621968dcfafabaa7f6/pyarrow-20.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:82f1ee5133bd8f49d31be1299dc07f585136679666b502540db854968576faf9", size = 25944982, upload_time = "2025-04-27T12:33:04.72Z" }, -] - [[package]] name = "pycparser" version = "2.22" @@ -1595,81 +1045,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload_time = "2024-03-30T13:22:20.476Z" }, ] -[[package]] -name = "pydantic" -version = "2.11.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "annotated-types" }, - { name = "pydantic-core" }, - { name = "typing-extensions" }, - { name = "typing-inspection" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload_time = "2025-06-14T08:33:17.137Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload_time = "2025-06-14T08:33:14.905Z" }, -] - -[[package]] -name = "pydantic-core" -version = "2.33.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload_time = "2025-04-23T18:33:52.104Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload_time = "2025-04-23T18:31:25.863Z" }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload_time = "2025-04-23T18:31:27.341Z" }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload_time = "2025-04-23T18:31:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload_time = "2025-04-23T18:31:31.025Z" }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload_time = "2025-04-23T18:31:32.514Z" }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload_time = "2025-04-23T18:31:33.958Z" }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload_time = "2025-04-23T18:31:39.095Z" }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload_time = "2025-04-23T18:31:41.034Z" }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload_time = "2025-04-23T18:31:42.757Z" }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload_time = "2025-04-23T18:31:44.304Z" }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload_time = "2025-04-23T18:31:45.891Z" }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload_time = "2025-04-23T18:31:47.819Z" }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload_time = "2025-04-23T18:31:49.635Z" }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload_time = "2025-04-23T18:31:51.609Z" }, - { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload_time = "2025-04-23T18:31:53.175Z" }, - { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload_time = "2025-04-23T18:31:54.79Z" }, - { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload_time = "2025-04-23T18:31:57.393Z" }, - { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload_time = "2025-04-23T18:31:59.065Z" }, - { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload_time = "2025-04-23T18:32:00.78Z" }, - { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload_time = "2025-04-23T18:32:02.418Z" }, - { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload_time = "2025-04-23T18:32:04.152Z" }, - { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload_time = "2025-04-23T18:32:06.129Z" }, - { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload_time = "2025-04-23T18:32:08.178Z" }, - { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload_time = "2025-04-23T18:32:10.242Z" }, - { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload_time = "2025-04-23T18:32:12.382Z" }, - { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload_time = "2025-04-23T18:32:14.034Z" }, - { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload_time = "2025-04-23T18:32:15.783Z" }, - { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload_time = "2025-04-23T18:32:18.473Z" }, - { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload_time = "2025-04-23T18:32:20.188Z" }, - { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload_time = "2025-04-23T18:32:22.354Z" }, - { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload_time = "2025-04-23T18:32:25.088Z" }, -] - -[[package]] -name = "pydeflate" -version = "2.1.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "hdx-python-country" }, - { name = "imf-reader" }, - { name = "oda-reader" }, - { name = "pandas" }, - { name = "pyarrow" }, - { name = "requests" }, - { name = "wbgapi" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5e/72/3e56d8166ca4b366a4e37c85711a706bba66768f70ba690bdb279f728d8d/pydeflate-2.1.3.tar.gz", hash = "sha256:48a2b74ad900dd8c50dfb1e4cdfcea8ca11cbd2d3a713bf9208f2028fea4cf4f", size = 26586, upload_time = "2025-06-03T09:38:12.25Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/31/31/e703ab5bc311c58e4dc00759d7a48a850877b8bbcd64c9778e2315e06bd5/pydeflate-2.1.3-py3-none-any.whl", hash = "sha256:09ebdde04eb2fea1c4b6712889cb2a9d4c2dd22ce0204aaeae64f4335667354f", size = 32540, upload_time = "2025-06-03T09:38:10.858Z" }, -] - [[package]] name = "pygments" version = "2.19.2" @@ -1692,27 +1067,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/98/d4/10bb14004d3c792811e05e21b5e5dcae805aacb739bd12a0540967b99592/pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2", size = 266143, upload_time = "2025-06-21T17:56:35.356Z" }, ] -[[package]] -name = "pyparsing" -version = "3.2.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload_time = "2025-03-25T05:01:28.114Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload_time = "2025-03-25T05:01:24.908Z" }, -] - -[[package]] -name = "pyphonetics" -version = "0.5.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "unidecode" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d6/7c/7c45a9e9bf6ddb57b67e66cf4e8076a7baf3a790a3411daac1a7a2df0c5b/pyphonetics-0.5.3.tar.gz", hash = "sha256:2d3c2e359fde91a3c57914f0b5468bba7a5daf38e7927fd999992ea68990fbe4", size = 10314, upload_time = "2020-02-25T12:08:31.049Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/dd/a7d0a860efd3d4335d538b4361b8e9af8311f2aba2e8c7e4c7a47d623b6e/pyphonetics-0.5.3-py2.py3-none-any.whl", hash = "sha256:e6b29671d0d624dda1cac59c0c5a8a7216d8db504bae4941bfc482e04a0621d1", size = 10729, upload_time = "2020-02-25T12:08:25.368Z" }, -] - [[package]] name = "pytest" version = "8.4.1" @@ -1730,40 +1084,30 @@ wheels = [ ] [[package]] -name = "python-calamine" -version = "0.4.0" +name = "pytest-cov" +version = "6.2.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "packaging" }, + { name = "coverage" }, + { name = "pluggy" }, + { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cc/03/269f96535705b2f18c8977fa58e76763b4e4727a9b3ae277a9468c8ffe05/python_calamine-0.4.0.tar.gz", hash = "sha256:94afcbae3fec36d2d7475095a59d4dc6fae45829968c743cb799ebae269d7bbf", size = 127737, upload_time = "2025-07-04T06:05:28.626Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/63/60/f951513aaaa470b3a38a87d65eca45e0a02bc329b47864f5a17db563f746/python_calamine-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:74bca5d44a73acf3dcfa5370820797fcfd225c8c71abcddea987c5b4f5077e98", size = 826603, upload_time = "2025-07-04T06:03:51.245Z" }, - { url = "https://files.pythonhosted.org/packages/76/3f/789955bbc77831c639890758f945eb2b25d6358065edf00da6751226cf31/python_calamine-0.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cf80178f5d1b0ee2ccfffb8549c50855f6249e930664adc5807f4d0d6c2b269c", size = 805826, upload_time = "2025-07-04T06:03:52.482Z" }, - { url = "https://files.pythonhosted.org/packages/00/4c/f87d17d996f647030a40bfd124fe45fe893c002bee35ae6aca9910a923ae/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65cfef345386ae86f7720f1be93495a40fd7e7feabb8caa1df5025d7fbc58a1f", size = 874989, upload_time = "2025-07-04T06:03:53.794Z" }, - { url = "https://files.pythonhosted.org/packages/47/d2/3269367303f6c0488cf1bfebded3f9fe968d118a988222e04c9b2636bf2e/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f23e6214dbf9b29065a5dcfd6a6c674dd0e251407298c9138611c907d53423ff", size = 877504, upload_time = "2025-07-04T06:03:55.095Z" }, - { url = "https://files.pythonhosted.org/packages/f9/6d/c7ac35f5c7125e8bd07eb36773f300fda20dd2da635eae78a8cebb0b6ab7/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d792d304ee232ab01598e1d3ab22e074a32c2511476b5fb4f16f4222d9c2a265", size = 1014171, upload_time = "2025-07-04T06:03:56.777Z" }, - { url = "https://files.pythonhosted.org/packages/f0/81/5ea8792a2e9ab5e2a05872db3a4d3ed3538ad5af1861282c789e2f13a8cf/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf813425918fd68f3e991ef7c4b5015be0a1a95fc4a8ab7e73c016ef1b881bb4", size = 926737, upload_time = "2025-07-04T06:03:58.024Z" }, - { url = "https://files.pythonhosted.org/packages/cc/6e/989e56e6f073fc0981a74ba7a393881eb351bb143e5486aa629b5e5d6a8b/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbe2a0ccb4d003635888eea83a995ff56b0748c8c76fc71923544f5a4a7d4cd7", size = 887032, upload_time = "2025-07-04T06:03:59.298Z" }, - { url = "https://files.pythonhosted.org/packages/5d/92/2c9bd64277c6fe4be695d7d5a803b38d953ec8565037486be7506642c27c/python_calamine-0.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a7b3bb5f0d910b9b03c240987560f843256626fd443279759df4e91b717826d2", size = 929700, upload_time = "2025-07-04T06:04:01.388Z" }, - { url = "https://files.pythonhosted.org/packages/64/fa/fc758ca37701d354a6bc7d63118699f1c73788a1f2e1b44d720824992764/python_calamine-0.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bd2c0fc2b5eabd08ceac8a2935bffa88dbc6116db971aa8c3f244bad3fd0f644", size = 1053971, upload_time = "2025-07-04T06:04:02.704Z" }, - { url = "https://files.pythonhosted.org/packages/65/52/40d7e08ae0ddba331cdc9f7fb3e92972f8f38d7afbd00228158ff6d1fceb/python_calamine-0.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:85b547cb1c5b692a0c2406678d666dbc1cec65a714046104683fe4f504a1721d", size = 1057057, upload_time = "2025-07-04T06:04:04.014Z" }, - { url = "https://files.pythonhosted.org/packages/16/de/e8a071c0adfda73285d891898a24f6e99338328c404f497ff5b0e6bc3d45/python_calamine-0.4.0-cp312-cp312-win32.whl", hash = "sha256:4c2a1e3a0db4d6de4587999a21cc35845648c84fba81c03dd6f3072c690888e4", size = 665540, upload_time = "2025-07-04T06:04:05.679Z" }, - { url = "https://files.pythonhosted.org/packages/5e/f2/7fdfada13f80db12356853cf08697ff4e38800a1809c2bdd26ee60962e7a/python_calamine-0.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b193c89ffcc146019475cd121c552b23348411e19c04dedf5c766a20db64399a", size = 695366, upload_time = "2025-07-04T06:04:06.977Z" }, - { url = "https://files.pythonhosted.org/packages/20/66/d37412ad854480ce32f50d9f74f2a2f88b1b8a6fbc32f70aabf3211ae89e/python_calamine-0.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:43a0f15e0b60c75a71b21a012b911d5d6f5fa052afad2a8edbc728af43af0fcf", size = 670740, upload_time = "2025-07-04T06:04:08.656Z" }, - { url = "https://files.pythonhosted.org/packages/5a/10/f78218ccdc5bb5591a37d582c7e8723121d0fbe8196c5a4089110ec02f22/python_calamine-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f8d6b2d2ae73acf91343f02756bdcb2fa6117db4eaf5cfab75ce50dfb54525ee", size = 826339, upload_time = "2025-07-04T06:04:10.254Z" }, - { url = "https://files.pythonhosted.org/packages/15/b1/d7d0dbbd0469db0fc628b1b9ee3a8f3b698391279f0d7aea96e2018a3863/python_calamine-0.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:aca7e019f42ca16806fef53e3028fa158005c0e68eabda577c3f3c2bea9735fd", size = 805473, upload_time = "2025-07-04T06:04:11.557Z" }, - { url = "https://files.pythonhosted.org/packages/46/52/033b902fb11f9b4bb59fa18621acbf5eaf4ecb0bce878d34fcb0020229df/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aca67cb447ba8dcefa4d5a1131d1cfdd1e0d0a0f0c6470655ce9ad37b7cfa228", size = 874275, upload_time = "2025-07-04T06:04:13.318Z" }, - { url = "https://files.pythonhosted.org/packages/56/12/e6b589293314a5d10b2c309411542424ebefb77430cc715d7601d80349ae/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e127d3b78d511d4f6fbdfed02fe666d83a722d73e27dd64d1718be9efafbabfe", size = 877061, upload_time = "2025-07-04T06:04:15.013Z" }, - { url = "https://files.pythonhosted.org/packages/64/24/0eeb583eb5d44f674ca9f7a846c665e33190431386d7c9f6d08ec9f09d3c/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e47891d9d62e3015448749ddb2ba60ab583a651d0fca9a3a1794936942ad7d5d", size = 1013946, upload_time = "2025-07-04T06:04:16.647Z" }, - { url = "https://files.pythonhosted.org/packages/c4/93/360cf58b8e24f760a3d4643423389dbc37bdca8b6fdda75ffc664ce622b5/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4072bf9dcb8ec49f5b92688bd960b5d0e03e4826d227bbd66478a6f6b0aea06", size = 926462, upload_time = "2025-07-04T06:04:17.936Z" }, - { url = "https://files.pythonhosted.org/packages/5a/5d/3b8c46ccc62d020858bc52f2d792208910eb68682c6ebf8d6706593d7a88/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eabc9dc770f753c4227aacedd8390056937e67af0bf65d6696c584d3054f1287", size = 886319, upload_time = "2025-07-04T06:04:19.33Z" }, - { url = "https://files.pythonhosted.org/packages/66/cf/73241714800bddb277f827c4683f579b81915406bf7dc643dc185cef7eb2/python_calamine-0.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6a4bcf36dc77674892616b66cffba432f5fd62df3e0adb0487ec245036b50041", size = 929044, upload_time = "2025-07-04T06:04:20.689Z" }, - { url = "https://files.pythonhosted.org/packages/7c/6b/71e30ee568ce1ea6676be66f1a42c6397946859effc471cc102922fb4792/python_calamine-0.4.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:f81518d4b49c47054cb1861badf5bcef44b0a49959968fb2e9c9cb89645c76af", size = 1053084, upload_time = "2025-07-04T06:04:22.414Z" }, - { url = "https://files.pythonhosted.org/packages/75/19/87b42fe975f8952754562785a545f6d2eec17c353befdf33a8e16c046ce0/python_calamine-0.4.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:18375eb3ac1362fcbf3a9fcad0672d8dc054001247bc52f063e0054a3e01a8d1", size = 1056735, upload_time = "2025-07-04T06:04:23.903Z" }, - { url = "https://files.pythonhosted.org/packages/04/db/ecee6e5d6ed4f3725312580a83c4cb1758c9060aa08bf2d8512d3396cea1/python_calamine-0.4.0-cp313-cp313-win32.whl", hash = "sha256:c7e98c7e531bafdf719414d0c428f25f933a82640fb92e6e84864a85e758aecc", size = 665282, upload_time = "2025-07-04T06:04:25.274Z" }, - { url = "https://files.pythonhosted.org/packages/cb/0b/26337e0a0e2b335c1d6225bda8de259a21fea129a06009c1471deda28e1f/python_calamine-0.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:6ec081b874e78f4dbcbe70804644281366814289956755575a5871f725592d4e", size = 694982, upload_time = "2025-07-04T06:04:26.573Z" }, - { url = "https://files.pythonhosted.org/packages/90/26/f72c2b2fe70f2901abb41fcdf8249181133ddd72b9392cfb63d030393b3e/python_calamine-0.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:3f9bdf570023138ee4090a51b1e34786978d6e649852ccc3b83ac9729f125ca2", size = 670283, upload_time = "2025-07-04T06:04:28.434Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/18/99/668cade231f434aaa59bbfbf49469068d2ddd945000621d3d165d2e7dd7b/pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2", size = 69432, upload_time = "2025-06-12T10:47:47.684Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bc/16/4ea354101abb1287856baa4af2732be351c7bee728065aed451b678153fd/pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5", size = 24644, upload_time = "2025-06-12T10:47:45.932Z" }, +] + +[[package]] +name = "pytest-xdist" +version = "3.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "execnet" }, + { name = "pytest" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/78/b4/439b179d1ff526791eb921115fca8e44e596a13efeda518b9d845a619450/pytest_xdist-3.8.0.tar.gz", hash = "sha256:7e578125ec9bc6050861aa93f2d59f1d8d085595d6551c2c90b6f4fad8d3a9f1", size = 88069, upload_time = "2025-07-01T13:30:59.346Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/31/d4e37e9e550c2b92a9cbc2e4d0b7420a27224968580b5a447f420847c975/pytest_xdist-3.8.0-py3-none-any.whl", hash = "sha256:202ca578cfeb7370784a8c33d6d05bc6e13b4f25b5053c30a152269fd10f0b88", size = 46396, upload_time = "2025-07-01T13:30:56.632Z" }, ] [[package]] @@ -1779,21 +1123,15 @@ wheels = [ ] [[package]] -name = "python-io-wrapper" -version = "0.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/74/8dc5f7d0b7cc1a0ca9e5c320abf11adee2094998c93ae8c9c80d9a8323ff/python-io-wrapper-0.3.1.tar.gz", hash = "sha256:e3391787ff0d9870e739294c6392437915502153e695a017450aa46b6d091762", size = 3271, upload_time = "2022-11-14T15:00:10.932Z" } - -[[package]] -name = "python-slugify" -version = "8.0.4" +name = "python-debian" +version = "1.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "text-unidecode" }, + { name = "charset-normalizer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921, upload_time = "2024-02-08T18:32:45.488Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/4b/3c4cf635311b6203f17c2d693dc15e898969983dd3f729bee3c428aa60d4/python-debian-1.0.1.tar.gz", hash = "sha256:3ada9b83a3d671b58081782c0969cffa0102f6ce433fbbc7cf21275b8b5cc771", size = 127249, upload_time = "2025-03-11T12:27:27.245Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051, upload_time = "2024-02-08T18:32:43.911Z" }, + { url = "https://files.pythonhosted.org/packages/ba/15/e8096189b18dda72e4923622abc10b021ecff723b397e22eff29fb86637b/python_debian-1.0.1-py3-none-any.whl", hash = "sha256:8f137c230c1d9279c2ac892b35915068b2aca090c9fd3da5671ff87af32af12c", size = 137453, upload_time = "2025-03-11T12:27:25.014Z" }, ] [[package]] @@ -1886,26 +1224,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/eb/bc/1709dc55f0970cf4cb8259e435e6773f9946f41a045c2cb90e870b7072da/pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f", size = 639933, upload_time = "2025-06-13T14:08:00.777Z" }, ] -[[package]] -name = "ratelimit" -version = "2.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ab/38/ff60c8fc9e002d50d48822cc5095deb8ebbc5f91a6b8fdd9731c87a147c9/ratelimit-2.2.1.tar.gz", hash = "sha256:af8a9b64b821529aca09ebaf6d8d279100d766f19e90b5059ac6a718ca6dee42", size = 5251, upload_time = "2018-12-17T18:55:49.675Z" } - -[[package]] -name = "referencing" -version = "0.36.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "rpds-py" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload_time = "2025-01-25T08:48:16.138Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload_time = "2025-01-25T08:48:14.241Z" }, -] - [[package]] name = "requests" version = "2.32.4" @@ -1922,176 +1240,22 @@ wheels = [ ] [[package]] -name = "requests-file" -version = "2.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/72/97/bf44e6c6bd8ddbb99943baf7ba8b1a8485bcd2fe0e55e5708d7fee4ff1ae/requests_file-2.1.0.tar.gz", hash = "sha256:0f549a3f3b0699415ac04d167e9cb39bccfb730cb832b4d20be3d9867356e658", size = 6891, upload_time = "2024-05-21T16:28:00.24Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/25/dd878a121fcfdf38f52850f11c512e13ec87c2ea72385933818e5b6c15ce/requests_file-2.1.0-py2.py3-none-any.whl", hash = "sha256:cf270de5a4c5874e84599fc5778303d496c10ae5e870bfa378818f35d21bda5c", size = 4244, upload_time = "2024-05-21T16:27:57.733Z" }, -] - -[[package]] -name = "rfc3986" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026, upload_time = "2022-01-10T00:52:30.832Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326, upload_time = "2022-01-10T00:52:29.594Z" }, -] - -[[package]] -name = "rich" -version = "14.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markdown-it-py" }, - { name = "pygments" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078, upload_time = "2025-03-30T14:15:14.23Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229, upload_time = "2025-03-30T14:15:12.283Z" }, -] - -[[package]] -name = "rpds-py" -version = "0.26.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/aa/4456d84bbb54adc6a916fb10c9b374f78ac840337644e4a5eda229c81275/rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0", size = 27385, upload_time = "2025-07-01T15:57:13.958Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ea/86/90eb87c6f87085868bd077c7a9938006eb1ce19ed4d06944a90d3560fce2/rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d", size = 363933, upload_time = "2025-07-01T15:54:15.734Z" }, - { url = "https://files.pythonhosted.org/packages/63/78/4469f24d34636242c924626082b9586f064ada0b5dbb1e9d096ee7a8e0c6/rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136", size = 350447, upload_time = "2025-07-01T15:54:16.922Z" }, - { url = "https://files.pythonhosted.org/packages/ad/91/c448ed45efdfdade82348d5e7995e15612754826ea640afc20915119734f/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582", size = 384711, upload_time = "2025-07-01T15:54:18.101Z" }, - { url = "https://files.pythonhosted.org/packages/ec/43/e5c86fef4be7f49828bdd4ecc8931f0287b1152c0bb0163049b3218740e7/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e", size = 400865, upload_time = "2025-07-01T15:54:19.295Z" }, - { url = "https://files.pythonhosted.org/packages/55/34/e00f726a4d44f22d5c5fe2e5ddd3ac3d7fd3f74a175607781fbdd06fe375/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15", size = 517763, upload_time = "2025-07-01T15:54:20.858Z" }, - { url = "https://files.pythonhosted.org/packages/52/1c/52dc20c31b147af724b16104500fba13e60123ea0334beba7b40e33354b4/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8", size = 406651, upload_time = "2025-07-01T15:54:22.508Z" }, - { url = "https://files.pythonhosted.org/packages/2e/77/87d7bfabfc4e821caa35481a2ff6ae0b73e6a391bb6b343db2c91c2b9844/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a", size = 386079, upload_time = "2025-07-01T15:54:23.987Z" }, - { url = "https://files.pythonhosted.org/packages/e3/d4/7f2200c2d3ee145b65b3cddc4310d51f7da6a26634f3ac87125fd789152a/rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323", size = 421379, upload_time = "2025-07-01T15:54:25.073Z" }, - { url = "https://files.pythonhosted.org/packages/ae/13/9fdd428b9c820869924ab62236b8688b122baa22d23efdd1c566938a39ba/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158", size = 562033, upload_time = "2025-07-01T15:54:26.225Z" }, - { url = "https://files.pythonhosted.org/packages/f3/e1/b69686c3bcbe775abac3a4c1c30a164a2076d28df7926041f6c0eb5e8d28/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3", size = 591639, upload_time = "2025-07-01T15:54:27.424Z" }, - { url = "https://files.pythonhosted.org/packages/5c/c9/1e3d8c8863c84a90197ac577bbc3d796a92502124c27092413426f670990/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2", size = 557105, upload_time = "2025-07-01T15:54:29.93Z" }, - { url = "https://files.pythonhosted.org/packages/9f/c5/90c569649057622959f6dcc40f7b516539608a414dfd54b8d77e3b201ac0/rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44", size = 223272, upload_time = "2025-07-01T15:54:31.128Z" }, - { url = "https://files.pythonhosted.org/packages/7d/16/19f5d9f2a556cfed454eebe4d354c38d51c20f3db69e7b4ce6cff904905d/rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c", size = 234995, upload_time = "2025-07-01T15:54:32.195Z" }, - { url = "https://files.pythonhosted.org/packages/83/f0/7935e40b529c0e752dfaa7880224771b51175fce08b41ab4a92eb2fbdc7f/rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8", size = 223198, upload_time = "2025-07-01T15:54:33.271Z" }, - { url = "https://files.pythonhosted.org/packages/6a/67/bb62d0109493b12b1c6ab00de7a5566aa84c0e44217c2d94bee1bd370da9/rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d", size = 363917, upload_time = "2025-07-01T15:54:34.755Z" }, - { url = "https://files.pythonhosted.org/packages/4b/f3/34e6ae1925a5706c0f002a8d2d7f172373b855768149796af87bd65dcdb9/rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1", size = 350073, upload_time = "2025-07-01T15:54:36.292Z" }, - { url = "https://files.pythonhosted.org/packages/75/83/1953a9d4f4e4de7fd0533733e041c28135f3c21485faaef56a8aadbd96b5/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e", size = 384214, upload_time = "2025-07-01T15:54:37.469Z" }, - { url = "https://files.pythonhosted.org/packages/48/0e/983ed1b792b3322ea1d065e67f4b230f3b96025f5ce3878cc40af09b7533/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1", size = 400113, upload_time = "2025-07-01T15:54:38.954Z" }, - { url = "https://files.pythonhosted.org/packages/69/7f/36c0925fff6f660a80be259c5b4f5e53a16851f946eb080351d057698528/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9", size = 515189, upload_time = "2025-07-01T15:54:40.57Z" }, - { url = "https://files.pythonhosted.org/packages/13/45/cbf07fc03ba7a9b54662c9badb58294ecfb24f828b9732970bd1a431ed5c/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7", size = 406998, upload_time = "2025-07-01T15:54:43.025Z" }, - { url = "https://files.pythonhosted.org/packages/6c/b0/8fa5e36e58657997873fd6a1cf621285ca822ca75b4b3434ead047daa307/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04", size = 385903, upload_time = "2025-07-01T15:54:44.752Z" }, - { url = "https://files.pythonhosted.org/packages/4b/f7/b25437772f9f57d7a9fbd73ed86d0dcd76b4c7c6998348c070d90f23e315/rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1", size = 419785, upload_time = "2025-07-01T15:54:46.043Z" }, - { url = "https://files.pythonhosted.org/packages/a7/6b/63ffa55743dfcb4baf2e9e77a0b11f7f97ed96a54558fcb5717a4b2cd732/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9", size = 561329, upload_time = "2025-07-01T15:54:47.64Z" }, - { url = "https://files.pythonhosted.org/packages/2f/07/1f4f5e2886c480a2346b1e6759c00278b8a69e697ae952d82ae2e6ee5db0/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9", size = 590875, upload_time = "2025-07-01T15:54:48.9Z" }, - { url = "https://files.pythonhosted.org/packages/cc/bc/e6639f1b91c3a55f8c41b47d73e6307051b6e246254a827ede730624c0f8/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba", size = 556636, upload_time = "2025-07-01T15:54:50.619Z" }, - { url = "https://files.pythonhosted.org/packages/05/4c/b3917c45566f9f9a209d38d9b54a1833f2bb1032a3e04c66f75726f28876/rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b", size = 222663, upload_time = "2025-07-01T15:54:52.023Z" }, - { url = "https://files.pythonhosted.org/packages/e0/0b/0851bdd6025775aaa2365bb8de0697ee2558184c800bfef8d7aef5ccde58/rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5", size = 234428, upload_time = "2025-07-01T15:54:53.692Z" }, - { url = "https://files.pythonhosted.org/packages/ed/e8/a47c64ed53149c75fb581e14a237b7b7cd18217e969c30d474d335105622/rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256", size = 222571, upload_time = "2025-07-01T15:54:54.822Z" }, - { url = "https://files.pythonhosted.org/packages/89/bf/3d970ba2e2bcd17d2912cb42874107390f72873e38e79267224110de5e61/rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618", size = 360475, upload_time = "2025-07-01T15:54:56.228Z" }, - { url = "https://files.pythonhosted.org/packages/82/9f/283e7e2979fc4ec2d8ecee506d5a3675fce5ed9b4b7cb387ea5d37c2f18d/rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35", size = 346692, upload_time = "2025-07-01T15:54:58.561Z" }, - { url = "https://files.pythonhosted.org/packages/e3/03/7e50423c04d78daf391da3cc4330bdb97042fc192a58b186f2d5deb7befd/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f", size = 379415, upload_time = "2025-07-01T15:54:59.751Z" }, - { url = "https://files.pythonhosted.org/packages/57/00/d11ee60d4d3b16808432417951c63df803afb0e0fc672b5e8d07e9edaaae/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83", size = 391783, upload_time = "2025-07-01T15:55:00.898Z" }, - { url = "https://files.pythonhosted.org/packages/08/b3/1069c394d9c0d6d23c5b522e1f6546b65793a22950f6e0210adcc6f97c3e/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1", size = 512844, upload_time = "2025-07-01T15:55:02.201Z" }, - { url = "https://files.pythonhosted.org/packages/08/3b/c4fbf0926800ed70b2c245ceca99c49f066456755f5d6eb8863c2c51e6d0/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8", size = 402105, upload_time = "2025-07-01T15:55:03.698Z" }, - { url = "https://files.pythonhosted.org/packages/1c/b0/db69b52ca07413e568dae9dc674627a22297abb144c4d6022c6d78f1e5cc/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f", size = 383440, upload_time = "2025-07-01T15:55:05.398Z" }, - { url = "https://files.pythonhosted.org/packages/4c/e1/c65255ad5b63903e56b3bb3ff9dcc3f4f5c3badde5d08c741ee03903e951/rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed", size = 412759, upload_time = "2025-07-01T15:55:08.316Z" }, - { url = "https://files.pythonhosted.org/packages/e4/22/bb731077872377a93c6e93b8a9487d0406c70208985831034ccdeed39c8e/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632", size = 556032, upload_time = "2025-07-01T15:55:09.52Z" }, - { url = "https://files.pythonhosted.org/packages/e0/8b/393322ce7bac5c4530fb96fc79cc9ea2f83e968ff5f6e873f905c493e1c4/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c", size = 585416, upload_time = "2025-07-01T15:55:11.216Z" }, - { url = "https://files.pythonhosted.org/packages/49/ae/769dc372211835bf759319a7aae70525c6eb523e3371842c65b7ef41c9c6/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0", size = 554049, upload_time = "2025-07-01T15:55:13.004Z" }, - { url = "https://files.pythonhosted.org/packages/6b/f9/4c43f9cc203d6ba44ce3146246cdc38619d92c7bd7bad4946a3491bd5b70/rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9", size = 218428, upload_time = "2025-07-01T15:55:14.486Z" }, - { url = "https://files.pythonhosted.org/packages/7e/8b/9286b7e822036a4a977f2f1e851c7345c20528dbd56b687bb67ed68a8ede/rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9", size = 231524, upload_time = "2025-07-01T15:55:15.745Z" }, - { url = "https://files.pythonhosted.org/packages/55/07/029b7c45db910c74e182de626dfdae0ad489a949d84a468465cd0ca36355/rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a", size = 364292, upload_time = "2025-07-01T15:55:17.001Z" }, - { url = "https://files.pythonhosted.org/packages/13/d1/9b3d3f986216b4d1f584878dca15ce4797aaf5d372d738974ba737bf68d6/rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf", size = 350334, upload_time = "2025-07-01T15:55:18.922Z" }, - { url = "https://files.pythonhosted.org/packages/18/98/16d5e7bc9ec715fa9668731d0cf97f6b032724e61696e2db3d47aeb89214/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12", size = 384875, upload_time = "2025-07-01T15:55:20.399Z" }, - { url = "https://files.pythonhosted.org/packages/f9/13/aa5e2b1ec5ab0e86a5c464d53514c0467bec6ba2507027d35fc81818358e/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20", size = 399993, upload_time = "2025-07-01T15:55:21.729Z" }, - { url = "https://files.pythonhosted.org/packages/17/03/8021810b0e97923abdbab6474c8b77c69bcb4b2c58330777df9ff69dc559/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331", size = 516683, upload_time = "2025-07-01T15:55:22.918Z" }, - { url = "https://files.pythonhosted.org/packages/dc/b1/da8e61c87c2f3d836954239fdbbfb477bb7b54d74974d8f6fcb34342d166/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f", size = 408825, upload_time = "2025-07-01T15:55:24.207Z" }, - { url = "https://files.pythonhosted.org/packages/38/bc/1fc173edaaa0e52c94b02a655db20697cb5fa954ad5a8e15a2c784c5cbdd/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246", size = 387292, upload_time = "2025-07-01T15:55:25.554Z" }, - { url = "https://files.pythonhosted.org/packages/7c/eb/3a9bb4bd90867d21916f253caf4f0d0be7098671b6715ad1cead9fe7bab9/rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387", size = 420435, upload_time = "2025-07-01T15:55:27.798Z" }, - { url = "https://files.pythonhosted.org/packages/cd/16/e066dcdb56f5632713445271a3f8d3d0b426d51ae9c0cca387799df58b02/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af", size = 562410, upload_time = "2025-07-01T15:55:29.057Z" }, - { url = "https://files.pythonhosted.org/packages/60/22/ddbdec7eb82a0dc2e455be44c97c71c232983e21349836ce9f272e8a3c29/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33", size = 590724, upload_time = "2025-07-01T15:55:30.719Z" }, - { url = "https://files.pythonhosted.org/packages/2c/b4/95744085e65b7187d83f2fcb0bef70716a1ea0a9e5d8f7f39a86e5d83424/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953", size = 558285, upload_time = "2025-07-01T15:55:31.981Z" }, - { url = "https://files.pythonhosted.org/packages/37/37/6309a75e464d1da2559446f9c811aa4d16343cebe3dbb73701e63f760caa/rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9", size = 223459, upload_time = "2025-07-01T15:55:33.312Z" }, - { url = "https://files.pythonhosted.org/packages/d9/6f/8e9c11214c46098b1d1391b7e02b70bb689ab963db3b19540cba17315291/rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37", size = 236083, upload_time = "2025-07-01T15:55:34.933Z" }, - { url = "https://files.pythonhosted.org/packages/47/af/9c4638994dd623d51c39892edd9d08e8be8220a4b7e874fa02c2d6e91955/rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867", size = 223291, upload_time = "2025-07-01T15:55:36.202Z" }, - { url = "https://files.pythonhosted.org/packages/4d/db/669a241144460474aab03e254326b32c42def83eb23458a10d163cb9b5ce/rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da", size = 361445, upload_time = "2025-07-01T15:55:37.483Z" }, - { url = "https://files.pythonhosted.org/packages/3b/2d/133f61cc5807c6c2fd086a46df0eb8f63a23f5df8306ff9f6d0fd168fecc/rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7", size = 347206, upload_time = "2025-07-01T15:55:38.828Z" }, - { url = "https://files.pythonhosted.org/packages/05/bf/0e8fb4c05f70273469eecf82f6ccf37248558526a45321644826555db31b/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad", size = 380330, upload_time = "2025-07-01T15:55:40.175Z" }, - { url = "https://files.pythonhosted.org/packages/d4/a8/060d24185d8b24d3923322f8d0ede16df4ade226a74e747b8c7c978e3dd3/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d", size = 392254, upload_time = "2025-07-01T15:55:42.015Z" }, - { url = "https://files.pythonhosted.org/packages/b9/7b/7c2e8a9ee3e6bc0bae26bf29f5219955ca2fbb761dca996a83f5d2f773fe/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca", size = 516094, upload_time = "2025-07-01T15:55:43.603Z" }, - { url = "https://files.pythonhosted.org/packages/75/d6/f61cafbed8ba1499b9af9f1777a2a199cd888f74a96133d8833ce5eaa9c5/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19", size = 402889, upload_time = "2025-07-01T15:55:45.275Z" }, - { url = "https://files.pythonhosted.org/packages/92/19/c8ac0a8a8df2dd30cdec27f69298a5c13e9029500d6d76718130f5e5be10/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8", size = 384301, upload_time = "2025-07-01T15:55:47.098Z" }, - { url = "https://files.pythonhosted.org/packages/41/e1/6b1859898bc292a9ce5776016c7312b672da00e25cec74d7beced1027286/rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b", size = 412891, upload_time = "2025-07-01T15:55:48.412Z" }, - { url = "https://files.pythonhosted.org/packages/ef/b9/ceb39af29913c07966a61367b3c08b4f71fad841e32c6b59a129d5974698/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a", size = 557044, upload_time = "2025-07-01T15:55:49.816Z" }, - { url = "https://files.pythonhosted.org/packages/2f/27/35637b98380731a521f8ec4f3fd94e477964f04f6b2f8f7af8a2d889a4af/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170", size = 585774, upload_time = "2025-07-01T15:55:51.192Z" }, - { url = "https://files.pythonhosted.org/packages/52/d9/3f0f105420fecd18551b678c9a6ce60bd23986098b252a56d35781b3e7e9/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e", size = 554886, upload_time = "2025-07-01T15:55:52.541Z" }, - { url = "https://files.pythonhosted.org/packages/6b/c5/347c056a90dc8dd9bc240a08c527315008e1b5042e7a4cf4ac027be9d38a/rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f", size = 219027, upload_time = "2025-07-01T15:55:53.874Z" }, - { url = "https://files.pythonhosted.org/packages/75/04/5302cea1aa26d886d34cadbf2dc77d90d7737e576c0065f357b96dc7a1a6/rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7", size = 232821, upload_time = "2025-07-01T15:55:55.167Z" }, -] - -[[package]] -name = "ruamel-yaml" -version = "0.18.14" +name = "reuse" +version = "5.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "ruamel-yaml-clib", marker = "python_full_version < '3.14' and platform_python_implementation == 'CPython'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/39/87/6da0df742a4684263261c253f00edd5829e6aca970fff69e75028cccc547/ruamel.yaml-0.18.14.tar.gz", hash = "sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7", size = 145511, upload_time = "2025-06-09T08:51:09.828Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/af/6d/6fe4805235e193aad4aaf979160dd1f3c487c57d48b810c816e6e842171b/ruamel.yaml-0.18.14-py3-none-any.whl", hash = "sha256:710ff198bb53da66718c7db27eec4fbcc9aa6ca7204e4c1df2f282b6fe5eb6b2", size = 118570, upload_time = "2025-06-09T08:51:06.348Z" }, -] - -[[package]] -name = "ruamel-yaml-clib" -version = "0.2.12" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315, upload_time = "2024-10-20T10:10:56.22Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433, upload_time = "2024-10-20T10:12:55.657Z" }, - { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362, upload_time = "2024-10-20T10:12:57.155Z" }, - { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118, upload_time = "2024-10-20T10:12:58.501Z" }, - { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497, upload_time = "2024-10-20T10:13:00.211Z" }, - { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042, upload_time = "2024-10-21T11:26:46.038Z" }, - { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831, upload_time = "2024-10-21T11:26:47.487Z" }, - { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692, upload_time = "2024-12-11T19:58:17.252Z" }, - { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777, upload_time = "2024-10-20T10:13:01.395Z" }, - { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523, upload_time = "2024-10-20T10:13:02.768Z" }, - { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011, upload_time = "2024-10-20T10:13:04.377Z" }, - { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488, upload_time = "2024-10-20T10:13:05.906Z" }, - { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066, upload_time = "2024-10-20T10:13:07.26Z" }, - { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785, upload_time = "2024-10-20T10:13:08.504Z" }, - { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017, upload_time = "2024-10-21T11:26:48.866Z" }, - { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270, upload_time = "2024-10-21T11:26:50.213Z" }, - { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059, upload_time = "2024-12-11T19:58:18.846Z" }, - { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583, upload_time = "2024-10-20T10:13:09.658Z" }, - { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190, upload_time = "2024-10-20T10:13:10.66Z" }, + { name = "attrs" }, + { name = "binaryornot" }, + { name = "boolean-py" }, + { name = "click" }, + { name = "jinja2" }, + { name = "license-expression" }, + { name = "python-debian" }, + { name = "tomlkit" }, ] - -[[package]] -name = "ruff" -version = "0.12.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/3d/d9a195676f25d00dbfcf3cf95fdd4c685c497fcfa7e862a44ac5e4e96480/ruff-0.12.2.tar.gz", hash = "sha256:d7b4f55cd6f325cb7621244f19c873c565a08aff5a4ba9c69aa7355f3f7afd3e", size = 4432239, upload_time = "2025-07-03T16:40:19.566Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/43/35421efe0e69823787b331362e11cc16bb697cd6f19cbed284d421615f14/reuse-5.0.2.tar.gz", hash = "sha256:878016ae5dd29c10bad4606d6676c12a268c12aa9fcfea66403598e16eed085c", size = 358798, upload_time = "2024-11-14T09:33:17.512Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/74/b6/2098d0126d2d3318fd5bec3ad40d06c25d377d95749f7a0c5af17129b3b1/ruff-0.12.2-py3-none-linux_armv6l.whl", hash = "sha256:093ea2b221df1d2b8e7ad92fc6ffdca40a2cb10d8564477a987b44fd4008a7be", size = 10369761, upload_time = "2025-07-03T16:39:38.847Z" }, - { url = "https://files.pythonhosted.org/packages/b1/4b/5da0142033dbe155dc598cfb99262d8ee2449d76920ea92c4eeb9547c208/ruff-0.12.2-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:09e4cf27cc10f96b1708100fa851e0daf21767e9709e1649175355280e0d950e", size = 11155659, upload_time = "2025-07-03T16:39:42.294Z" }, - { url = "https://files.pythonhosted.org/packages/3e/21/967b82550a503d7c5c5c127d11c935344b35e8c521f52915fc858fb3e473/ruff-0.12.2-py3-none-macosx_11_0_arm64.whl", hash = "sha256:8ae64755b22f4ff85e9c52d1f82644abd0b6b6b6deedceb74bd71f35c24044cc", size = 10537769, upload_time = "2025-07-03T16:39:44.75Z" }, - { url = "https://files.pythonhosted.org/packages/33/91/00cff7102e2ec71a4890fb7ba1803f2cdb122d82787c7d7cf8041fe8cbc1/ruff-0.12.2-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3eb3a6b2db4d6e2c77e682f0b988d4d61aff06860158fdb413118ca133d57922", size = 10717602, upload_time = "2025-07-03T16:39:47.652Z" }, - { url = "https://files.pythonhosted.org/packages/9b/eb/928814daec4e1ba9115858adcda44a637fb9010618721937491e4e2283b8/ruff-0.12.2-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:73448de992d05517170fc37169cbca857dfeaeaa8c2b9be494d7bcb0d36c8f4b", size = 10198772, upload_time = "2025-07-03T16:39:49.641Z" }, - { url = "https://files.pythonhosted.org/packages/50/fa/f15089bc20c40f4f72334f9145dde55ab2b680e51afb3b55422effbf2fb6/ruff-0.12.2-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3b8b94317cbc2ae4a2771af641739f933934b03555e51515e6e021c64441532d", size = 11845173, upload_time = "2025-07-03T16:39:52.069Z" }, - { url = "https://files.pythonhosted.org/packages/43/9f/1f6f98f39f2b9302acc161a4a2187b1e3a97634fe918a8e731e591841cf4/ruff-0.12.2-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:45fc42c3bf1d30d2008023a0a9a0cfb06bf9835b147f11fe0679f21ae86d34b1", size = 12553002, upload_time = "2025-07-03T16:39:54.551Z" }, - { url = "https://files.pythonhosted.org/packages/d8/70/08991ac46e38ddd231c8f4fd05ef189b1b94be8883e8c0c146a025c20a19/ruff-0.12.2-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ce48f675c394c37e958bf229fb5c1e843e20945a6d962cf3ea20b7a107dcd9f4", size = 12171330, upload_time = "2025-07-03T16:39:57.55Z" }, - { url = "https://files.pythonhosted.org/packages/88/a9/5a55266fec474acfd0a1c73285f19dd22461d95a538f29bba02edd07a5d9/ruff-0.12.2-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:793d8859445ea47591272021a81391350205a4af65a9392401f418a95dfb75c9", size = 11774717, upload_time = "2025-07-03T16:39:59.78Z" }, - { url = "https://files.pythonhosted.org/packages/87/e5/0c270e458fc73c46c0d0f7cf970bb14786e5fdb88c87b5e423a4bd65232b/ruff-0.12.2-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6932323db80484dda89153da3d8e58164d01d6da86857c79f1961934354992da", size = 11646659, upload_time = "2025-07-03T16:40:01.934Z" }, - { url = "https://files.pythonhosted.org/packages/b7/b6/45ab96070c9752af37f0be364d849ed70e9ccede07675b0ec4e3ef76b63b/ruff-0.12.2-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:6aa7e623a3a11538108f61e859ebf016c4f14a7e6e4eba1980190cacb57714ce", size = 10604012, upload_time = "2025-07-03T16:40:04.363Z" }, - { url = "https://files.pythonhosted.org/packages/86/91/26a6e6a424eb147cc7627eebae095cfa0b4b337a7c1c413c447c9ebb72fd/ruff-0.12.2-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:2a4a20aeed74671b2def096bdf2eac610c7d8ffcbf4fb0e627c06947a1d7078d", size = 10176799, upload_time = "2025-07-03T16:40:06.514Z" }, - { url = "https://files.pythonhosted.org/packages/f5/0c/9f344583465a61c8918a7cda604226e77b2c548daf8ef7c2bfccf2b37200/ruff-0.12.2-py3-none-musllinux_1_2_i686.whl", hash = "sha256:71a4c550195612f486c9d1f2b045a600aeba851b298c667807ae933478fcef04", size = 11241507, upload_time = "2025-07-03T16:40:08.708Z" }, - { url = "https://files.pythonhosted.org/packages/1c/b7/99c34ded8fb5f86c0280278fa89a0066c3760edc326e935ce0b1550d315d/ruff-0.12.2-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:4987b8f4ceadf597c927beee65a5eaf994c6e2b631df963f86d8ad1bdea99342", size = 11717609, upload_time = "2025-07-03T16:40:10.836Z" }, - { url = "https://files.pythonhosted.org/packages/51/de/8589fa724590faa057e5a6d171e7f2f6cffe3287406ef40e49c682c07d89/ruff-0.12.2-py3-none-win32.whl", hash = "sha256:369ffb69b70cd55b6c3fc453b9492d98aed98062db9fec828cdfd069555f5f1a", size = 10523823, upload_time = "2025-07-03T16:40:13.203Z" }, - { url = "https://files.pythonhosted.org/packages/94/47/8abf129102ae4c90cba0c2199a1a9b0fa896f6f806238d6f8c14448cc748/ruff-0.12.2-py3-none-win_amd64.whl", hash = "sha256:dca8a3b6d6dc9810ed8f328d406516bf4d660c00caeaef36eb831cf4871b0639", size = 11629831, upload_time = "2025-07-03T16:40:15.478Z" }, - { url = "https://files.pythonhosted.org/packages/e2/1f/72d2946e3cc7456bb837e88000eb3437e55f80db339c840c04015a11115d/ruff-0.12.2-py3-none-win_arm64.whl", hash = "sha256:48d6c6bfb4761df68bc05ae630e24f506755e702d4fb08f08460be778c7ccb12", size = 10735334, upload_time = "2025-07-03T16:40:17.677Z" }, + { url = "https://files.pythonhosted.org/packages/0a/2f/73de654df9e7e5f67d742c1d949b5c0c7c1203e84b2272d9e34a91faaf5c/reuse-5.0.2-cp313-cp313-manylinux_2_40_x86_64.whl", hash = "sha256:7a680f00324e87a72061677a892d8cbabfddf7adcf7a5376aeeed2d78995bbbb", size = 184309, upload_time = "2024-11-14T09:33:15.047Z" }, ] [[package]] @@ -2107,76 +1271,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a6/8f/aea39979f8a7091ad2242a038a0e4c2b463593923ce598a914255dfba9ef/savepagenow-1.3.0-py2.py3-none-any.whl", hash = "sha256:4b0a4fff47254c160a37a20868ab53bb90da3d3f9f96086a9255b2375e39fcbf", size = 5649, upload_time = "2023-07-01T13:31:48.005Z" }, ] -[[package]] -name = "scipy" -version = "1.16.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/81/18/b06a83f0c5ee8cddbde5e3f3d0bb9b702abfa5136ef6d4620ff67df7eee5/scipy-1.16.0.tar.gz", hash = "sha256:b5ef54021e832869c8cfb03bc3bf20366cbcd426e02a58e8a58d7584dfbb8f62", size = 30581216, upload_time = "2025-06-22T16:27:55.782Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/01/c0/c943bc8d2bbd28123ad0f4f1eef62525fa1723e84d136b32965dcb6bad3a/scipy-1.16.0-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:7eb6bd33cef4afb9fa5f1fb25df8feeb1e52d94f21a44f1d17805b41b1da3180", size = 36459071, upload_time = "2025-06-22T16:19:06.605Z" }, - { url = "https://files.pythonhosted.org/packages/99/0d/270e2e9f1a4db6ffbf84c9a0b648499842046e4e0d9b2275d150711b3aba/scipy-1.16.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:1dbc8fdba23e4d80394ddfab7a56808e3e6489176d559c6c71935b11a2d59db1", size = 28490500, upload_time = "2025-06-22T16:19:11.775Z" }, - { url = "https://files.pythonhosted.org/packages/1c/22/01d7ddb07cff937d4326198ec8d10831367a708c3da72dfd9b7ceaf13028/scipy-1.16.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:7dcf42c380e1e3737b343dec21095c9a9ad3f9cbe06f9c05830b44b1786c9e90", size = 20762345, upload_time = "2025-06-22T16:19:15.813Z" }, - { url = "https://files.pythonhosted.org/packages/34/7f/87fd69856569ccdd2a5873fe5d7b5bbf2ad9289d7311d6a3605ebde3a94b/scipy-1.16.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:26ec28675f4a9d41587266084c626b02899db373717d9312fa96ab17ca1ae94d", size = 23418563, upload_time = "2025-06-22T16:19:20.746Z" }, - { url = "https://files.pythonhosted.org/packages/f6/f1/e4f4324fef7f54160ab749efbab6a4bf43678a9eb2e9817ed71a0a2fd8de/scipy-1.16.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:952358b7e58bd3197cfbd2f2f2ba829f258404bdf5db59514b515a8fe7a36c52", size = 33203951, upload_time = "2025-06-22T16:19:25.813Z" }, - { url = "https://files.pythonhosted.org/packages/6d/f0/b6ac354a956384fd8abee2debbb624648125b298f2c4a7b4f0d6248048a5/scipy-1.16.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:03931b4e870c6fef5b5c0970d52c9f6ddd8c8d3e934a98f09308377eba6f3824", size = 35070225, upload_time = "2025-06-22T16:19:31.416Z" }, - { url = "https://files.pythonhosted.org/packages/e5/73/5cbe4a3fd4bc3e2d67ffad02c88b83edc88f381b73ab982f48f3df1a7790/scipy-1.16.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:512c4f4f85912767c351a0306824ccca6fd91307a9f4318efe8fdbd9d30562ef", size = 35389070, upload_time = "2025-06-22T16:19:37.387Z" }, - { url = "https://files.pythonhosted.org/packages/86/e8/a60da80ab9ed68b31ea5a9c6dfd3c2f199347429f229bf7f939a90d96383/scipy-1.16.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e69f798847e9add03d512eaf5081a9a5c9a98757d12e52e6186ed9681247a1ac", size = 37825287, upload_time = "2025-06-22T16:19:43.375Z" }, - { url = "https://files.pythonhosted.org/packages/ea/b5/29fece1a74c6a94247f8a6fb93f5b28b533338e9c34fdcc9cfe7a939a767/scipy-1.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:adf9b1999323ba335adc5d1dc7add4781cb5a4b0ef1e98b79768c05c796c4e49", size = 38431929, upload_time = "2025-06-22T16:19:49.385Z" }, - { url = "https://files.pythonhosted.org/packages/46/95/0746417bc24be0c2a7b7563946d61f670a3b491b76adede420e9d173841f/scipy-1.16.0-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:e9f414cbe9ca289a73e0cc92e33a6a791469b6619c240aa32ee18abdce8ab451", size = 36418162, upload_time = "2025-06-22T16:19:56.3Z" }, - { url = "https://files.pythonhosted.org/packages/19/5a/914355a74481b8e4bbccf67259bbde171348a3f160b67b4945fbc5f5c1e5/scipy-1.16.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:bbba55fb97ba3cdef9b1ee973f06b09d518c0c7c66a009c729c7d1592be1935e", size = 28465985, upload_time = "2025-06-22T16:20:01.238Z" }, - { url = "https://files.pythonhosted.org/packages/58/46/63477fc1246063855969cbefdcee8c648ba4b17f67370bd542ba56368d0b/scipy-1.16.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:58e0d4354eacb6004e7aa1cd350e5514bd0270acaa8d5b36c0627bb3bb486974", size = 20737961, upload_time = "2025-06-22T16:20:05.913Z" }, - { url = "https://files.pythonhosted.org/packages/93/86/0fbb5588b73555e40f9d3d6dde24ee6fac7d8e301a27f6f0cab9d8f66ff2/scipy-1.16.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:75b2094ec975c80efc273567436e16bb794660509c12c6a31eb5c195cbf4b6dc", size = 23377941, upload_time = "2025-06-22T16:20:10.668Z" }, - { url = "https://files.pythonhosted.org/packages/ca/80/a561f2bf4c2da89fa631b3cbf31d120e21ea95db71fd9ec00cb0247c7a93/scipy-1.16.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6b65d232157a380fdd11a560e7e21cde34fdb69d65c09cb87f6cc024ee376351", size = 33196703, upload_time = "2025-06-22T16:20:16.097Z" }, - { url = "https://files.pythonhosted.org/packages/11/6b/3443abcd0707d52e48eb315e33cc669a95e29fc102229919646f5a501171/scipy-1.16.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1d8747f7736accd39289943f7fe53a8333be7f15a82eea08e4afe47d79568c32", size = 35083410, upload_time = "2025-06-22T16:20:21.734Z" }, - { url = "https://files.pythonhosted.org/packages/20/ab/eb0fc00e1e48961f1bd69b7ad7e7266896fe5bad4ead91b5fc6b3561bba4/scipy-1.16.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:eb9f147a1b8529bb7fec2a85cf4cf42bdfadf9e83535c309a11fdae598c88e8b", size = 35387829, upload_time = "2025-06-22T16:20:27.548Z" }, - { url = "https://files.pythonhosted.org/packages/57/9e/d6fc64e41fad5d481c029ee5a49eefc17f0b8071d636a02ceee44d4a0de2/scipy-1.16.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d2b83c37edbfa837a8923d19c749c1935ad3d41cf196006a24ed44dba2ec4358", size = 37841356, upload_time = "2025-06-22T16:20:35.112Z" }, - { url = "https://files.pythonhosted.org/packages/7c/a7/4c94bbe91f12126b8bf6709b2471900577b7373a4fd1f431f28ba6f81115/scipy-1.16.0-cp313-cp313-win_amd64.whl", hash = "sha256:79a3c13d43c95aa80b87328a46031cf52508cf5f4df2767602c984ed1d3c6bbe", size = 38403710, upload_time = "2025-06-22T16:21:54.473Z" }, - { url = "https://files.pythonhosted.org/packages/47/20/965da8497f6226e8fa90ad3447b82ed0e28d942532e92dd8b91b43f100d4/scipy-1.16.0-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:f91b87e1689f0370690e8470916fe1b2308e5b2061317ff76977c8f836452a47", size = 36813833, upload_time = "2025-06-22T16:20:43.925Z" }, - { url = "https://files.pythonhosted.org/packages/28/f4/197580c3dac2d234e948806e164601c2df6f0078ed9f5ad4a62685b7c331/scipy-1.16.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:88a6ca658fb94640079e7a50b2ad3b67e33ef0f40e70bdb7dc22017dae73ac08", size = 28974431, upload_time = "2025-06-22T16:20:51.302Z" }, - { url = "https://files.pythonhosted.org/packages/8a/fc/e18b8550048d9224426e76906694c60028dbdb65d28b1372b5503914b89d/scipy-1.16.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:ae902626972f1bd7e4e86f58fd72322d7f4ec7b0cfc17b15d4b7006efc385176", size = 21246454, upload_time = "2025-06-22T16:20:57.276Z" }, - { url = "https://files.pythonhosted.org/packages/8c/48/07b97d167e0d6a324bfd7484cd0c209cc27338b67e5deadae578cf48e809/scipy-1.16.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:8cb824c1fc75ef29893bc32b3ddd7b11cf9ab13c1127fe26413a05953b8c32ed", size = 23772979, upload_time = "2025-06-22T16:21:03.363Z" }, - { url = "https://files.pythonhosted.org/packages/4c/4f/9efbd3f70baf9582edf271db3002b7882c875ddd37dc97f0f675ad68679f/scipy-1.16.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:de2db7250ff6514366a9709c2cba35cb6d08498e961cba20d7cff98a7ee88938", size = 33341972, upload_time = "2025-06-22T16:21:11.14Z" }, - { url = "https://files.pythonhosted.org/packages/3f/dc/9e496a3c5dbe24e76ee24525155ab7f659c20180bab058ef2c5fa7d9119c/scipy-1.16.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e85800274edf4db8dd2e4e93034f92d1b05c9421220e7ded9988b16976f849c1", size = 35185476, upload_time = "2025-06-22T16:21:19.156Z" }, - { url = "https://files.pythonhosted.org/packages/ce/b3/21001cff985a122ba434c33f2c9d7d1dc3b669827e94f4fc4e1fe8b9dfd8/scipy-1.16.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4f720300a3024c237ace1cb11f9a84c38beb19616ba7c4cdcd771047a10a1706", size = 35570990, upload_time = "2025-06-22T16:21:27.797Z" }, - { url = "https://files.pythonhosted.org/packages/e5/d3/7ba42647d6709251cdf97043d0c107e0317e152fa2f76873b656b509ff55/scipy-1.16.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:aad603e9339ddb676409b104c48a027e9916ce0d2838830691f39552b38a352e", size = 37950262, upload_time = "2025-06-22T16:21:36.976Z" }, - { url = "https://files.pythonhosted.org/packages/eb/c4/231cac7a8385394ebbbb4f1ca662203e9d8c332825ab4f36ffc3ead09a42/scipy-1.16.0-cp313-cp313t-win_amd64.whl", hash = "sha256:f56296fefca67ba605fd74d12f7bd23636267731a72cb3947963e76b8c0a25db", size = 38515076, upload_time = "2025-06-22T16:21:45.694Z" }, -] - -[[package]] -name = "seaborn" -version = "0.13.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "matplotlib" }, - { name = "numpy" }, - { name = "pandas" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/86/59/a451d7420a77ab0b98f7affa3a1d78a313d2f7281a57afb1a34bae8ab412/seaborn-0.13.2.tar.gz", hash = "sha256:93e60a40988f4d65e9f4885df477e2fdaff6b73a9ded434c1ab356dd57eefff7", size = 1457696, upload_time = "2024-01-25T13:21:52.551Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/83/11/00d3c3dfc25ad54e731d91449895a79e4bf2384dc3ac01809010ba88f6d5/seaborn-0.13.2-py3-none-any.whl", hash = "sha256:636f8336facf092165e27924f223d3c62ca560b1f2bb5dff7ab7fad265361987", size = 294914, upload_time = "2024-01-25T13:21:49.598Z" }, -] - -[[package]] -name = "shellingham" -version = "1.5.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload_time = "2023-10-24T04:13:40.426Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload_time = "2023-10-24T04:13:38.866Z" }, -] - -[[package]] -name = "simpleeval" -version = "1.0.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ff/6f/15be211749430f52f2c8f0c69158a6fc961c03aac93fa28d44d1a6f5ebc7/simpleeval-1.0.3.tar.gz", hash = "sha256:67bbf246040ac3b57c29cf048657b9cf31d4e7b9d6659684daa08ca8f1e45829", size = 24358, upload_time = "2024-11-02T10:29:46.912Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/e9/e58082fbb8cecbb6fb4133033c40cc50c248b1a331582be3a0f39138d65b/simpleeval-1.0.3-py3-none-any.whl", hash = "sha256:e3bdbb8c82c26297c9a153902d0fd1858a6c3774bf53ff4f134788c3f2035c38", size = 15762, upload_time = "2024-11-02T10:29:45.706Z" }, -] - [[package]] name = "six" version = "1.17.0" @@ -2195,15 +1289,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303, upload_time = "2025-01-02T07:14:38.724Z" }, ] -[[package]] -name = "soupsieve" -version = "2.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload_time = "2025-04-20T18:50:08.518Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload_time = "2025-04-20T18:50:07.196Z" }, -] - [[package]] name = "stack-data" version = "0.6.3" @@ -2218,60 +1303,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload_time = "2023-09-30T13:58:03.53Z" }, ] -[[package]] -name = "structlog" -version = "25.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/b9/6e672db4fec07349e7a8a8172c1a6ae235c58679ca29c3f86a61b5e59ff3/structlog-25.4.0.tar.gz", hash = "sha256:186cd1b0a8ae762e29417095664adf1d6a31702160a46dacb7796ea82f7409e4", size = 1369138, upload_time = "2025-06-02T08:21:12.971Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/4a/97ee6973e3a73c74c8120d59829c3861ea52210667ec3e7a16045c62b64d/structlog-25.4.0-py3-none-any.whl", hash = "sha256:fe809ff5c27e557d14e613f45ca441aabda051d119ee5a0102aaba6ce40eed2c", size = 68720, upload_time = "2025-06-02T08:21:11.43Z" }, -] - -[[package]] -name = "tableschema-to-template" -version = "0.0.13" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jsonschema" }, - { name = "pyyaml" }, - { name = "xlsxwriter" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/23/2d/5b5c0127e959a715c5365b3b491846fba5bc1fb7f94370cc3a4fb3f51f68/tableschema-to-template-0.0.13.tar.gz", hash = "sha256:2d8d2250efb840e0ecb9012c5e879a82ef68f65dd86bdff574200fdfc978ff1c", size = 13564, upload_time = "2023-02-01T21:53:17.238Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/7f/3c129377d9b815c0bb92b8c24bbecabe5e6b13b831f38924f80d2e5b40b2/tableschema_to_template-0.0.13-py3-none-any.whl", hash = "sha256:4905500a4235740654230c3223629d26fdccb7a0457ec1d0110ea102c4f1146c", size = 14860, upload_time = "2023-02-01T21:53:16.02Z" }, -] - -[[package]] -name = "tabulate" -version = "0.9.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload_time = "2022-10-06T17:21:48.54Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload_time = "2022-10-06T17:21:44.262Z" }, -] - [[package]] name = "technologydata" source = { editable = "." } dependencies = [ - { name = "frictionless", extra = ["pandas"] }, - { name = "hdx-python-country" }, { name = "ipykernel" }, - { name = "matplotlib" }, { name = "mypy" }, { name = "pandas" }, - { name = "pint" }, { name = "pre-commit" }, - { name = "pydeflate" }, { name = "pytest" }, - { name = "python-calamine" }, + { name = "pytest-cov" }, + { name = "pytest-xdist" }, { name = "requests" }, - { name = "ruff" }, + { name = "reuse" }, { name = "savepagenow" }, - { name = "scipy" }, - { name = "seaborn" }, - { name = "tqdm" }, - { name = "ucumvert" }, ] [package.optional-dependencies] @@ -2287,10 +1332,7 @@ docs = [ [package.metadata] requires-dist = [ - { name = "frictionless", extras = ["pandas"], specifier = ">=5.18.0" }, - { name = "hdx-python-country", specifier = ">=3.9.4" }, { name = "ipykernel", specifier = ">=6.29.5" }, - { name = "matplotlib", specifier = ">=3.10.1" }, { name = "mkdocs-autolinks-plugin", marker = "extra == 'docs'", specifier = ">=0.7.1" }, { name = "mkdocs-git-revision-date-localized-plugin", marker = "extra == 'docs'", specifier = ">=1.4.7" }, { name = "mkdocs-material", marker = "extra == 'docs'", specifier = ">=9.6.14" }, @@ -2300,37 +1342,23 @@ requires-dist = [ { name = "mkdocstrings-python", marker = "extra == 'docs'", specifier = ">=1.16.11" }, { name = "mypy", specifier = ">=1.15.0" }, { name = "pandas", specifier = ">=2.2.3" }, - { name = "pint", specifier = ">=0.24.4" }, { name = "pre-commit", specifier = ">=4.2.0" }, - { name = "pydeflate", specifier = ">=2.1.3" }, { name = "pytest", specifier = ">=8.3.5" }, - { name = "python-calamine", specifier = ">=0.3.1" }, + { name = "pytest-cov", specifier = ">=6.2.1" }, + { name = "pytest-xdist", specifier = ">=3.8.0" }, { name = "requests", specifier = ">=2.32.3" }, - { name = "ruff", specifier = ">=0.11.0" }, + { name = "reuse", specifier = ">=5.0.2" }, { name = "savepagenow", specifier = ">=1.3.0" }, - { name = "scipy", specifier = ">=1.15.2" }, - { name = "seaborn", specifier = ">=0.13.2" }, - { name = "tqdm", specifier = ">=4.67.1" }, - { name = "ucumvert", specifier = ">=0.2.1" }, ] provides-extras = ["docs"] [[package]] -name = "tenacity" -version = "9.1.2" +name = "tomlkit" +version = "0.13.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload_time = "2025-04-02T08:25:09.966Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207, upload_time = "2025-06-05T07:13:44.947Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload_time = "2025-04-02T08:25:07.678Z" }, -] - -[[package]] -name = "text-unidecode" -version = "1.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload_time = "2019-08-30T21:36:45.405Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload_time = "2019-08-30T21:37:03.543Z" }, + { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload_time = "2025-06-05T07:13:43.546Z" }, ] [[package]] @@ -2352,18 +1380,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596, upload_time = "2025-05-22T18:15:37.433Z" }, ] -[[package]] -name = "tqdm" -version = "4.67.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload_time = "2024-11-24T20:12:22.481Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload_time = "2024-11-24T20:12:19.698Z" }, -] - [[package]] name = "traitlets" version = "5.14.3" @@ -2373,21 +1389,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload_time = "2024-04-19T11:11:46.763Z" }, ] -[[package]] -name = "typer" -version = "0.16.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "rich" }, - { name = "shellingham" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c5/8c/7d682431efca5fd290017663ea4588bf6f2c6aad085c7f108c5dbc316e70/typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b", size = 102625, upload_time = "2025-05-26T14:30:31.824Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/76/42/3efaf858001d2c2913de7f354563e3a3a2f0decae3efe98427125a8f441e/typer-0.16.0-py3-none-any.whl", hash = "sha256:1f79bed11d4d02d4310e3c1b7ba594183bcedb0ac73b27a9e5f28f6fb5b98855", size = 46317, upload_time = "2025-05-26T14:30:30.523Z" }, -] - [[package]] name = "typing-extensions" version = "4.14.1" @@ -2397,18 +1398,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload_time = "2025-07-04T13:28:32.743Z" }, ] -[[package]] -name = "typing-inspection" -version = "0.4.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload_time = "2025-05-21T18:55:23.885Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload_time = "2025-05-21T18:55:22.152Z" }, -] - [[package]] name = "tzdata" version = "2025.2" @@ -2418,28 +1407,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload_time = "2025-03-23T13:54:41.845Z" }, ] -[[package]] -name = "ucumvert" -version = "0.2.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "lark" }, - { name = "pint" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d1/27/cfeeea46e92d30edd1f8938e7630798e92c2cc8dbb0493a26373d850b3c4/ucumvert-0.2.2.tar.gz", hash = "sha256:f6218839a36b0e74e671f16d1f9f4aa1a2b530527a3c126031515c13273b1343", size = 52281, upload_time = "2025-05-10T22:18:25.204Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/b5/be9107654e04f7bcc16138598f2bccfde20952dfe1115f5289b5a7c5717e/ucumvert-0.2.2-py3-none-any.whl", hash = "sha256:cd5b9e93f9dfc52d4dbe3f4e790d0b426934185823a611fd6898bb4e3d6f4c86", size = 53201, upload_time = "2025-05-10T22:18:23.304Z" }, -] - -[[package]] -name = "unidecode" -version = "1.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/7d/a8a765761bbc0c836e397a2e48d498305a865b70a8600fd7a942e85dcf63/Unidecode-1.4.0.tar.gz", hash = "sha256:ce35985008338b676573023acc382d62c264f307c8f7963733405add37ea2b23", size = 200149, upload_time = "2025-04-24T08:45:03.798Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/b7/559f59d57d18b44c6d1250d2eeaa676e028b9c527431f5d0736478a73ba1/Unidecode-1.4.0-py3-none-any.whl", hash = "sha256:c3c7606c27503ad8d501270406e345ddb480a7b5f38827eafe4fa82a137f0021", size = 235837, upload_time = "2025-04-24T08:45:01.609Z" }, -] - [[package]] name = "urllib3" version = "2.5.0" @@ -2449,15 +1416,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload_time = "2025-06-18T14:07:40.39Z" }, ] -[[package]] -name = "validators" -version = "0.35.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/53/66/a435d9ae49850b2f071f7ebd8119dd4e84872b01630d6736761e6e7fd847/validators-0.35.0.tar.gz", hash = "sha256:992d6c48a4e77c81f1b4daba10d16c3a9bb0dbb79b3a19ea847ff0928e70497a", size = 73399, upload_time = "2025-05-01T05:42:06.7Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/6e/3e955517e22cbdd565f2f8b2e73d52528b14b8bcfdb04f62466b071de847/validators-0.35.0-py3-none-any.whl", hash = "sha256:e8c947097eae7892cb3d26868d637f79f47b4a0554bc6b80065dfe5aac3705dd", size = 44712, upload_time = "2025-05-01T05:42:04.203Z" }, -] - [[package]] name = "virtualenv" version = "20.31.2" @@ -2496,20 +1454,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload_time = "2024-11-01T14:07:11.845Z" }, ] -[[package]] -name = "wbgapi" -version = "1.0.12" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyyaml" }, - { name = "requests" }, - { name = "tabulate" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d7/4a/f55695bd1c9f1996b675b6e9e980eef40ebdb5e4bf8774c059c31af6ade1/wbgapi-1.0.12.tar.gz", hash = "sha256:338c3c768bd120b80596b48fa0449ecabc93513ac989c55671dce579dbb3a5be", size = 33590, upload_time = "2022-07-05T15:07:22.772Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/00/12/224030af4886e119a3d03b709f7130e9601a4d15332e1d6a35671b25a4de/wbgapi-1.0.12-py3-none-any.whl", hash = "sha256:c5a1e1683b03d4264d287627c2562932f30e7f5c65509b812cb2e3de7d32633f", size = 36385, upload_time = "2022-07-05T15:07:20.606Z" }, -] - [[package]] name = "wcwidth" version = "0.2.13" @@ -2518,66 +1462,3 @@ sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc wheels = [ { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload_time = "2024-01-06T02:10:55.763Z" }, ] - -[[package]] -name = "wheel" -version = "0.45.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545, upload_time = "2024-11-23T00:18:23.513Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload_time = "2024-11-23T00:18:21.207Z" }, -] - -[[package]] -name = "win32-setctime" -version = "1.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867, upload_time = "2024-12-07T15:28:28.314Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083, upload_time = "2024-12-07T15:28:26.465Z" }, -] - -[[package]] -name = "xlrd" -version = "2.0.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/5a/377161c2d3538d1990d7af382c79f3b2372e880b65de21b01b1a2b78691e/xlrd-2.0.2.tar.gz", hash = "sha256:08b5e25de58f21ce71dc7db3b3b8106c1fa776f3024c54e45b45b374e89234c9", size = 100167, upload_time = "2025-06-14T08:46:39.039Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/62/c8d562e7766786ba6587d09c5a8ba9f718ed3fa8af7f4553e8f91c36f302/xlrd-2.0.2-py2.py3-none-any.whl", hash = "sha256:ea762c3d29f4cca48d82df517b6d89fbce4db3107f9d78713e48cd321d5c9aa9", size = 96555, upload_time = "2025-06-14T08:46:37.766Z" }, -] - -[[package]] -name = "xlrd3" -version = "1.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/db/88d8d49ddacc203956ecb98dc86c6ffeee6e933ef1f50da9b369de518f7f/xlrd3-1.1.0.tar.gz", hash = "sha256:20e6ed2e5f7f8b4ab61e30faffebceff6fab348332b4c915373f0a72742dc177", size = 58919847, upload_time = "2021-04-25T12:27:10.03Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/08/fce745025e58f160e7dcb5a45d4d43eb0bd44c0d8851425be87ef90271fa/xlrd3-1.1.0-py2.py3-none-any.whl", hash = "sha256:8e8e808f938144e7936a6e07c1d57be7a0f6c6f5b37c9c67974b43246d8aacb6", size = 105268, upload_time = "2021-04-25T12:26:55.264Z" }, -] - -[[package]] -name = "xlsx2csv" -version = "0.8.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/20/94860286a308a4213581c1beacd4fc7be724250c03583fcff23aaa6107bb/xlsx2csv-0.8.4.tar.gz", hash = "sha256:2aa809888826f6af5b26c77fc7f613f2bbeada0d8cc09e5a58e0f59684bb6911", size = 221390, upload_time = "2024-11-19T17:06:07.818Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/c0/15c21556362c67f1155f3643a375d50ac67559b82c768e64e800a42a2577/xlsx2csv-0.8.4-py3-none-any.whl", hash = "sha256:52ab873fc7b2f2ca75d14aee8bd1985a9f5c1bcb3cc7b80df7a5d57a40a67473", size = 15904, upload_time = "2024-11-19T17:06:05.362Z" }, -] - -[[package]] -name = "xlsxwriter" -version = "3.2.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a7/47/7704bac42ac6fe1710ae099b70e6a1e68ed173ef14792b647808c357da43/xlsxwriter-3.2.5.tar.gz", hash = "sha256:7e88469d607cdc920151c0ab3ce9cf1a83992d4b7bc730c5ffdd1a12115a7dbe", size = 213306, upload_time = "2025-06-17T08:59:14.619Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/34/a22e6664211f0c8879521328000bdcae9bf6dbafa94a923e531f6d5b3f73/xlsxwriter-3.2.5-py3-none-any.whl", hash = "sha256:4f4824234e1eaf9d95df9a8fe974585ff91d0f5e3d3f12ace5b71e443c1c6abd", size = 172347, upload_time = "2025-06-17T08:59:13.453Z" }, -] - -[[package]] -name = "xlwt" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/97/56a6f56ce44578a69343449aa5a0d98eefe04085d69da539f3034e2cd5c1/xlwt-1.3.0.tar.gz", hash = "sha256:c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88", size = 153929, upload_time = "2017-08-22T06:47:16.498Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/44/48/def306413b25c3d01753603b1a222a011b8621aed27cd7f89cbc27e6b0f4/xlwt-1.3.0-py2.py3-none-any.whl", hash = "sha256:a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e", size = 99981, upload_time = "2017-08-22T06:47:15.281Z" }, -] From 3f69fb19c6df9bb0014cc9df3242a500d4dd466f Mon Sep 17 00:00:00 2001 From: Johannes HAMPP <42553970+euronion@users.noreply.github.com> Date: Thu, 31 Jul 2025 16:39:23 +0200 Subject: [PATCH 05/30] Unit-ful parameter (#15) * code: Flatten class structure by removing UnitValue * code: add reuse dependency * code: add tests for parameters.py * code: Require carrier for heating_value attribute * code: Add default values for optional attributes * code: Make sources for Parameter optional * code: Implement arithmetic operations on Parameters * code: Add start of custom unit registry and helpers * code: Move test into single file and linting * code: Add tests for extraction from pint.Unit objects * code: Add tests for currency conversion rates * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: Add tests for custom UnitRegistry * code: Rename currency code cache file * code: Dedicated registries for heating values and carriers * code: Add instructions files for GH copilot * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: Fix test using wrong ureg * code: use lru_cache * code: Add function to map from currency code to ISO3 * code: New frozendict dependency * code: remove unused import * code: add debug msgs * code: Fix usage of wrong registry for currency units * code: Ensure canonical names are used for units, carriers, hvs * code: Adjust test for canonical name usage * code: docstrings * doc: improve docstring * code: Disallow currency conversion in unit conversion * code: Name capture groups in regex * code: formatting * code: Fix test for disallowed currency conversion in .to * code: Draft currency conversion method * code: Rename arguments for consistency * code: Fix failing test due to wrong UnitRegistry being used * code: Add missing renames * code: Wait... didn't I already commit this? * code: Fix wrong dtype in function call * code: Fix issue with conversion rates * code: Fix alias for source arguments * code: Raise errors on invalid currency conversion calls * doc: Update docstream with more options * code: Fix tests to comply with new syntax * code: Bugfix wrong logic check in conversion rate function * code: Add dependency for pytest-xdist * code: Fix issue with cache when calling method repeadetly from different uregs * code: Fix mypy errors * code: Adjust ValueError msg for incompatible heating values * code: Add tests for heating value operations * code: Add test for carrier compatabilities * doc: Add draft doc for parameters.py * code: add stub for heating value conversion * code: add equality and power operations on parameters * code: remove decorator for updating pint attributes in favour of direct calls * code: Implement conversion between LHV and HHV * code: Bugfix incompatible carrier in dividing Parameter objects * code: Outsource HHVs and LHVs for energy carriers * doc: Update puml * doc: Add details on change_heating_value(...) function * code: fix wrong heating values in tests * code: Add simple combination logic for provenance/note/sources * code: start to solve mypy annotations * code: new update * code: in between commit * data: update solar_photovoltaics_example_03/technologies.json * data: update technologies.json * data: update example_04 data * code: update to parameter.py * code: remove any reference to UnitValue * code: switch off type checking for UnitRegistry * code: solve mypy comment in units.py * doc: update class-diagram * ci: ai-prototype and unit test fix * code: update parameter eq method * code: docstrings for Parameter methods and example_parameter * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * data: add input parameters.csv for currency_conversion * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code/data: add tests for change_currency * code: add extra check on magnitude * code: update change_currency * code: latest comments --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Fabrizio Finozzi --- .github/instructions/copilot-instructions.md | 43 + .github/workflows/ci.yaml | 4 +- REUSE.toml | 2 +- docs/CLAUDE.md | 26 - docs/class-diagram.puml | 49 +- docs/parameter.md | 137 +++ pyproject.toml | 5 + technologydata/__init__.py | 18 +- technologydata/constants/__init__.py | 12 + technologydata/constants/energy_density.py | 61 ++ technologydata/parameter.py | 652 ++++++++++++- technologydata/source.py | 11 +- technologydata/unit_value.py | 66 -- technologydata/utils/carriers.txt | 29 + technologydata/utils/heating_values.txt | 17 + technologydata/utils/units.py | 409 ++++++++ test/conftest.py | 15 + .../WB_CNY_2020/parameters.csv | 15 + .../WB_EUR_2020/parameters.csv | 15 + .../WB_USD_2020/parameters.csv | 15 + .../technologies.json | 66 +- .../technologies.json | 68 +- test/test_parameter.py | 717 ++++++++++++++ test/test_source.py | 2 +- test/test_units.py | 590 ++++++++++++ uv.lock | 905 ++++++++++++++++++ 26 files changed, 3710 insertions(+), 239 deletions(-) create mode 100644 .github/instructions/copilot-instructions.md delete mode 100644 docs/CLAUDE.md create mode 100644 docs/parameter.md create mode 100644 technologydata/constants/__init__.py create mode 100644 technologydata/constants/energy_density.py delete mode 100644 technologydata/unit_value.py create mode 100644 technologydata/utils/carriers.txt create mode 100644 technologydata/utils/heating_values.txt create mode 100644 technologydata/utils/units.py create mode 100644 test/test_data/currency_conversion/WB_CNY_2020/parameters.csv create mode 100644 test/test_data/currency_conversion/WB_EUR_2020/parameters.csv create mode 100644 test/test_data/currency_conversion/WB_USD_2020/parameters.csv create mode 100644 test/test_parameter.py create mode 100644 test/test_units.py diff --git a/.github/instructions/copilot-instructions.md b/.github/instructions/copilot-instructions.md new file mode 100644 index 00000000..a7a7955a --- /dev/null +++ b/.github/instructions/copilot-instructions.md @@ -0,0 +1,43 @@ + + +# Copilot Coding Agent Instructions for `technologydata` + +## Project Overview +- `technologydata` is a Python package for energy system modellers to screen, harmonize, and transform techno-economic input data for energy system models. +- Major use cases: data validation, harmonization, transformation to model-ready formats, and provenance/audit tracing. +- Core classes: `DataPackage`, `Technology`, `Parameter`, `Source`, and `SourceCollection` (see `technologydata/`). +- Data flows: Input data (JSON or DataFrame) β†’ `DataPackage`/`Technology` objects β†’ validation/transformation β†’ output for modeling/analysis. + +## Key Workflows +- **Install dependencies:** Use `uv` (see `pyproject.toml`, `uv.lock`). Example: `uv sync`. +- **Activate virtual environment:** Use `source .venv/bin/activate` before running commands. +- **Linting/formatting:** Use `ruff` (`ruff check .` and `ruff format .`). +- **Type checking:** Use `mypy`. +- **Testing:** Use `pytest` (tests in `test/`). Fixtures in `test/conftest.py`. Run: `pytest`. +- **Pre-commit hooks:** Set up with `pre-commit` using `.pre-commit-config.yaml`, use this preferably over using `mypy` and `ruff` manually. +- **Docs:** Built with `mkdocs` (see `docs/`). + +## Project-Specific Patterns +- **Validation:** Instantiating `Technology` or `DataPackage` triggers schema validation. Use `.check_consistency()` and `.calculate_parameters()` for further checks and derivations. +- **Parameter Derivation:** Use `.calculate_parameters()` to fill in missing values based on rules. +- **Unit Handling:** Uses `pint` for units and `pydeflate` for currency/inflation adjustments. Custom `UnitRegistry` in `technologydata/utils/units.py`. +- **Data Provenance:** Each `Parameter` and `Technology` tracks its source and transformation history. +- **Data Input:** Prefer JSON conforming to the internal schema. See `test/test_data/` for examples. + +## External Integrations +- `pydeflate` for currency/inflation +- `pint` for units +- `hdx.location.country` for country/currency codes +- `savepagenow` for web archiving + +## References +- Design: `docs/design.md` +- Class diagram: `docs/class-diagram.puml` +- Example data: `test/test_data/` + +--- +If any conventions or workflows are unclear, please ask for clarification or check `docs/design.md` for rationale and details. diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index e5c703bb..d177761d 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -5,9 +5,9 @@ name: Technologydata prototype CI on: push: - branches: [prototype] + branches: [ai-prototype] pull_request: - branches: [prototype] + branches: [ai-prototype] jobs: test: diff --git a/REUSE.toml b/REUSE.toml index a6ee5e76..79009ed1 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -10,6 +10,6 @@ SPDX-License-Identifier = "MIT" [[annotations]] -path = ["test/test_data/*/*"] +path = ["test/test_data/*/*", "test/test_data/*/*/*"] SPDX-FileCopyrightText = "The technology-data authors" SPDX-License-Identifier = "CC-BY-4.0" diff --git a/docs/CLAUDE.md b/docs/CLAUDE.md deleted file mode 100644 index 1713f9f3..00000000 --- a/docs/CLAUDE.md +++ /dev/null @@ -1,26 +0,0 @@ - -## General - -* Description of use cases in `docs/design.md` -* Class diagram in `docs/class-diagram.puml` - -## Tools - -* `ruff` for formatting and linting -* `uv` for package management with `pyproject.toml` for configuration and package metadata -* `pytest` for testing all classes and methods - * a `tests/conftest.py` for all the fixtures - * a `tests//input` and `tests//output` for input and output files -* `mypy` for type checking -* `pre-commit` for setting up linting, formatting and checking hooks, configured via `.pre-commit-config.yaml` -* `pydantic` for data validation -* `mkdocs` for documentation generation, configured via `docs/mkdocs.yaml` - -## Packages to depend on - -* `pydeflate` for currency conversions and inflation adjustments -* `pint` for unit conversions -* `savepagenow` for archiving web pages using the Wayback Machine diff --git a/docs/class-diagram.puml b/docs/class-diagram.puml index 3ddba2dd..403c59d3 100644 --- a/docs/class-diagram.puml +++ b/docs/class-diagram.puml @@ -4,16 +4,6 @@ SPDX-License-Identifier: MIT '/ @startuml Class Diagram -class UnitValue { - - value: float - - unit: str -} - -note left of UnitValue::unit - Unit should be able to accommodate any unit of measurement, - currencies+years, LHVs and different energy carriers. - e.g. EUR_2020, kWh_electricity, kWh_hydrogen_LHV -end note class Source { - name: str @@ -26,6 +16,12 @@ class Source { + ensure_in_wayback() + store_in_wayback() + retrieve_from_wayback() + + _get_save_path() + + _get_content_type() + + _download_file() + + __eq__(other) + + __hash__(other) + + __str__(other) } note right of Source::store_in_wayback @@ -38,17 +34,33 @@ note right of Source::retrieve_from_wayback end note class Parameter { - - quantity: UnitValue + - magnitude: float + - units: str + - carrier: str + - heating_value: str - provenance: str - note: str - sources: SourceCollection + - _pint_quantity: pint.Quantity + - _pint_carrier: pint.Unit + - _pint_heating_value: pint.Unit + + + _update_pint_attributes() + + _check_parameter_compatibility() + + change_currency() + + change_heating_value() + + to() + from_dict(): Parameter + + __add__(other: Parameter) + + __sub__(other: Parameter) + + __mul__(other: Parameter) + + __truediv__(other: Parameter) + + __pow__(other: Parameter) + + __eq__(other: Parameter) } -Parameter --> UnitValue : quantity - note right of Parameter - Encapsulates a value, its unit (via UnitValue, as quantity), + Encapsulates a value, its unit, data provenance (via sources). end note @@ -73,6 +85,8 @@ class Technology { - output-hydrogen: Parameter - output-electricity: Parameter + + __getitem__() + + __setitem__() + from_dict(): Technology + adjust_currency(): Technology // or inplace + adjust_region(): Technology // or inplace @@ -80,6 +94,7 @@ class Technology { + calculate_EAC(): Parameter // or inplace + calculate_efficiency(): Parameter // or inplace + calculate_specific_investment(): Parameter // or inplace + + check_consistency() } note right of Technology::inputs @@ -124,6 +139,8 @@ class TechnologyCollection { + to_dataframe(): pd.DataFrame + from_json(): TechnologyCollection + create_projection(): TechnologyCollection + + __iter__() + + __len__() ' TODO: Think about more methods here } @@ -149,6 +166,10 @@ class SourceCollection { + to_csv() + to_dataframe() + from_json() + + __iter__() + + __len__() + + __str__() + + get() } note left of SourceCollection::retrieve_all_from_wayback diff --git a/docs/parameter.md b/docs/parameter.md new file mode 100644 index 00000000..38ae2a9e --- /dev/null +++ b/docs/parameter.md @@ -0,0 +1,137 @@ + + +# `Parameter` Class Documentation + +## Overview + +The `Parameter` class in `technologydata` encapsulates a value, its unit, provenance, notes, sources, and additional attributes required to describe technology parameters, such as carrier and heating value. It is designed for use in energy system modeling workflows, supporting unit handling, currency/inflation adjustments, and provenance tracking. + +## Features + +- **Value and Units**: Stores a numerical value (`magnitude`) and its associated units (`units`). Units are handled using `pint` and support custom currency units (e.g., `USD_2020/kW`). +- **Currency Unit Convention**: Currency units must follow the pattern `XYZ_YYYY`, where `XYZ` is the 3-letter [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code (e.g., `USD`, `EUR`, `CNY`) and `YYYY` is the 4-digit year (e.g., `USD_2020`). This allows for both currency and inflation adjustment. +- **Carrier and Heating Value**: Optionally specify an energy carrier (e.g., `H2`) and a heating value type (`LHV` or `HHV`). +- **Provenance and Notes**: Track the origin of the data and any additional notes. +- **Sources**: Attach a `SourceCollection` of references for traceability. +- **Unit Conversion**: Convert between compatible units (excluding currency conversion) using `.to()`. +- **Currency/Inflation Adjustment**: Convert between currencies and adjust for inflation using `.change_currency()`. +- **Arithmetic Operations**: Supports addition, subtraction, multiplication, and division with other `Parameter` objects, with compatibility checks for carrier and heating value. **Note:** Some operations will fail if heating values or carriers are incompatible, raising a `ValueError`. + +## Usage Examples + +### Creating a Parameter + +```python +from technologydata.parameter import Parameter +from technologydata.source import Source +from technologydata.source_collection import SourceCollection + +param = Parameter( + magnitude=1000, + units="USD_2020/kW", + carrier="H2", + heating_value="LHV", + provenance="Directly extracted from literature", + note="Estimated", + sources=SourceCollection(sources=[ + Source(name="Example Source", authors="some authors", title="Example Title") + ]), +) + +>>> param +Parameter(magnitude=1000.0, units='USD_2020/kW', carrier='H2', heating_value='LHV', provenance='literature', note='Estimated', sources=SourceCollection(sources=[Source(name='Example Source', authors='some authors', title='Example Title')])) +``` + +### Unit Conversion (excluding currency) + +```python +converted = param.to("USD_2020 / megawatt") +>>> print(converted.magnitude, converted.units) +1000000.0 USD_2020 / megawatt +``` + +### Currency and Inflation Adjustment + +```python +# Convert to EUR_2023 with inflation adjustment for Germany, using World Bank data +euro_param = param.change_currency("EUR_2023", "DEU", source="worldbank") +>>> print(euro_param.magnitude, euro_param.units) +950.0 EUR_2023 / kilowatt +``` + +### Arithmetic Operations + +```python +param2 = Parameter(magnitude=500, units="USD_2020/kW", carrier="H2", heating_value="LHV") +sum_param = param + param2 +>>> print(sum_param.magnitude, sum_param.units) +1500.0 USD_2020 / kilowatt +``` + +**Note:** If you try to add or subtract parameters with different carriers or heating values, a `ValueError` will be raised: + +```python +param_hhv = Parameter(magnitude=1, units="USD_2020/kW", carrier="H2", heating_value="HHV") +param + param_hhv +>>> # ValueError: Cannot add parameters with different heating values +``` + +## Notes on Currency Conversion and pydeflate + +- **pydeflate Integration**: Currency and inflation adjustments are performed using the `pydeflate` package. This package uses data from either the World Bank or the International Monetary Fund. In order to use `pydeflate` with currency codes, we make some opinioated assumptions about the mapping from currency codes to countries which should in most cases be correct, but may not always be accurate for all currencies or years. +- **Country Mapping**: To see which country was used for a given currency code during conversion, inspect the mapping in `pydeflate` or use the helper functions in `technologydata.utils.units` (e.g., `get_iso3_from_currency_code`). The country code you provide to `.change_currency()` determines the inflation adjustment, but the mapping from currency code to country is handled internally by pydeflate and may be checked in its documentation or by printing the mapping used in your environment. +- **Data availability**: Since we use World Bank or IMF data, the availability of currency conversion data may vary by year and currency, depending on the most recent publication. World Bank data is based on the [World Bank DataBank](https://databank.worldbank.org/home.aspx) and IMF data is based on the [World Economic Outlook](https://www.imf.org/en/Publications/WEO). If IMF data is used, this means that also short-term projections can be accessed, usually e.g. GDP deflators for up to 2 years into the future. +- **Updating Data**: If `pydeflate` notices that data is older than 50 days, it will display a warning. It will also periodically try to update the data automatically. More information on how to configure the update behaviour and caching locations for `pydeflate` are available in their [documentation](https://github.com/jm-rivera/pydeflate). + +## Handling different heating values + +Each `Parameter` can have a `heating_value` attribute, which can be either `LHV` (or allowed aliases like `lower_heating_value`, 'NCV', 'net_calorific_value') or `HHV` (or allowed aliases like `higher_heating_value`, 'GCV', 'gross_calorific_value'). +This attribute indicates the basis on which the energy content of the parameter is defined. +In operations between `Parameter` objects, the heating value is checked. +Only parameters with the same heating value can be used in arithmetic operations. + +The heating value can be changed using the `change_heating_value` method, which uses the `carrier` attribute of the `Parameter` to determine the conversion factor between LHV and HHV based on their energy densities. + +- **Supported Carriers:** The method currently supports conversion for common carriers such as hydrogen and methane. For any other carrier that is not implemented, a ratio of 1 is assumed. +- **Changing Heating Value +- **Adding Carriers:** New carriers can be added programmatically by extending the `EnergyDensityLHV` and `EnergyDensityHHV` dictionaries in the `technologydata.constants`. The LHV/HHV ratio is calculated based on these two dictionaries, so any new carrier must have both LHV and HHV energy densities defined. In addition the carrier name must be a valid dimensionality defined in `technologydata.utils.units.creg`. + +### Example: Converting Between LHV and HHV + +```python +from technologydata.parameter import Parameter + +# Create a parameter on LHV basis +param_lhv = Parameter(magnitude=33.33, units="kWh/kg", carrier="hydrogen", heating_value="LHV") +>>> print(param_lhv.magnitude, param_lhv.units, param_lhv.heating_value) +33.33 kWh/kg lower_heating_value + +# Convert to HHV basis +param_hhv = param_lhv.change_heating_value("HHV") +>>> print(param_hhv.magnitude, param_hhv.units, param_hhv.heating_value) +39.51 kWh/kg higher_heating_value + +# Convert back to LHV +param_lhv2 = param_hhv.change_heating_value("LHV") +>>> print(param_lhv2.magnitude, param_lhv2.units, param_lhv2.heating_value) +33.33 kWh/kg lower_heating_value + +# On mixed carriers +param_mixed = Parameter(magnitude=1/9, units="kWh/kg", carrier="hydrogen / water", heating_value="LHV") +param_mixed_hhv = param_mixed.change_heating_value("HHV") +>>> print(param_mixed_hhv.magnitude, param_mixed_hhv.units, param_mixed_hhv.heating_value) +0.13 kWh/kg higher_heating_value +``` + + +## Limitations & Missing Features + +- **Provenance/Note/Sources in Arithmetic**: When performing arithmetic operations, the handling and merging of `provenance`, `note`, and `sources` is not yet implemented (see `TODO` comments in the code). +- **Unit Conversion**: The `.to()` method does not support currency conversion; use `.change_currency()` for that. +- **Partial Unit Compatibility**: Only certain combinations of units, carriers, and heating values are supported for arithmetic operations. +- **No Uncertainty Handling**: There is currently no support for uncertainty or error propagation. +- **No Serialization/Deserialization**: Direct methods for exporting/importing to/from JSON or DataFrame are not implemented in this class. diff --git a/pyproject.toml b/pyproject.toml index b6b18868..18199008 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,10 +27,15 @@ classifiers=[ ] requires-python = ">=3.12" dependencies = [ + "frozendict>=2.4.6", + "hdx-python-country>=3.9.6", "ipykernel>=6.29.5", # this one can go into optional as "dev" "mypy>=1.15.0", "pandas>=2.2.3", + "pint>=0.24.4", "pre-commit>=4.2.0", # this one can go into optional as "dev" + "pydantic>=2.11.7", + "pydeflate>=2.1.3", # this one can go into optional as "dev" "pytest>=8.3.5", # this one can go into optional as "dev" "pytest-cov>=6.2.1", # this one can go into optional as "dev" "pytest-xdist>=3.8.0", # this one can go into optional as "dev" diff --git a/technologydata/__init__.py b/technologydata/__init__.py index 20b78e28..1e2962ef 100644 --- a/technologydata/__init__.py +++ b/technologydata/__init__.py @@ -9,8 +9,16 @@ from technologydata.source_collection import SourceCollection from technologydata.technology import Technology from technologydata.technology_collection import TechnologyCollection -from technologydata.unit_value import UnitValue from technologydata.utils.commons import Commons, DateFormatEnum, FileExtensionEnum +from technologydata.utils.units import ( + CURRENCY_UNIT_PATTERN, + creg, + extract_currency_units, + get_conversion_rate, + get_iso3_from_currency_code, + hvreg, + ureg, +) __all__ = [ "Commons", @@ -22,5 +30,11 @@ "SourceCollection", "Technology", "TechnologyCollection", - "UnitValue", + "CURRENCY_UNIT_PATTERN", + "creg", + "extract_currency_units", + "get_conversion_rate", + "get_iso3_from_currency_code", + "hvreg", + "ureg", ] diff --git a/technologydata/constants/__init__.py b/technologydata/constants/__init__.py new file mode 100644 index 00000000..3c2b6ca2 --- /dev/null +++ b/technologydata/constants/__init__.py @@ -0,0 +1,12 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +"""Provide classes and utilities for handling techno-economic data for energy system modeling.""" + +from technologydata.constants.energy_density import EnergyDensityHHV, EnergyDensityLHV + +__all__ = [ + "EnergyDensityHHV", + "EnergyDensityLHV", +] diff --git a/technologydata/constants/energy_density.py b/technologydata/constants/energy_density.py new file mode 100644 index 00000000..2c98b246 --- /dev/null +++ b/technologydata/constants/energy_density.py @@ -0,0 +1,61 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +""" +Energy density parameters for various carriers. + +This module defines dictionaries containing energy density parameters +for different fuel carriers, specifically focusing on lower heating value (LHV) +and higher heating value (HHV). Each entry maps a carrier name to a `Parameter` +object that includes magnitude, unit, and carrier type. + +Attributes +---------- +EnergyDensityLHV : dict[str, Parameter] + Dictionary mapping carrier names to their lower heating value (LHV) + parameters. + - Key: carrier name (e.g., 'hydrogen', 'methane') + - Value: Parameter object with magnitude, unit, and carrier info. + +EnergyDensityHHV : dict[str, Parameter] + Dictionary mapping carrier names to their higher heating value (HHV) + parameters. + - Key: carrier name (e.g., 'hydrogen', 'methane') + - Value: Parameter object with magnitude, unit, and carrier info. + +""" + +from technologydata import Parameter + +EnergyDensityLHV: dict[str, Parameter] = dict( + hydrogen=Parameter( + magnitude=119.6, + unit="GJ/t", + carrier="hydrogen", + # source= # TODO + ), + methane=Parameter( + magnitude=50.0, + unit="GJ/t", + carrier="methane", + # source= # TODO + ), + # Add more energy densities as needed +) + +EnergyDensityHHV: dict[str, Parameter] = dict( + hydrogen=Parameter( + magnitude=141.8, + unit="GJ/t", + carrier="hydrogen", + # source= # TODO + ), + methane=Parameter( + magnitude=55.5, + unit="GJ/t", + carrier="methane", + # source= # TODO + ), + # Add more energy densities as needed +) diff --git a/technologydata/parameter.py b/technologydata/parameter.py index feb4483a..82a747ce 100644 --- a/technologydata/parameter.py +++ b/technologydata/parameter.py @@ -7,78 +7,648 @@ Examples -------- ->>> from technologydata.unit_value import UnitValue >>> from technologydata.source import Source ->>> uv = UnitValue(value=1000, unit="EUR_2020/kW") +>>> uv = pint.Quantity(1000, "EUR_2020/kW") >>> src = Source(name="Example Source", authors="some authors", url="http://example.com") >>> param = Parameter(quantity=uv, provenance="literature", note="Estimated", sources=[src]) """ +import logging import typing +from typing import Annotated -import pydantic +import pint +from pydantic import BaseModel, Field, PrivateAttr +import technologydata from technologydata.source_collection import SourceCollection -from technologydata.unit_value import UnitValue +# from technologydata.utils.units import ( +# CURRENCY_UNIT_PATTERN, +# creg, +# extract_currency_units, +# get_conversion_rate, +# get_iso3_from_currency_code, +# hvreg, +# ureg, +# ) -# TODO rework class logic -class Parameter(pydantic.BaseModel): # type: ignore +logger = logging.getLogger(__name__) + + +class Parameter(BaseModel): # type: ignore """ - Encapsulate a value with its unit, provenance, notes, and sources. + Encapsulate a value with its unit, provenance, notes, sources, and more optional attributes required to describe technology parameters, like carrier, and heating value. Attributes ---------- - quantity : UnitValue - The value and its unit. + magnitude : float + The numerical value of the parameter. + units : Optional[str] + The unit of the parameter. + carrier : Optional[str] + The energy carrier. + heating_value : Optional[str] + The heating value type. provenance : Optional[str] Description of the data's provenance. note : Optional[str] Additional notes about the parameter. - sources : SourceCollection + sources : Optional[SourceCollection] List of sources for the parameter. """ - quantity: typing.Annotated[ - UnitValue, pydantic.Field(description="The value and its unit.") + magnitude: Annotated[ + float, Field(description="The numerical value of the parameter.") ] - provenance: typing.Annotated[ - str | None, pydantic.Field(description="Data provenance.") + units: Annotated[str | None, Field(description="The unit of the parameter.")] = None + carrier: Annotated[ + str | None, + Field(description="Carriers of the units, e.g. 'H2', 'el', 'H2O'."), ] = None - note: typing.Annotated[ - str | None, pydantic.Field(description="Additional notes.") + heating_value: Annotated[ + str | None, + Field(description="Heating value type for energy carriers ('LHV' or 'HHV')."), ] = None - sources: typing.Annotated[ - SourceCollection, pydantic.Field(description="Collection of Sources.") - ] + provenance: Annotated[str | None, Field(description="The data's provenance.")] = ( + None + ) + note: Annotated[str | None, Field(description="Additional notes.")] = None + sources: Annotated[ + SourceCollection, + Field(description="List of sources for this parameter."), + ] = SourceCollection(sources=[]) - @property - def value(self) -> float: + # Private attributes for derived pint objects + _pint_quantity: pint.Quantity = PrivateAttr(None) + _pint_carrier: pint.Unit = PrivateAttr(None) + _pint_heating_value: pint.Unit = PrivateAttr(None) + + def __init__(self, **data: float | str | SourceCollection | None) -> None: + """Initialize Parameter and update pint attributes.""" + # pint uses canonical names for units, carriers, and heating values + # Ensure the Parameter object is always created with these consistent names from pint + if "units" in data and data["units"] is not None: + technologydata.ureg.ensure_currency_is_unit(str(data["units"])) + data["units"] = str(technologydata.ureg.Unit(data["units"])) + if "carrier" in data and data["carrier"] is not None: + data["carrier"] = str(technologydata.creg.Unit(data["carrier"])) + if "heating_value" in data and data["heating_value"] is not None: + data["heating_value"] = str( + technologydata.hvreg.Unit(data["heating_value"]) + ) + + super().__init__(**data) + self._update_pint_attributes() + + def _update_pint_attributes(self) -> None: """ - The numerical value of the parameter. + Update internal pint attributes based on current object fields. + + This method initializes or updates the following attributes: + - `_pint_quantity`: a pint Quantity created from `magnitude` and `units`. + - `_pint_carrier`: a pint Unit created from `carrier`. + - `_pint_heating_value`: a pint Unit created from `heating_value`, if applicable. + + Notes + ----- + - Ensures that `units` are valid, especially for currency units. + - Raises a ValueError if `heating_value` is set without a valid `carrier`. + + """ + # Create a pint quantity from magnitude and units + if self.units: + # `units` may contain an undefined currency unit - ensure the ureg can handle it + technologydata.ureg.ensure_currency_is_unit(self.units) + + self._pint_quantity = technologydata.ureg.Quantity( + self.magnitude, self.units + ) + else: + self._pint_quantity = technologydata.ureg.Quantity(self.magnitude) + # Create the carrier as pint unit + if self.carrier: + self._pint_carrier = technologydata.creg.Unit(self.carrier) + else: + self._pint_carrier = None + + # Create the heating value as pint unit + if self.heating_value and self.carrier: + self._pint_heating_value = technologydata.hvreg.Unit(self.heating_value) + elif self.heating_value and not self.carrier: + raise ValueError( + "Heating value cannot be set without a carrier. Please provide a valid carrier." + ) + else: + self._pint_heating_value = None + + def to(self, units: str) -> "Parameter": + """Convert the parameter's quantity to new units.""" + self._update_pint_attributes() + + # Do not allow for currency conversion here, as it requires additional information + if technologydata.extract_currency_units( + self._pint_quantity.units + ) != technologydata.extract_currency_units(units): + raise NotImplementedError( + "Currency conversion is not supported in the `to` method. " + "Use `change_currency` for currency conversions." + ) + + self._pint_quantity = self._pint_quantity.to(units) + return Parameter( + magnitude=self._pint_quantity.magnitude, + units=str(self._pint_quantity.units), + carrier=self.carrier, + heating_value=self.heating_value, + provenance=self.provenance, + note=self.note, + sources=self.sources, + ) + + def change_currency( + self, to_currency: str, country: str, source: str = "worldbank" + ) -> "Parameter": + """ + Change the currency of the parameter. + + This allows for conversion to a different currency as well as for inflation adjustments. + To properly adjust for inflation, the function requires the `country` for which the inflation + adjustment should be applied for. + + Note that this will harmonise all currencies used in the parameter's units, + i.e. if the parameter `units` contains multiple different currencies, + all of them will be converted to the target currency. + + Parameters + ---------- + to_currency : str + The target currency unit to convert to, e.g. "USD_2020", "EUR_2024", "CNY_2022". + country : str + The country for which the inflation adjustment should be made for. + Must be the official ISO 3166-1 alpha-3 country code, e.g. "USA", "DEU", "CHN". + source : str, optional + The source of the inflation data, either "worldbank"/"wb" or "international_monetary_fund"/"imf". + Defaults to "worldbank". + Depending on the source, different years to adjust for inflation may be available. + + Returns + ------- + Parameter + A new Parameter object with the converted currency. + + Examples + -------- + >>> param.change_currency("USD_2024", "USA") + >>> param.change_currency("EUR_2020", "DEU", source="imf") + >>> param.change_currency("EUR_2023", "USA", source="worldbank") + + """ + self._update_pint_attributes() + + # Ensure the target currency is a valid unit + technologydata.ureg.ensure_currency_is_unit(to_currency) + + # Current unit and currency/currencies + from_units = self._pint_quantity.units + from_currencies = technologydata.extract_currency_units(from_units) + # Replace all currency units in the from_units with the target currency + to_units = technologydata.CURRENCY_UNIT_PATTERN.sub( + to_currency, str(from_units) + ) + + # Create a temporary context to which we add the conversion rates + # We use a temporary context to avoid polluting the global unit registry + # with potentially invalid or incomplete conversion rates that do not + # match the `country` and `source` parameters. + context = technologydata.ureg.Context() + + # Conversion rates are all relative to the reference currency + ref_currency = technologydata.ureg.get_reference_currency() + ref_currency_p = technologydata.CURRENCY_UNIT_PATTERN.match(ref_currency) + if ref_currency_p: + ref_iso3 = technologydata.get_iso3_from_currency_code( + ref_currency_p.group("cu_iso3") + ) + ref_year = ref_currency_p.group("year") + else: + raise ValueError( + f"Reference currency '{ref_currency}' does not match expected pattern." + ) + + # Get conversion rates for all involved currencies + currencies = set(from_currencies).union({to_currency}) + # Avoid recursion error in pint definition by re-adding the reference currency + currencies = currencies - {ref_currency} + + for currency in currencies: + from_currency_p = technologydata.CURRENCY_UNIT_PATTERN.match(currency) + if from_currency_p: + from_iso3 = technologydata.get_iso3_from_currency_code( + from_currency_p.group("cu_iso3") + ) + from_year = from_currency_p.group("year") + else: + raise ValueError( + f"Currency '{currency}' does not match expected pattern." + ) + + conversion_rate = technologydata.get_conversion_rate( + from_iso3=from_iso3, + from_year=from_year, + to_iso3=ref_iso3, + to_year=int(ref_year), + country=country, + source=source, + ) + + context.redefine(f"{currency} = {conversion_rate} * {ref_currency}") + + # Actual conversion using pint + quantity = self._pint_quantity.to(to_units, context) + + return Parameter( + magnitude=quantity.magnitude, + units=str(quantity.units), + carrier=self.carrier, + heating_value=self.heating_value, + provenance=self.provenance, + note=self.note, + sources=self.sources, + ) + + def change_heating_value(self, to_heating_value: str) -> "Parameter": + """ + Change the heating value of the parameter. + + This converts the parameter's heating value to another heating value, + e.g. from "LHV" to "HHV", by taking into account the parameter's carrier. + + Parameters + ---------- + to_heating_value : str + The target heating value to convert to, e.g. "LHV", "HHV". Returns ------- - float - The value. + Parameter + A new Parameter object with the converted heating value. + + Raises + ------ + ValueError + If the current parameter does not have a carrier or a heating value set, + + Examples + -------- + >>> Parameter(magnitude=1, units="kWh", carrier="H2", heating_value="LHV").change_heating_value("HHV") + """ - return self.quantity.value + if not self.carrier: + raise ValueError( + "Cannot change heating value without a carrier. Please provide a valid carrier." + ) + if not self.heating_value: + raise ValueError( + "Cannot change heating value without a current heating value. " + "Please provide a valid heating value." + ) + if to_heating_value == self.heating_value: + # No change needed, return the same parameter + return self + + self._update_pint_attributes() + + from technologydata.constants import EnergyDensityHHV, EnergyDensityLHV + + # Create a dictionary of heating value ratios based on energy densities + hv_ratios = dict() + lhvs = { + str(technologydata.creg.get_dimensionality(k)): v + for k, v in EnergyDensityLHV.items() + } + hhvs = { + str(technologydata.creg.get_dimensionality(k)): v + for k, v in EnergyDensityHHV.items() + } + for dimension in self._pint_carrier.dimensionality.keys(): + if dimension in lhvs and dimension in hhvs: + hv_ratios[dimension] = ( + hhvs[dimension].magnitude / lhvs[dimension].magnitude + ) + else: + logger.error( + f"No heating values found for '{dimension}' in EnergyDensityLHV or EnergyDensityHHV. " + f"Assuming a ratio of 1." + ) + hv_ratios[dimension] = 1.0 + + # When converting from HHV -> LHV, we need to multiply by the ratios + # When converting from LHV -> HHV, we need to divide by the ratios + # We modify the hv_ratios dictionary to match the conversion direction + if technologydata.hvreg.Unit(to_heating_value).is_compatible_with("HHV"): + hv_ratios = hv_ratios + elif technologydata.hvreg.Unit(to_heating_value).is_compatible_with("LHV"): + hv_ratios = {k: 1 / v for k, v in hv_ratios.items()} + + multiplier = 1 + for dim, exponent in self._pint_carrier.dimensionality.items(): + if dim not in hv_ratios: + raise NotImplementedError( + f"Heating value conversion not implemented for carrier dimension '{dim}'." + ) + # Adjust the hv_ratios for the exponent of the carrier + multiplier *= hv_ratios[dim] ** exponent - @property - def unit(self) -> str: + return Parameter( + magnitude=self.magnitude * multiplier, + units=self.units, + carrier=self.carrier, + heating_value=to_heating_value, + provenance=self.provenance, # TODO implement for this function + note=self.note, + sources=self.sources, + ) + + def _check_parameter_compatibility(self, other: "Parameter") -> None: """ - The unit of the parameter. + Check if two parameters are compatible in terms of units, carrier, and heating value. + + Parameters + ---------- + other : Parameter + The other Parameter instance to compare against. + + Raises + ------ + ValueError + If the carriers or heating values of the two parameters are not compatible. + The error message specifies which attribute differs. + + """ + if self._pint_carrier != other._pint_carrier: + raise ValueError( + f"Operation not permitted on parameters with different carriers: " + f"'{self._pint_carrier}' and '{other._pint_carrier}'." + ) + if self._pint_heating_value != other._pint_heating_value: + raise ValueError( + f"Operation not permitted on parameters with different heating values: " + f"'{self._pint_heating_value}' and '{other._pint_heating_value}'." + ) + + def __add__(self, other: "Parameter") -> "Parameter": + """ + Add this Parameter to another Parameter. + + Parameters + ---------- + other : Parameter + The Parameter instance to add. + + Returns + ------- + Parameter + A new Parameter instance representing the sum of the two parameters. + + Notes + ----- + This method checks for parameter compatibility before performing the addition. + The resulting Parameter retains the carrier, heating value, and combines provenance, + notes, and sources from both operands. + + """ + self._check_parameter_compatibility(other) + new_quantity = self._pint_quantity + other._pint_quantity + return Parameter( + magnitude=new_quantity.magnitude, + units=new_quantity.units, + carrier=self.carrier, + heating_value=self.heating_value, + provenance=(self.provenance or "") + + (other.provenance or ""), # TODO make nicer + note=(self.note or "") + (other.note or ""), # TODO make nicer + sources=SourceCollection( + sources=(self.sources.sources + other.sources.sources) + ), + ) + + def __sub__(self, other: "Parameter") -> "Parameter": + """ + Subtract another Parameter from this Parameter. + + Parameters + ---------- + other : Parameter + The Parameter instance to subtract. + + Returns + ------- + Parameter + A new Parameter instance representing the result of the subtraction. + + Notes + ----- + This method checks for parameter compatibility before performing the subtraction. + The resulting Parameter retains the carrier, heating value, and combines provenance, notes, and sources. + + """ + self._check_parameter_compatibility(other) + new_quantity = self._pint_quantity - other._pint_quantity + return Parameter( + magnitude=new_quantity.magnitude, + units=str(new_quantity.units), + carrier=self.carrier, + heating_value=self.heating_value, + provenance=(self.provenance or "") + + (other.provenance or ""), # TODO make nicer + note=(self.note or "") + (other.note or ""), # TODO make nicer + sources=SourceCollection( + sources=(self.sources.sources + other.sources.sources) + ), + ) + + def __truediv__(self, other: "Parameter") -> "Parameter": + """ + Divide this Parameter by another Parameter. + + Parameters + ---------- + other : Parameter + The Parameter instance to divide by. + + Returns + ------- + Parameter + A new Parameter instance representing the division result. + + Raises + ------ + ValueError + If the heating values of the two parameters are different. + + Notes + ----- + The method divides the quantities of the parameters and constructs a new Parameter. + It also handles the division of carriers and heating values if present. + + """ + # We don't check general compatibility here, as division is not a common operation for parameters. + # Only ensure that the heating values are compatible. + if self._pint_heating_value != other._pint_heating_value: + raise ValueError( + f"Cannot divide parameters with different heating values: " + f"{self._pint_heating_value} and {other._pint_heating_value}." + ) + + new_quantity = self._pint_quantity / other._pint_quantity + new_carrier = ( + self._pint_carrier / other._pint_carrier + if self._pint_carrier and other._pint_carrier + else None + ) + new_heating_value = ( + self._pint_heating_value / other._pint_heating_value + if self._pint_heating_value and other._pint_heating_value + else None + ) + + return Parameter( + magnitude=new_quantity.magnitude, + units=str(new_quantity.units), + carrier=new_carrier, + heating_value=new_heating_value, + provenance=(self.provenance or "") + + (other.provenance or ""), # TODO make nicer + note=(self.note or "") + (other.note or ""), # TODO make nicer + sources=SourceCollection( + sources=(self.sources.sources + other.sources.sources) + ), + ) + + def __mul__(self, other: "Parameter") -> "Parameter": + """ + Multiply two Parameter instances. + + Parameters + ---------- + other : Parameter + The other Parameter instance to multiply with. Returns ------- - str - The unit. + Parameter + A new Parameter instance representing the product of the two parameters. + + Raises + ------ + ValueError + If the heating values of the two parameters are not compatible (i.e., not equal). + + Notes + ----- + - Multiplication is only performed if the heating values are compatible. + - The method multiplies the underlying quantities and carriers (if present). + - The heating value of the resulting parameter is the product of the input heating values. + - Provenance, notes, and sources are combined from both parameters. + - Compatibility checks beyond heating values are not performed. + + """ + # We don't check general compatibility here, as multiplication is not a common operation for parameters. + # Only ensure that the heating values are compatible. + if self._pint_heating_value != other._pint_heating_value: + raise ValueError( + f"Cannot multiply parameters with different heating values: " + f"{self._pint_heating_value} and {other._pint_heating_value}." + ) + + new_quantity = self._pint_quantity * other._pint_quantity + new_carrier = ( + self._pint_carrier * other._pint_carrier + if self._pint_carrier and other._pint_carrier + else None + ) + + new_heating_value = self._pint_heating_value * other._pint_heating_value + return Parameter( + magnitude=new_quantity.magnitude, + units=str(new_quantity.units), + carrier=str(new_carrier), + heating_value=str(new_heating_value), + provenance=(self.provenance or "") + + (other.provenance or ""), # TODO make nicer + note=(self.note or "") + (other.note or ""), # TODO make nicer + sources=SourceCollection( + sources=(self.sources.sources + other.sources.sources) + ), + ) + def __eq__(self, other: object) -> bool: """ - return self.quantity.unit + Check for equality with another Parameter object. + + Compares all attributes of the current instance with those of the other object. + + Parameters + ---------- + other : object + The object to compare with. Expected to be an instance of Parameter. + + Returns + ------- + bool + True if all attributes are equal between self and other, False otherwise. + Returns False if other is not a Parameter instance. + + """ + if not isinstance(other, Parameter): + return NotImplemented + + self._update_pint_attributes() + other._update_pint_attributes() + + for field in self.__class__.model_fields.keys(): + value_self = getattr(self, field) + value_other = getattr(other, field) + if value_self != value_other: + return False + return True + + def __pow__(self, exponent: float | int) -> "Parameter": + """ + Raise the parameter's value to a specified power. + + Parameters + ---------- + exponent : float or int + The exponent to raise the parameter's value to. + + Returns + ------- + Parameter + A new Parameter instance with the value raised to the specified power. + + Notes + ----- + This method updates the internal pint attributes before applying the power operation. + If the parameter has a carrier, it is also raised to the specified power. + + """ + self._update_pint_attributes() + + new_quantity = self._pint_quantity**exponent + return Parameter( + magnitude=new_quantity.magnitude, + units=str(new_quantity.units), + carrier=self._pint_carrier**exponent if self._pint_carrier else None, + heating_value=self.heating_value, + provenance=self.provenance, + note=self.note, + sources=self.sources, + ) @classmethod def from_dict(cls, data: dict[str, typing.Any]) -> "Parameter": @@ -90,29 +660,33 @@ def from_dict(cls, data: dict[str, typing.Any]) -> "Parameter": cls : type The class to instantiate. data : dict - A dictionary containing the data to initialize the class instance. - Expected keys include: - - "quantity" (dict): A dictionary representing a UnitValue, parsed via `UnitValue.parse_obj()`. - - "provenance" (str or None): Optional provenance information. - - "note" (str or None): Optional notes. + A dictionary containing the data to initialize the class instance. Expected keys include: + - "magnitude" + - "units" + - "carrier" + - "heating_value" + - "provenance" + - "note" - "sources" (list): A list of source data dictionaries, to be converted into a SourceCollection. Returns ------- - instance : cls + Parameter An instance of the class initialized with the provided data. Notes ----- This method converts the "sources" list into a `SourceCollection` using `SourceCollection.from_json()`. - The "quantity" field is parsed into a `UnitValue` object using `UnitValue.parse_obj()`. """ # Convert sources list into SourceCollection sources_data = data.get("sources", []) sources = SourceCollection.from_json(from_str=sources_data) return cls( - quantity=UnitValue.model_validate(data["quantity"]), + magnitude=data.get("magnitude"), + units=data.get("units"), + carrier=data.get("carrier"), + heating_value=data.get("heating_value"), provenance=data.get("provenance"), note=data.get("note"), sources=sources, diff --git a/technologydata/source.py b/technologydata/source.py index 7bb369a0..03911d41 100644 --- a/technologydata/source.py +++ b/technologydata/source.py @@ -64,10 +64,9 @@ class Source(pydantic.BaseModel): # type: ignore def __eq__(self, other: object) -> bool: """ - Check for equality with another Source object based on non-None attributes. + Check for equality with another Source object. Compares all attributes of the current instance with those of the other object. - Only compares attributes that are not None in both instances. Parameters ---------- @@ -80,12 +79,10 @@ def __eq__(self, other: object) -> bool: True if all non-None attributes are equal between self and other, False otherwise. Returns False if other is not a Source instance. - Notes - ----- - This method considers only attributes that are not None in both objects. - If an attribute is None in either object, it is ignored in the comparison. - """ + if not isinstance(other, Source): + return NotImplemented + if not isinstance(other, Source): logger.error("The object is not a Source instance.") return False diff --git a/technologydata/unit_value.py b/technologydata/unit_value.py deleted file mode 100644 index a354a343..00000000 --- a/technologydata/unit_value.py +++ /dev/null @@ -1,66 +0,0 @@ -# SPDX-FileCopyrightText: The technology-data authors -# -# SPDX-License-Identifier: MIT -# TODO implement (Johannes) -""" -UnitValue class for representing a value with an associated unit. - -This class is designed to support flexible units, including energy carriers, currencies with years, and more. - -Examples --------- ->>> uv = UnitValue(value=100, unit="EUR_2020") ->>> uv.value -100 ->>> uv.unit -"EUR_2020" - -""" - -import typing - -import pint -import pydantic - -ureg = pint.UnitRegistry() - - -class UnitValue(pydantic.BaseModel): # type: ignore - """ - Represent a numerical value with an associated unit of measurement. - - Attributes - ---------- - value : float - The numerical value. - unit : str - The unit of measurement. - - """ - - value: typing.Annotated[float, pydantic.Field(description="The numerical value.")] - unit: typing.Annotated[str, pydantic.Field(description="The unit of measurement.")] - - def to(self, new_unit: str) -> "UnitValue": - """ - Convert the value to a new unit using pint. - - Parameters - ---------- - new_unit : str - The unit to convert to. - - Returns - ------- - UnitValue - A new UnitValue instance with the converted value and unit. - - Raises - ------ - pint.errors.DimensionalityError - If the units are not compatible. - - """ - q = self.value * ureg(self.unit) - q_converted = q.to(new_unit) - return UnitValue(value=q_converted.magnitude, unit=str(q_converted.units)) diff --git a/technologydata/utils/carriers.txt b/technologydata/utils/carriers.txt new file mode 100644 index 00000000..62c526e7 --- /dev/null +++ b/technologydata/utils/carriers.txt @@ -0,0 +1,29 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +# Definitions for the default carriers supported by the package. +# Each carrier is defined as an independent dimension. +# This way, pint allows for operations like division or multiplication, +# and at the same time prevents incompatible operations on these dimensions. +# +# See also: https://pint.readthedocs.io/en/latest/defining.html + + +# Format: +# = [] [= ] + +carbon = [carbon] = C +carbon_dioxide = [carbon_dioxide] = CO2 +carbon_monoxide = [carbon_monoxide] = CO +coal = [coal] +diesel = [diesel] +jet_fuel_a1 = [jet_fuel_a1] = JETA1 +electricity = [electricity] = e = el +hydrogen = [hydrogen] = H2 +methane = [methane] = CH4 +methanol = [methanol] = CH3OH = MeOH +natural_gas = [natural_gas] = NG +nitrogen = [nitrogen] = N2 +oxygen = [oxygen] = O2 +water = [water] = H2O diff --git a/technologydata/utils/heating_values.txt b/technologydata/utils/heating_values.txt new file mode 100644 index 00000000..8b2162db --- /dev/null +++ b/technologydata/utils/heating_values.txt @@ -0,0 +1,17 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +# Definitions for the default heating values supported by the package. +# Each heating value is defined as an independent dimension. +# This way, pint allows for operations like division or multiplication, +# and at the same time prevents incompatible operations on these dimensions. +# +# See also: https://pint.readthedocs.io/en/latest/defining.html + + +# Format: +# = [] [= ] + +lower_heating_value = [lower_heating_value] = LHV = NCV = net_calorific_value +higher_heating_value = [higher_heating_value] = HHV = GCV = gross_calorific_value diff --git a/technologydata/utils/units.py b/technologydata/utils/units.py new file mode 100644 index 00000000..78351a6c --- /dev/null +++ b/technologydata/utils/units.py @@ -0,0 +1,409 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT +"""Submodule containing pint.UnitRegistry subclasses and utility functions for handling units, conversions, and currency units.""" + +import json +import logging +import re +import typing +from functools import lru_cache +from pathlib import Path + +import pandas as pd +import pint +import pydeflate +from frozendict import frozendict +from hdx.location.country import Country +from platformdirs import user_cache_dir + +logger = logging.getLogger(__name__) + +CURRENCY_UNIT_PATTERN = re.compile(r"\b(?P[A-Z]{3})_(?P\d{4})\b") + +# Set up cache directory and file for currency codes +CACHE_DIR = Path(user_cache_dir("technologydata")) # TODO move to commons? +CACHE_DIR.mkdir(parents=True, exist_ok=True) # TODO move to commons? +CURRENCY_CODES_CACHE = CACHE_DIR / "iso3_to_currency_codes.json" + + +SPECIAL_CASES_CURRENCY_CODE_TO_ISO3 = frozendict( + { + # Multi-country currencies (return codes directly) + "EUR": "EUR", # Eurozone + # Single primary countries + "AUD": "AUS", # Australia + "CHF": "CHE", # Switzerland + "DKK": "DNK", # Denmark + "GBP": "GBR", # United Kingdom (largest GBP economy) + "ILS": "ISR", # Israel + "MAD": "MAR", # Morocco + "NOK": "NOR", # Norway + "NZD": "NZL", # New Zealand + "USD": "USA", # Dollar-ized economies + # Special regional cases with proxy selection criteria + "ANG": "CUW", # CuraΓ§ao (GDP-weighted proxy) + "XAF": "CAF", # Central African Republic (lowest inflation differential) + "XCD": "GRD", # Grenada (lowest inflation differential) + "XOF": "NER", # Niger (lowest inflation differential 2015-2023) + "XPF": "PYF", # French Polynesia (data availability) + } +) + + +def get_iso3_to_currency_codes( + refresh: bool = False, ignore_cache: bool = False +) -> dict[str, str]: + """ + Get all 3-letter currency codes from official UN data. + + Uses a persistent local cache to avoid unnecessary network requests. + + Parameters + ---------- + refresh : bool, optional + If True, the cache will be updated from the internet, by default False. + ignore_cache : bool, optional + If True, the cache will not be used and the data will always be fetched from the live feed. + + Returns + ------- + dict[str, str] + A dictionary mapping ISO3 country codes to their corresponding 3-letter currency codes. + + """ + currencies: dict[str, str] = {} + + if refresh: + logger.debug("Deleting existing currency codes cache to refresh it.") + CURRENCY_CODES_CACHE.unlink(missing_ok=True) + + if ignore_cache: + logger.debug("Ignoring cache and fetching live currency codes.") + currencies = Country.countriesdata()["currencies"] + elif not CURRENCY_CODES_CACHE.exists(): + logger.debug( + "Cache does not exist. Fetching live currency codes and creating cache." + ) + currencies = Country.countriesdata()["currencies"] + with open(CURRENCY_CODES_CACHE, "w") as f: + json.dump(currencies, f) + else: + logger.debug("Reading currency codes from cache.") + with open(CURRENCY_CODES_CACHE) as f: + currencies = json.load(f) + + return currencies + + +def extract_currency_units(units: str | pint.Unit) -> list[str]: + """ + Extract currency-like strings from a string or pint.Unit. + + Parameters + ---------- + units : str or pint.Unit + The units string or pint.Unit from which to extract currency-like strings. + + Returns + ------- + list[str] + A list of currency-like strings found in the input, formatted as "{3-letter currency code}_{year as YYYY}". + If no matches are found, an empty list is returned. + + Examples + -------- + >>> extract_currency_units("USD_2020/kW") + ["USD_2020"] + + >>> extract_currency_units("EUR_2015/USD_2020") + ["EUR_2015", "USD_2020"] + + """ + # Ensure that the input is a string + units = str(units) + + # Get the 3-letter currency codes for all officially recognized currencies + logger.debug("Retrieving all 3-letter currency codes from the `hdx-country`.") + all_currency_codes = set(get_iso3_to_currency_codes().values()) + + # Check if the units contain a currency-like string, defined as "{3-letter currency code}_{year as YYYY}" + matches = CURRENCY_UNIT_PATTERN.findall(units) + if len(matches) == 0: + logger.debug("No currency-like string found in the units.") + return [] + + # Extract the currency codes from the matches using the regex groups + logger.debug(f"Found currency-like strings in the units: {matches}") + currency_codes = {code for code, year in matches} + + # Ensure that all currency codes are legitimate 3-letter currency codes + invalid_codes = currency_codes - all_currency_codes + if invalid_codes: + invalid_currencies = [ + f"{code}_{year}" for code, year in matches if code in invalid_codes + ] + raise ValueError( + f"The following unit(s) appear to be currency units, but have invalid 3-letter currency codes: {', '.join(invalid_currencies)}. " + ) + + # Reconstruct currency units from the matches + matches = [f"{code}_{year}" for code, year in matches] + + return matches + + +@lru_cache +def get_conversion_rate( + from_iso3: str, + to_iso3: str, + country: str, + from_year: int, + to_year: int, + source: str = "worldbank", +) -> float: + """ + Get the conversion rate from one currency (year, ISO3) to another currency (year, ISO3) from pydeflate. + + Parameters + ---------- + from_iso3 : str + The ISO3 code of the country of the currency to convert from (e.g., 'USA' if the source currency is USD). + to_iso3 : str + The ISO3 code of the country of the currency to convert to (e.g., 'DEU' if the target currency is EUR). + country : str + The ISO3 code of the country to adjust for inflation. + from_year : int + The julian year (YYYY) of the source currency. + to_year : int + The julian year (YYYY) of the target currency. + source : str + The source of the inflation data ('worldbank'/'wb' or 'international_monetary_fund'/'imf'). + + """ + # Choose the deflation function based on the source + deflation_function = { + "worldbank": pydeflate.wb_gdp_deflate, + "wb": pydeflate.wb_gdp_deflate, + "international_monetary_fund": pydeflate.imf_gdp_deflate, + "imf": pydeflate.imf_gdp_deflate, + }[source] + + # Ensure that `country` is a valid ISO3 code; to_iso3 and from_iso3 should already have been parsed before the function was called + if country not in get_iso3_to_currency_codes().keys(): + raise ValueError(f"Unknown ISO3 code for `country`: {country}.") + + # pydeflate only operates on pandas.DataFrame + data = pd.DataFrame( + { + "iso3": [country], + "from_year": [from_year], + "value": [1], + } + ) + + # Deflate values include currency conversion + conversion_rates = deflation_function( + data, + source_currency=from_iso3, + target_currency=to_iso3, + id_column="iso3", + year_column="from_year", + base_year=to_year, + value_column="value", + target_value_column="new_value", + ) + + if conversion_rates.isna().any().any(): + raise ValueError( + f"Conversion rate from {from_iso3} ({from_year}) to {to_iso3} ({to_year}) with inflation rate for {country} not found. " + ) + + return float(conversion_rates.loc[0, "new_value"]) + + +@lru_cache +def get_iso3_from_currency_code( + currency_code: str, + special_cases: frozendict[str, str] = SPECIAL_CASES_CURRENCY_CODE_TO_ISO3, +) -> str: + """ + Get the ISO3 country code from a 3-letter currency code using official UN data and opinionated assumptions. + + Parameters + ---------- + currency_code : str + The 3-letter currency code (e.g., 'USD', 'EUR'). + special_cases : dict[str, str], optional + A dictionary mapping specific currency codes to their ISO3 country codes for special cases. + Defaults to `technologydata.utils.units.SPECIAL_CASES_CURRENCY_CODE_TO_ISO3`. + + Returns + ------- + str + The ISO 3166 alpha 3 country code of the `currency_code`. + + Raises + ------ + ValueError + If the currency code is not found in the official list of currencies. + + """ + # Build reverse mapping: currency code -> list of ISO3 codes + iso3_to_currency_codes = pd.DataFrame.from_dict( + get_iso3_to_currency_codes(), orient="index", columns=["currency"] + ) + iso3_to_currency_codes = iso3_to_currency_codes.reset_index(drop=False).rename( + columns={"index": "iso3"} + ) + currency_codes_to_iso3 = iso3_to_currency_codes.groupby("currency", as_index=False)[ + "iso3" + ].agg(list) + + # Handle special cases for specific currency codes + + # Remove all currencies that are in the special cases from the mapping + currency_codes_to_iso3 = currency_codes_to_iso3.loc[ + ~currency_codes_to_iso3["currency"].isin(special_cases.keys()) + ] + + # Mapping should now only contain unique currency codes to ISO3 codes mappings, safe to explode + currency_codes_to_iso3 = currency_codes_to_iso3.explode("iso3") + + # Add the special cases to the mapping + currency_codes_to_iso3 = pd.concat( + [ + currency_codes_to_iso3, + pd.DataFrame( + list(special_cases.items()), + columns=["currency", "iso3"], + ), + ], + ignore_index=False, + ) + + # Special cases should handle all non-unique currency codes, check to make sure + # and return the ones that are not handled in special cases + + if ( + duplicated_iso3 := currency_codes_to_iso3.explode("iso3")[ + "currency" + ].duplicated() + ).any(): + raise ValueError( + "Some currency codes are used by multiple ISO3 codes but are not handled in `special_cases` " + "and need to be added to the mapping: " + f"{currency_codes_to_iso3[duplicated_iso3]}" + ) + + currency_codes_to_iso3 = currency_codes_to_iso3.set_index("currency")[ + "iso3" + ].to_dict() + + try: + return str(currency_codes_to_iso3[currency_code]) + except KeyError as e: + raise ValueError( + f"Currency code '{currency_code}' not found in the list of currencies. " + "Please ensure it is a valid 3-letter currency code." + ) from e + + +class SpecialUnitRegistry(pint.UnitRegistry): # type: ignore + """A special pint.UnitRegistry subclass that includes methods for handling currency units and conversion using pydeflate.""" + + def __init__( + self, *args: tuple[typing.Any, ...], **kwargs: dict[str, typing.Any] + ) -> None: + """ + Initialize a SpecialUnitRegistry instance. + + This constructor creates a new `SpecialUnitRegistry` object, + inheriting all default behaviors from `pint.UnitRegistry`. + It also defines a reference currency unit (`USD_2020`) for + handling currency conversions and related operations. + + Parameters + ---------- + *args : tuple + Positional arguments passed to the base `pint.UnitRegistry` constructor. + **kwargs : dict + Keyword arguments passed to the base `pint.UnitRegistry` constructor. + + """ + # Use all defaults definitions from a standard pint.UnitRegistry + super().__init__(*args, **kwargs) + + # Define the reference currency unit + # This is the base currency unit that all other currency units will be defined relative to + # We use USD_2020 as the base currency unit because it is a currency that we can relate all other currencies to + self.define("USD_2020 = [currency]") + + def get_reference_currency(self) -> str: + """Get the reference currency from the unit registry.""" + reference_currency = [ + self._units[u].name + for u in self._units + if "[currency]" in self._units[u].reference + ] + if not reference_currency or len(reference_currency) != 1: + raise ValueError( + "The unit registry does not have a unique base currency defined as '[currency]'. Please define a base currency unit to proceed." + ) + + return str(reference_currency[0]) + + def ensure_currency_is_unit(self, units: str) -> None: + """ + Ensure that all currency units in the given string are valid units in the registry. + + Extracts all currency-like strings from the input and checks if they are defined + in the unit registry. If they are not defined, they are added as valid units + relative to the reference currency but without a conversion factor. + + Parameters + ---------- + units : str + The units string to check for currency units. + + Examples + -------- + >>> ureg.ensure_currency_is_unit("USD_2020/kW") + >>> ureg.ensure_currency_is_unit("EUR_2015/USD_2020") + + """ + logger.debug(f"Ensuring currency units of '{units}' are defined in `ureg`") + currency_units = extract_currency_units(units) + logger.debug(f"Found currency-like strings in the units: {currency_units}") + + if not currency_units: + # Nothing to do + return + + reference_currency = self.get_reference_currency() + logger.debug(f"Reference currency is '{reference_currency}'.") + + # Check if the currency unit is already defined in the unit registry + # if not, define it relative to the base currency USD_2015 + for currency_unit in currency_units: + if currency_unit in self._units: + logger.debug( + f"Currency unit '{currency_unit}' is already defined in the unit registry. Not redefining it." + ) + continue + + logger.debug( + f"Currency unit '{currency_unit}' not found in the unit registry. " + f"Defining it without a conversion factor relative to the base currency '{reference_currency}'." + ) + self.define(f"{currency_unit} = nan {reference_currency}") + + +# Unit registries used throughout the package for different purposes +ureg = SpecialUnitRegistry() # For handling units, conversions, and currency units +creg = pint.UnitRegistry( + filename=Path(__file__).parent / "carriers.txt" +) # For tracking carriers and ensuring compatibility between them +hvreg = pint.UnitRegistry( + filename=Path(__file__).parent / "heating_values.txt" +) # For tracking heating values and ensuring compatibility between them diff --git a/test/conftest.py b/test/conftest.py index a87b2dde..08d231e7 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -83,3 +83,18 @@ def example_source_collection( sources_params: list[dict[str, str]] = request.param sources = [create_source_from_params(params) for params in sources_params] return technologydata.SourceCollection(sources=sources) + + +@pytest.fixture(scope="function") # type: ignore +def example_parameter(request: pytest.FixtureRequest) -> technologydata.Parameter: + """Fixture to create an example parameter.""" + source_list = request.param.pop("parameter_sources", []) + return technologydata.Parameter( + magnitude=request.param.get("parameter_magnitude"), + units=request.param.get("parameter_units"), + carrier=request.param.get("parameter_carrier"), + heating_value=request.param.get("parameter_heating_value"), + provenance=request.param.get("parameter_provenance"), + note=request.param.get("parameter_note"), + sources=technologydata.SourceCollection(sources=source_list), + ) diff --git a/test/test_data/currency_conversion/WB_CNY_2020/parameters.csv b/test/test_data/currency_conversion/WB_CNY_2020/parameters.csv new file mode 100644 index 00000000..32fcd08f --- /dev/null +++ b/test/test_data/currency_conversion/WB_CNY_2020/parameters.csv @@ -0,0 +1,15 @@ +country,input_magnitude,input_units,reference_magnitude,reference_units,source +ITA,100.0,EUR_2020/MW,788.202952,CNY_2020/MW,worldbank +FRA,100.0,EUR_2015/MW,839.849719,CNY_2020/MW,worldbank +FRA,100.0,EUR_2020/MW,788.202952,CNY_2020/MW,worldbank +ITA,100.0,EUR_2015/MW,833.762573,CNY_2020/MW,worldbank +ITA,100.0,EUR_2020/MW,788.202952,CNY_2020/MW,worldbank +FRA,200.0,GBP_2020/MW,1769.428465,CNY_2020/MW,worldbank +ITA,300000.0,USD_2020,2070230.180835,CNY_2020,worldbank +FRA,100.0,USD_2015/MW,756.953548,CNY_2020/MW,worldbank +ITA,200.0,USD_2015/MW,1502.93445,CNY_2020/MW,worldbank +ITA,200.0,USD_2020/MW,1380.153454,CNY_2020/MW,worldbank +ITA,100000.0,USD_2015,751467.224787,CNY_2020,worldbank +ITA,200000.0,USD_2020,1380153.45389,CNY_2020,worldbank +USA,100.0,USD_2020/MW,690.076727,CNY_2020/MW,worldbank +ITA,230.0,USD_2023/MW,1510.563521,CNY_2020/MW,worldbank diff --git a/test/test_data/currency_conversion/WB_EUR_2020/parameters.csv b/test/test_data/currency_conversion/WB_EUR_2020/parameters.csv new file mode 100644 index 00000000..089332de --- /dev/null +++ b/test/test_data/currency_conversion/WB_EUR_2020/parameters.csv @@ -0,0 +1,15 @@ +country,input_magnitude,input_units,reference_magnitude,reference_units,source +ITA,100.0,EUR_2020/MW,100.0,EUR_2020/MW,worldbank +FRA,100.0,EUR_2015/MW,106.552471,EUR_2020/MW,worldbank +FRA,100.0,EUR_2020/MW,100.0,EUR_2020/MW,worldbank +ITA,100.0,EUR_2015/MW,105.780189,EUR_2020/MW,worldbank +ITA,100.0,EUR_2020/MW,100.0,EUR_2020/MW,worldbank +FRA,200.0,GBP_2020/MW,224.488942,EUR_2020/MW,worldbank +ITA,300000.0,USD_2020,262651.919096,EUR_2020,worldbank +FRA,100.0,USD_2015/MW,96.035361,EUR_2020/MW,worldbank +ITA,200.0,USD_2015/MW,190.678612,EUR_2020/MW,worldbank +ITA,200.0,USD_2020/MW,175.101279,EUR_2020/MW,worldbank +ITA,100000.0,USD_2015,95339.30618,EUR_2020,worldbank +ITA,200000.0,USD_2020,175101.279398,EUR_2020,worldbank +USA,100.0,USD_2020/MW,87.55064,EUR_2020/MW,worldbank +ITA,230.0,USD_2023/MW,191.64652,EUR_2020/MW,worldbank diff --git a/test/test_data/currency_conversion/WB_USD_2020/parameters.csv b/test/test_data/currency_conversion/WB_USD_2020/parameters.csv new file mode 100644 index 00000000..724641b0 --- /dev/null +++ b/test/test_data/currency_conversion/WB_USD_2020/parameters.csv @@ -0,0 +1,15 @@ +country,input_magnitude,input_units,reference_magnitude,reference_units,source +ITA,100.0,EUR_2020/MW,114.219611,USD_2020/MW,worldbank +FRA,100.0,EUR_2015/MW,121.703819,USD_2020/MW,worldbank +FRA,100.0,EUR_2020/MW,114.219611,USD_2020/MW,worldbank +ITA,100.0,EUR_2015/MW,120.821722,USD_2020/MW,worldbank +ITA,100.0,EUR_2020/MW,114.219611,USD_2020/MW,worldbank +FRA,200.0,GBP_2020/MW,256.410396,USD_2020/MW,worldbank +ITA,300000.0,USD_2020,300000.0,USD_2020,worldbank +FRA,100.0,USD_2015/MW,109.691217,USD_2020/MW,worldbank +ITA,200.0,USD_2015/MW,217.792372,USD_2020/MW,worldbank +ITA,200.0,USD_2020/MW,200.0,USD_2020/MW,worldbank +ITA,100000.0,USD_2015,108896.185841,USD_2020,worldbank +ITA,200000.0,USD_2020,200000.0,USD_2020,worldbank +USA,100.0,USD_2020/MW,100.0,USD_2020/MW,worldbank +ITA,230.0,USD_2023/MW,218.897908,USD_2020/MW,worldbank diff --git a/test/test_data/solar_photovoltaics_example_03/technologies.json b/test/test_data/solar_photovoltaics_example_03/technologies.json index be406154..f8acfc7d 100644 --- a/test/test_data/solar_photovoltaics_example_03/technologies.json +++ b/test/test_data/solar_photovoltaics_example_03/technologies.json @@ -7,10 +7,9 @@ "detailed_technology": "Si-HC", "parameters": { "capacity": { - "quantity": { - "value": 1, - "unit": "MW" - }, + "magnitude": 1.0, + "units": "MW", + "carrier": "electricity", "provenance": "Model calculation", "note": "Average capacity factor of 22% assumed", "sources": [ @@ -33,10 +32,9 @@ ] }, "investment": { - "quantity": { - "value": 500, - "unit": "EUR_2022/KW_el" - }, + "magnitude": 500, + "units": "EUR_2022/kW", + "carrier": "1/electricity", "provenance": "Industry report", "note": "Average overnight cost", "sources": [ @@ -59,10 +57,9 @@ ] }, "specific_investment": { - "quantity": { - "value": 0.95, - "unit": "USD/W" - }, + "magnitude": 0.95, + "units": "EUR_2022/W", + "carrier": "1/electricity", "provenance": "Derived", "note": "Calculated from investment/capacity", "sources": [ @@ -85,10 +82,8 @@ ] }, "lifetime": { - "quantity": { - "value": 30, - "unit": "years" - }, + "magnitude": 30, + "units": "years", "provenance": "Manufacturer specification", "note": "With performance degradation guarantee", "sources": [ @@ -111,10 +106,8 @@ ] }, "wacc": { - "quantity": { - "value": 0.05, - "unit": "fraction" - }, + "magnitude": 5, + "units": "%", "provenance": "Financial analysis", "note": "Nominal weighted average cost of capital", "sources": [ @@ -146,10 +139,9 @@ "detailed_technology": "Si-HC", "parameters": { "capacity": { - "quantity": { - "value": 1.0, - "unit": "MW" - }, + "magnitude": 1.0, + "units": "MW", + "carrier": "electricity", "provenance": "Model calculation", "note": "Average capacity factor of 25% assumed", "sources": [ @@ -173,10 +165,9 @@ } }, "investment": { - "quantity": { - "value": 350, - "unit": "EUR_2022/KW_el" - }, + "magnitude": 350, + "units": "EUR_2022/kW", + "carrier": "1/electricity", "provenance": "Industry report", "note": "Average overnight cost for another tech", "sources": [ @@ -199,10 +190,9 @@ ] }, "specific_investment": { - "quantity": { - "value": 0.95, - "unit": "USD/W" - }, + "magnitude": 0.95, + "units": "EUR_2022/W", + "carrier": "1/electricity", "provenance": "Derived", "note": "Calculated from investment/capacity", "sources": [ @@ -225,10 +215,8 @@ ] }, "lifetime": { - "quantity": { - "value": 30, - "unit": "years" - }, + "magnitude": 30, + "units": "years", "provenance": "Manufacturer specification", "note": "With performance degradation guarantee", "sources": [ @@ -251,10 +239,8 @@ ] }, "wacc": { - "quantity": { - "value": 0.05, - "unit": "fraction" - }, + "magnitude": 5, + "units": "%", "provenance": "Financial analysis", "note": "Nominal weighted average cost of capital", "sources": [ diff --git a/test/test_data/solar_photovoltaics_example_04/technologies.json b/test/test_data/solar_photovoltaics_example_04/technologies.json index b97485fd..dfa7eb50 100644 --- a/test/test_data/solar_photovoltaics_example_04/technologies.json +++ b/test/test_data/solar_photovoltaics_example_04/technologies.json @@ -7,10 +7,9 @@ "detailed_technology": "Si-HC", "parameters": { "capacity": { - "quantity": { - "value": 1, - "unit": "MW" - }, + "magnitude": 1, + "units": "MW", + "carrier": "electricity", "provenance": "Model calculation", "note": "Average capacity factor of 22% assumed", "sources": [ @@ -22,10 +21,9 @@ ] }, "investment": { - "quantity": { - "value": 500, - "unit": "EUR_2022/KW_el" - }, + "magnitude": 500, + "units": "EUR_2022/kW", + "carrier": "1/electricity", "provenance": "Industry report", "note": "Average overnight cost", "sources": [ @@ -37,10 +35,9 @@ ] }, "specific_investment": { - "quantity": { - "value": 0.95, - "unit": "USD/W" - }, + "magnitude": 0.95, + "units": "EUR_2022/W", + "carrier": "1/electricity", "provenance": "Derived", "note": "Calculated from investment/capacity", "sources": [ @@ -52,10 +49,8 @@ ] }, "lifetime": { - "quantity": { - "value": 30, - "unit": "years" - }, + "magnitude": 30, + "units": "years", "provenance": "Manufacturer specification", "note": "With performance degradation guarantee", "sources": [ @@ -67,10 +62,8 @@ ] }, "wacc": { - "quantity": { - "value": 0.05, - "unit": "fraction" - }, + "magnitude": 5, + "units": "%", "provenance": "Financial analysis", "note": "Nominal weighted average cost of capital", "sources": [ @@ -91,10 +84,9 @@ "detailed_technology": "Si-HC", "parameters": { "capacity": { - "quantity": { - "value": 1.0, - "unit": "MW" - }, + "magnitude": 1.0, + "units": "MW", + "carrier": "electricity", "provenance": "Model calculation", "note": "Average capacity factor of 25% assumed", "sources": [ @@ -106,11 +98,10 @@ ] }, "investment": { - "quantity": { - "value": 350, - "unit": "EUR_2022/KW_el" - }, - "provenance": "Industry report", + "magnitude": 350, + "units": "EUR_2022/kW", + "carrier": "1/electricity", + "provenance": "Industry report", "note": "Average overnight cost for another tech", "sources": [ { @@ -121,10 +112,9 @@ ] }, "specific_investment": { - "quantity": { - "value": 0.95, - "unit": "USD/W" - }, + "magnitude": 0.95, + "units": "EUR_2022/W", + "carrier": "1/electricity", "provenance": "Derived", "note": "Calculated from investment/capacity", "sources": [ @@ -136,10 +126,8 @@ ] }, "lifetime": { - "quantity": { - "value": 30, - "unit": "years" - }, + "magnitude": 30, + "units": "years", "provenance": "Manufacturer specification", "note": "With performance degradation guarantee", "sources": [ @@ -151,10 +139,8 @@ ] }, "wacc": { - "quantity": { - "value": 0.05, - "unit": "fraction" - }, + "magnitude": 5, + "units": "%", "provenance": "Financial analysis", "note": "Nominal weighted average cost of capital", "sources": [ diff --git a/test/test_parameter.py b/test/test_parameter.py new file mode 100644 index 00000000..30cc6da5 --- /dev/null +++ b/test/test_parameter.py @@ -0,0 +1,717 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +"""Test the initialization and methods of the Parameter class.""" + +import pathlib + +import numpy as np +import pandas as pd +import pint +import pytest + +import technologydata + +# from technologydata.utils.units import extract_currency_units, ureg + +path_cwd = pathlib.Path.cwd() + + +class TestParameter: + """Test suite for the Parameter class in the technologydata module.""" + + def test_parameter_creation(self) -> None: + """Test the creation of a Parameter instance with various units.""" + param = technologydata.Parameter( + magnitude=1000, + units="USD_2020/kW", + carrier="H2", + heating_value="LHV", + provenance="literature", + note="Estimated", + sources=technologydata.SourceCollection( + sources=[ + technologydata.Source( + authors="some authors", + title="Example Title", + ) + ] + ), + ) + assert param.magnitude == 1000 + assert param.units == "USD_2020 / kilowatt" + assert param.provenance == "literature" + assert param.note == "Estimated" + assert param.sources is not None + + # Internal pint quantities + # pint autoconverts to the canonical name for the carrier and heating value + # so comparing with == "H2" would fail; instead check that the units are compatible + assert param._pint_quantity.units.is_compatible_with("USD_2020 / kW") + assert param._pint_carrier.is_compatible_with("H2") + assert param._pint_heating_value.is_compatible_with("LHV") + + def test_parameter_invalid_units(self) -> None: + """Test that an error is raised when invalid units are provided.""" + with pytest.raises(pint.errors.UndefinedUnitError) as excinfo: + technologydata.Parameter( + magnitude=1000, + units="INVALID_UNIT", + ) + assert "INVALID_UNIT" in str(excinfo.value) + + with pytest.raises(pint.errors.UndefinedUnitError) as excinfo: + technologydata.Parameter( + magnitude=1000, + units="USD_2020/kW", + carrier="H2", + heating_value="INVALID_HEATING_VALUE", + ) + assert "INVALID_HEATING_VALUE" in str(excinfo.value) + + with pytest.raises(pint.errors.UndefinedUnitError) as excinfo: + technologydata.Parameter( + magnitude=1000, + units="USD_2020/kW", + carrier="INVALID_CARRIER", + ) + assert "INVALID_CARRIER" in str(excinfo.value) + + with pytest.raises(ValueError) as excinfo: + technologydata.Parameter( + magnitude=1000, + units="USD_2020/kW", + heating_value="LHV", + ) + assert "Heating value cannot be set without a carrier" in str(excinfo.value) + + def test_parameter_to_conversion_fail_on_currency_conversion(self) -> None: + """Test the unit conversion of a Parameter instance to fail on currency conversion.""" + param = technologydata.Parameter( + magnitude=1000, + units="USD_2020/kW", + ) + with pytest.raises(NotImplementedError) as excinfo: + param.to("EUR_2025 / kilowatt") + assert "Currency conversion is not supported" in str(excinfo.value) + + def test_parameter_to_conversion(self) -> None: + """Test the conversion of a Parameter instance to different units.""" + param = technologydata.Parameter( + magnitude=1000, + units="USD_2020/kW", + ) + + ref = technologydata.Parameter( + magnitude=param.magnitude * 1000, + units="USD_2020 / megawatt", + ) + + converted = param.to("USD_2020 / megawatt") + + assert isinstance(converted, technologydata.Parameter) + assert converted.units == ref.units + assert converted.magnitude == ref.magnitude + + def test_pint_attributes_update(self) -> None: + """Test that pint attributes are updated correctly when attributes change and a method that uses the pint fields is called.""" + param = technologydata.Parameter( + magnitude=1000, + units="USD_2020/kW", + carrier="H2", + heating_value="LHV", + provenance="literature", + note="Estimated", + ) + # Change magnitude and units + param.magnitude = 2000 + param.units = "EUR_2025 / kilowatt" + param._update_pint_attributes() + assert param._pint_quantity.magnitude == 2000 + assert str(param._pint_quantity.units) == "EUR_2025 / kilowatt" + + # Change magnitude and units again and check if they are updated + # when calling a method that uses them + param.magnitude = 3000 + param.units = "USD_2020 / kWh" + param = param.to("USD_2020 / kWh") + assert param._pint_quantity.magnitude == 3000 + assert str(param._pint_quantity.units) == str( + technologydata.ureg.Unit("USD_2020 / kWh") + ) + + def test_parameter_change_currency(self) -> None: + """Test currency conversion with inflation adjustment.""" + param = technologydata.Parameter( + magnitude=1, + units="USD_2020/kW", + ) + + # Convert to EUR with inflation adjustment for Germany + converted = param.change_currency("EUR_2023", "DEU") + assert isinstance(converted, technologydata.Parameter) + assert converted.units is not None + assert "EUR_2023" in converted.units + assert converted._pint_quantity is not None + assert converted._pint_quantity.is_compatible_with("EUR_2023 / kW") + + # Check that magnitude changed due to currency conversion + assert not np.isnan(converted.magnitude) + assert converted.magnitude != param.magnitude + + def test_parameter_change_currency_explicit_source(self) -> None: + """Test currency conversion with explicit inflation data source.""" + param = technologydata.Parameter( + magnitude=1, + units="EUR_2019/MWh", + ) + + # Convert using IMF data source + converted = param.change_currency("USD_2022", "USA", source="worldbank") + assert isinstance(converted, technologydata.Parameter) + assert converted.units is not None + assert "USD_2022" in converted.units + assert converted._pint_quantity is not None + assert not np.isnan(converted.magnitude) + assert converted._pint_quantity.is_compatible_with("USD_2022 / MWh") + + def test_parameter_change_currency_different_source(self) -> None: + """Test currency conversion with different inflation data source.""" + param = technologydata.Parameter( + magnitude=1, + units="EUR_2019/MWh", + ) + + # Convert using IMF data source + converted = param.change_currency("USD_2022", "USA", source="imf") + assert isinstance(converted, technologydata.Parameter) + assert converted.units is not None + assert "USD_2022" in converted.units + assert converted._pint_quantity.is_compatible_with("USD_2022 / MWh") + + def test_parameter_change_currency_multiple_currencies(self) -> None: + """Test currency conversion when units contain multiple currencies.""" + param = technologydata.Parameter( + magnitude=1, + units="USD_2020 * EUR_2021 / kW", + ) + + # Convert all currencies to CNY_2023 + converted = param.change_currency("CNY_2023", "CHN") + assert isinstance(converted, technologydata.Parameter) + # Both USD_2020 and EUR_2021 should be replaced with CNY_2023 + assert converted.units is not None + assert "CNY_2023" in converted.units + assert "USD_2020" not in converted.units + assert "EUR_2021" not in converted.units + + def test_parameter_change_currency_same_currency(self) -> None: + """Test currency conversion to the same currency (inflation adjustment only).""" + param = technologydata.Parameter( + magnitude=1, + units="USD_2019/kW", + ) + + # Convert to USD but different year (inflation adjustment) + converted = param.change_currency("USD_2023", "USA") + assert isinstance(converted, technologydata.Parameter) + assert converted.units == "USD_2023 / kilowatt" + # Magnitude should change due to inflation adjustment + assert not np.isnan(converted.magnitude) + assert converted.magnitude != param.magnitude + + def test_parameter_no_currency_change(self) -> None: + """Test that no currency change occurs when the target currency is the same as the current one.""" + param = technologydata.Parameter( + magnitude=1, + units="USD_2020/kW", + ) + + # Convert to the same currency and year + converted = param.change_currency("USD_2020", "USA") + assert isinstance(converted, technologydata.Parameter) + assert converted._pint_quantity.is_compatible_with("USD_2020 / kW") + # Magnitude should remain unchanged + assert not np.isnan(converted.magnitude) + assert converted.magnitude == param.magnitude + + def test_parameter_change_currency_invalid_country(self) -> None: + """Test that invalid country codes raise appropriate errors.""" + param = technologydata.Parameter( + magnitude=1, + units="USD_2020/kW", + ) + + # Invalid country code should raise an error + with pytest.raises((ValueError, KeyError)): + param.change_currency("EUR_2023", "USB") + + def test_parameter_change_currency_invalid_source(self) -> None: + """Test that invalid inflation data sources raise appropriate errors.""" + param = technologydata.Parameter( + magnitude=1000, + units="USD_2020/kW", + ) + + # Invalid source should raise an error + with pytest.raises(KeyError): + param.change_currency("EUR_2023", "DEU", source="invalid_source") + + def test_parameter_change_currency_no_units(self) -> None: + """Test currency conversion with parameter that has no units.""" + param = technologydata.Parameter( + magnitude=42, + ) + + # Should handle parameters without currency units gracefully + converted = param.change_currency("EUR_2023", "DEU") + assert isinstance(converted, technologydata.Parameter) + assert converted.magnitude == 42 + assert converted.units is None or "EUR_2023" not in str(converted.units) + + def test_parameter_unchanged_other_attributes(self) -> None: + """Test that other attributes remain unchanged after currency conversion.""" + param = technologydata.Parameter( + magnitude=1000, + units="USD_2020/kW", + carrier="H2", + heating_value="LHV", + provenance="literature", + note="Estimated", + ) + + # Convert to EUR_2023 + converted = param.change_currency("EUR_2023", "DEU") + + # Check that other attributes remain unchanged + assert converted.carrier == param.carrier + assert converted.heating_value == param.heating_value + assert converted.provenance == param.provenance + assert converted.note == param.note + + def test_parameter_heating_value_compatibility(self) -> None: + """Test that we do not permit operations on mixed heating values.""" + param_lhv = technologydata.Parameter( + magnitude=1, + carrier="H2", + heating_value="LHV", + ) + param_hhv = technologydata.Parameter( + magnitude=1, + carrier="H2", + heating_value="HHV", + ) + + # Different error messages for + and - + with pytest.raises(ValueError) as excinfo: + param_lhv + param_hhv + assert ( + "Operation not permitted on parameters with different heating values" + in str(excinfo.value) + ) + with pytest.raises(ValueError) as excinfo: + param_lhv - param_hhv + assert ( + "Operation not permitted on parameters with different heating values" + in str(excinfo.value) + ) + + # Different error messages for * and / + with pytest.raises(ValueError) as excinfo: + param_lhv * param_hhv + assert "Cannot multiply parameters with different heating values" in str( + excinfo.value + ) + + with pytest.raises(ValueError) as excinfo: + param_lhv / param_hhv + assert "Cannot divide parameters with different heating values" in str( + excinfo.value + ) + + def test_parameter_carrier_compatibility(self) -> None: + """Test that we do only permit certain operations on mixed carriers.""" + param_h2 = technologydata.Parameter( + magnitude=1, + carrier="H2", + heating_value="LHV", + ) + param_ch4 = technologydata.Parameter( + magnitude=1, + carrier="CH4", + heating_value="LHV", + ) + + # Different error messages for + and - + with pytest.raises(ValueError) as excinfo: + param_h2 + param_ch4 + assert ( + "Operation not permitted on parameters with different carriers" + in str(excinfo.value) + ) + with pytest.raises(ValueError) as excinfo: + param_h2 - param_ch4 + assert ( + "Operation not permitted on parameters with different carriers" + in str(excinfo.value) + ) + + # * and / are permitted with different carriers and should yield mixed carriers + assert ( + param_h2 * param_ch4 + ).carrier == param_h2._pint_carrier * param_ch4._pint_carrier + assert ( + param_h2 / param_ch4 + ).carrier == param_h2._pint_carrier / param_ch4._pint_carrier + + def test_parameter_equality(self) -> None: + """Test equality comparison of Parameter objects.""" + # Create two identical parameters + param1 = technologydata.Parameter( + magnitude=1000, + units="USD_2020/kW", + carrier="H2", + heating_value="LHV", + provenance="literature", + note="Estimated", + sources=technologydata.SourceCollection( + sources=[ + technologydata.Source( + authors="some authors", + title="Example Title", + ) + ] + ), + ) + param2 = technologydata.Parameter( + magnitude=1000, + units="USD_2020/kW", + carrier="H2", + heating_value="LHV", + provenance="literature", + note="Estimated", + sources=technologydata.SourceCollection( + sources=[ + technologydata.Source( + authors="some authors", + title="Example Title", + ) + ] + ), + ) + + # Should be equal + assert param1 == param2 + assert param2 == param1 + + def test_parameter_equality_different_magnitude(self) -> None: + """Test that parameters with different magnitudes are not equal.""" + param1 = technologydata.Parameter(magnitude=1000, units="USD_2020/kW") + param2 = technologydata.Parameter(magnitude=2000, units="USD_2020/kW") + + assert param1 != param2 + assert param2 != param1 + + def test_parameter_equality_different_units(self) -> None: + """Test that parameters with different units are not equal.""" + param1 = technologydata.Parameter(magnitude=1000, units="USD_2020/kW") + param2 = technologydata.Parameter(magnitude=1000, units="EUR_2020/kW") + + assert param1 != param2 + assert param2 != param1 + + def test_parameter_equality_different_carrier(self) -> None: + """Test that parameters with different carriers are not equal.""" + param1 = technologydata.Parameter(magnitude=1000, carrier="H2") + param2 = technologydata.Parameter(magnitude=1000, carrier="CH4") + + assert param1 != param2 + assert param2 != param1 + + def test_parameter_equality_different_heating_value(self) -> None: + """Test that parameters with different heating values are not equal.""" + param1 = technologydata.Parameter( + magnitude=1000, carrier="H2", heating_value="LHV" + ) + param2 = technologydata.Parameter( + magnitude=1000, carrier="H2", heating_value="HHV" + ) + + assert param1 != param2 + assert param2 != param1 + + def test_parameter_equality_different_provenance(self) -> None: + """Test that parameters with different provenance are not equal.""" + param1 = technologydata.Parameter(magnitude=1000, provenance="literature") + param2 = technologydata.Parameter(magnitude=1000, provenance="expert_estimate") + + assert param1 != param2 + assert param2 != param1 + + def test_parameter_equality_different_note(self) -> None: + """Test that parameters with different notes are not equal.""" + param1 = technologydata.Parameter(magnitude=1000, note="Estimated") + param2 = technologydata.Parameter(magnitude=1000, note="Measured") + + assert param1 != param2 + assert param2 != param1 + + def test_parameter_equality_different_sources(self) -> None: + """Test that parameters with different sources are not equal.""" + source1 = technologydata.Source(authors="Author A", title="Title A") + source2 = technologydata.Source(authors="Author B", title="Title B") + + param1 = technologydata.Parameter( + magnitude=1000, sources=technologydata.SourceCollection(sources=[source1]) + ) + param2 = technologydata.Parameter( + magnitude=1000, sources=technologydata.SourceCollection(sources=[source2]) + ) + + assert param1 != param2 + assert param2 != param1 + + def test_parameter_equality_none_values(self) -> None: + """Test equality with None values for optional fields.""" + param1 = technologydata.Parameter(magnitude=1000) + param2 = technologydata.Parameter(magnitude=1000) + + # Both have None for optional fields, should be equal + assert param1 == param2 + + # One has None, the other has a value + param3 = technologydata.Parameter(magnitude=1000, units="USD_2020/kW") + assert param1 != param3 + assert param3 != param1 + + def test_parameter_equality_with_non_parameter(self) -> None: + """Test equality comparison with non-Parameter objects.""" + param = technologydata.Parameter(magnitude=1000) + + # Should return NotImplemented for non-Parameter objects + assert param.__eq__("not a parameter") == NotImplemented + assert param.__eq__(42) == NotImplemented + assert param.__eq__(None) == NotImplemented + + def test_parameter_equality_canonical_units(self) -> None: + """Test that parameters with equivalent but differently formatted units are equal.""" + # Units should be canonicalized during initialization + param1 = technologydata.Parameter(magnitude=1000, units="USD_2020/kW") + param2 = technologydata.Parameter(magnitude=1000, units="USD_2020/kilowatt") + + # Should be equal because units are canonicalized + assert param1 == param2 + assert param2 == param1 + + def test_parameter_equality_self_reference(self) -> None: + """Test that a parameter is equal to itself.""" + param = technologydata.Parameter( + magnitude=1000, + units="USD_2020/kW", + carrier="H2", + heating_value="LHV", + provenance="literature", + note="Estimated", + ) + + assert param == param + + @pytest.mark.parametrize( + "example_parameter", + [ + { + "parameter_magnitude": 1000, + "parameter_units": "USD_2020/kW", + "parameter_carrier": "H2", + "parameter_heating_value": "LHV", + "parameter_provenance": "literature", + "parameter_note": "Estimated", + "parameter_sources": [ + technologydata.Source(title="title", authors="authors") + ], + } + ], + indirect=["example_parameter"], + ) # type: ignore + def test_example_parameter( + self, example_parameter: technologydata.Parameter + ) -> None: + """Test that the fixture example_parameter yields a parameter object.""" + assert isinstance(example_parameter, technologydata.Parameter) + + def test_parameter_pow_basic(self) -> None: + """Test integer exponentiation.""" + param = technologydata.Parameter(magnitude=2, units="kW") + result = param**3 + assert isinstance(result, technologydata.Parameter) + assert result.magnitude == 8 + assert result.units == "kilowatt ** 3" + + def test_parameter_pow_fractional(self) -> None: + """Test fractional exponentiation.""" + param = technologydata.Parameter(magnitude=9, units="m**2") + result = param**0.5 + assert pytest.approx(result.magnitude) == 3 + assert result.units == "meter" + + def test_parameter_pow_zero(self) -> None: + """Test zero exponent returns dimensionless.""" + param = technologydata.Parameter(magnitude=5, units="J") + result = param**0 + assert result.magnitude == 1 + assert result.units == "dimensionless" + + def test_parameter_pow_negative(self) -> None: + """Test negative exponentiation and unit handling.""" + param = technologydata.Parameter(magnitude=2, units="W") + result = param**-2 + assert pytest.approx(result.magnitude) == 0.25 + # Compare units using pint, not string equality + assert technologydata.ureg.Unit(result.units) == technologydata.ureg.Unit( + "watt ** -2" + ) + + def test_parameter_pow_carrier(self) -> None: + """Test that the carrier attribute is also affected.""" + param = technologydata.Parameter( + magnitude=3, + units="kg", + carrier="H2", + ) + result = param**2 + assert result.carrier == f"{param.carrier} ** 2" + + def test_parameter_pow_preserves_metadata(self) -> None: + """Test that metadata is preserved after exponentiation.""" + param = technologydata.Parameter( + magnitude=3, + units="kg", + carrier="H2", + heating_value="LHV", + provenance="test", + note="note", + ) + result = param**2 + assert result.carrier == f"{param.carrier} ** 2" + assert result.heating_value == param.heating_value + assert result.provenance == param.provenance + assert result.note == param.note + + def test_change_heating_value_h2_lhv_to_hhv(self) -> None: + """Test LHV to HHV conversion for H2.""" + p = technologydata.Parameter( + magnitude=119.6, + units="kilowatt_hour", + carrier="hydrogen", + heating_value="lower_heating_value", + ) + p2 = p.change_heating_value("higher_heating_value") + assert pytest.approx(p2.magnitude) == 141.8 + assert p2.heating_value == "higher_heating_value" + assert p2.carrier == "hydrogen" + assert p2.units == "kilowatt_hour" + + def test_change_heating_value_h2_hhv_to_lhv(self) -> None: + """Test HHV to LHV conversion for H2.""" + p = technologydata.Parameter( + magnitude=141.8, + units="kilowatt_hour", + carrier="hydrogen", + heating_value="higher_heating_value", + ) + p2 = p.change_heating_value("lower_heating_value") + assert pytest.approx(p2.magnitude) == 119.6 + assert p2.heating_value == "lower_heating_value" + assert p2.carrier == "hydrogen" + assert p2.units == "kilowatt_hour" + + def test_change_heating_value_ch4_lhv_to_hhv(self) -> None: + """Test LHV to HHV conversion for CH4.""" + p = technologydata.Parameter( + magnitude=10, + units="kilowatt_hour", + carrier="methane", + heating_value="lower_heating_value", + ) + p2 = p.change_heating_value("higher_heating_value") + assert pytest.approx(p2.magnitude) == 11.1 + assert p2.heating_value == "higher_heating_value" + assert p2.carrier == "methane" + assert p2.units == "kilowatt_hour" + + def test_change_heating_value_ch4_hhv_to_lhv(self) -> None: + """Test HHV to LHV conversion for CH4.""" + p = technologydata.Parameter( + magnitude=11.1, + units="kilowatt_hour", + carrier="methane", + heating_value="higher_heating_value", + ) + p2 = p.change_heating_value("lower_heating_value") + assert pytest.approx(p2.magnitude) == 10.0 + assert p2.heating_value == "lower_heating_value" + assert p2.carrier == "methane" + assert p2.units == "kilowatt_hour" + + def test_change_heating_value_no_carrier_in_units(self) -> None: + """Test conversion when carrier does not appear in units (should treat as 1 appearance).""" + p = technologydata.Parameter( + magnitude=1, + units="kilowatt_hour", + carrier="hydrogen", + heating_value="lower_heating_value", + ) + p2 = p.change_heating_value("higher_heating_value") + assert pytest.approx(p2.magnitude) == 1.418 / 1.196 + assert p2.heating_value == "higher_heating_value" + assert p2.carrier == "hydrogen" + assert p2.units == "kilowatt_hour" + + def test_change_heating_value_same_hv(self) -> None: + """Test that no conversion occurs if heating value is unchanged.""" + p = technologydata.Parameter( + magnitude=1, + units="kilowatt_hour", + carrier="hydrogen", + heating_value="lower_heating_value", + ) + p2 = p.change_heating_value("lower_heating_value") + assert p2.magnitude == 1 + assert p2.heating_value == "lower_heating_value" + + @pytest.mark.parametrize( + "folder_id", + ["WB_CNY_2020", "WB_EUR_2020", "WB_USD_2020"], + ) # type: ignore + def test_change_currency(self, folder_id: str) -> None: + """Validate the currency conversion rates.""" + input_path = pathlib.Path( + path_cwd, + "test", + "test_data", + "currency_conversion", + folder_id, + "parameters.csv", + ) + input_dataframe = pd.read_csv(input_path).reset_index() + for _, row in input_dataframe.iterrows(): + reference_param = technologydata.Parameter( + magnitude=np.round(row["reference_magnitude"], 2), + units=row["reference_units"], + ) + + output_param = technologydata.Parameter( + magnitude=row["input_magnitude"], + units=row["input_units"], + ).change_currency( + to_currency=technologydata.extract_currency_units( + row["reference_units"] + )[0], + country=row["country"], + source=row["source"], + ) + assert output_param.magnitude == pytest.approx( + reference_param.magnitude, rel=1e-2 + ) + assert output_param.units == reference_param.units diff --git a/test/test_source.py b/test/test_source.py index 3751b8e2..94c8db4d 100644 --- a/test/test_source.py +++ b/test/test_source.py @@ -150,7 +150,7 @@ def test_retrieve_from_wayback(example_source: technologydata.Source) -> None: def test_store_in_wayback() -> None: """Check if a given url is correctly stored as a snapshot on Internet Archive Wayback Machine.""" - url_to_archive = "https://openenergytransition.org/outputs.html" + url_to_archive = "https://www.openenergytransition.org/outputs.html" archived_info = technologydata.Source.store_in_wayback(url_to_archive) # Check if archived_info is None diff --git a/test/test_units.py b/test/test_units.py new file mode 100644 index 00000000..e729a327 --- /dev/null +++ b/test/test_units.py @@ -0,0 +1,590 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT +"""Test the creation of custom units and handling of currencies using Pint.""" + +import json + +import pint +import pytest +from frozendict import frozendict + +from technologydata.utils.units import ( + CURRENCY_CODES_CACHE, + SPECIAL_CASES_CURRENCY_CODE_TO_ISO3, + SpecialUnitRegistry, + creg, + extract_currency_units, + get_conversion_rate, + get_iso3_from_currency_code, + get_iso3_to_currency_codes, + hvreg, +) + + +class TestExtractCurrencyUnits: + """Test cases for extract_currency_units function.""" + + def test_single_currency_unit(self) -> None: + """Test extraction of a single currency unit.""" + result = extract_currency_units("USD_2020/kW") + assert result == ["USD_2020"] + + def test_multiple_currency_units(self) -> None: + """Test extraction of multiple currency units.""" + result = extract_currency_units("EUR_2015/USD_2020") + assert set(result) == {"EUR_2015", "USD_2020"} + + def test_no_currency_units(self) -> None: + """Test that no currency units are extracted from non-currency strings.""" + result = extract_currency_units("kW/hour") + assert result == [] + + def test_empty_string(self) -> None: + """Test extraction from empty string.""" + result = extract_currency_units("") + assert result == [] + + def test_pint_unit(self) -> None: + """Test extraction from pint.Unit object.""" + ureg = pint.UnitRegistry() + ureg.define("USD_2020 = [currency]") + unit = ureg.Unit("USD_2020") + result = extract_currency_units(unit) + assert result == ["USD_2020"] + + ureg.define("USD_2020 = [currency]") + unit = ureg.Unit("USD_2020/kW") + result = extract_currency_units(unit) + assert result == ["USD_2020"] + + def test_pint_unit_input(self) -> None: + """Test that pint.Unit objects are properly converted to strings.""" + ureg = pint.UnitRegistry() + unit = ureg.parse_expression("kW") + result = extract_currency_units(unit) + assert result == [] + + def test_complex_unit_string(self) -> None: + """Test extraction from complex unit strings with multiple components.""" + result = extract_currency_units("USD_2020/kW/year") + assert result == ["USD_2020"] + + def test_invalid_year_format(self) -> None: + """Test that invalid year formats are not matched.""" + result = extract_currency_units("USD_20/kW") + assert result == [] + + result = extract_currency_units("USD_20200/kW") + assert result == [] + + def test_non_three_letter_codes(self) -> None: + """Test that non-three-letter codes are not matched.""" + result = extract_currency_units("US_2020/kW") + assert result == [] + + result = extract_currency_units("USDD_2020/kW") + assert result == [] + + def test_case_sensitivity(self) -> None: + """Test that currency codes must be uppercase.""" + result = extract_currency_units("usd_2020/kW") + assert result == [] + + def test_valid_currency_codes(self) -> None: + """Test that only valid currency codes are accepted.""" + result = extract_currency_units("USD_2020/kW") + assert result == ["USD_2020"] + + result = extract_currency_units("EUR_2015/kW") + assert result == ["EUR_2015"] + + with pytest.raises(ValueError): + extract_currency_units("EUA_2015/kW") + + def test_invalid_currency_codes_raise(self) -> None: + """Test that invalid currency codes raise ValueError.""" + with pytest.raises(ValueError): + extract_currency_units("XYZ_2020/kW") + + def test_duplicate_currency_units(self) -> None: + """Test that duplicate currency units are handled correctly.""" + result = extract_currency_units("USD_2020/USD_2020/EUR_2015") + assert result == ["USD_2020", "USD_2020", "EUR_2015"] + + def test_different_years_same_currency(self) -> None: + """Test extraction of same currency with different years.""" + result = extract_currency_units("USD_2020/USD_2015") + assert result == ["USD_2020", "USD_2015"] + + def test_mixed_valid_invalid_currencies(self) -> None: + """Test behavior with mix of valid and invalid currency codes.""" + with pytest.raises(ValueError): + extract_currency_units("USD_2020/XYZ_2021") + + +class TestGetIso3ToCurrencyCodes: + """Test cases for get_iso3_to_currency_codes function and whether the cache works correctly.""" + + def test_correct_currency_codes(self) -> None: + """Test that the function returns correct currency codes.""" + codes = get_iso3_to_currency_codes() + + # dtype check + assert isinstance(codes, dict) + + # check some known currency codes + assert "USD" in codes.values() + assert "EUR" in codes.values() + + # check wrong currency codes + assert "EUA" not in codes.values() # EUA is not a valid currency code + assert "usd" not in codes.values() # codes must be uppercase + + assert all(len(iso3) == 3 for iso3 in codes.keys()), ( + "All ISO3 codes should be 3 letters long" + ) + assert all(iso3.isupper() for iso3 in codes.keys()), ( + "All ISO3 codes should be uppercase" + ) + assert all([len(code) == 3 for code in codes.values() if code]), ( + "All currency codes should be 3 letters long" + ) + assert all([code.isupper() for code in codes.values() if code]), ( + "All currency codes should be uppercase" + ) + + def test_currency_cache_creates_and_reads(self) -> None: + """Test that the cache is properly created/read/ignored.""" + # Ensure the cache does not exist before the test + CURRENCY_CODES_CACHE.unlink(missing_ok=True) + + # First call should create cache + codes = get_iso3_to_currency_codes() + assert CURRENCY_CODES_CACHE.exists() + + # Second call should read from cache (simulate by modifying file) + dummy_data = {"FOO": "BAR"} + with open(CURRENCY_CODES_CACHE, "w") as f: + json.dump(dummy_data, f) + codes = get_iso3_to_currency_codes() + assert codes == dummy_data + + # Bypass cache to ensure it reads from the live feed (FOO should not be there) + codes = get_iso3_to_currency_codes(ignore_cache=True) + assert codes != dummy_data + + # Force refresh should overwrite cache + codes = get_iso3_to_currency_codes(refresh=True) + assert codes != dummy_data + + +class TestGetConversionRate: + """Test cases for get_conversion_rate function.""" + + def test_same_currency_same_year(self) -> None: + """Test conversion rate when currency and year are the same.""" + rate = get_conversion_rate( + from_iso3="USA", + to_iso3="USA", + country="USA", + from_year=2020, + to_year=2020, + ) + assert rate == pytest.approx(1.0, rel=1e-6) + + def test_different_years_same_currency(self) -> None: + """Test conversion rate with different years but same currency.""" + rate = get_conversion_rate( + from_iso3="USA", + to_iso3="USA", + country="USA", + from_year=2015, + to_year=2020, + ) + # Rate should not be 1.0 due to inflation adjustment + assert rate != 1.0 + assert isinstance(rate, float) + assert rate > 0 + + def test_different_currencies_same_year(self) -> None: + """Test conversion rate with different currencies but same year.""" + rate = get_conversion_rate( + from_iso3="USA", + to_iso3="DEU", + country="USA", + from_year=2020, + to_year=2020, + ) + # Rate should not be 1.0 due to currency conversion + assert rate != 1.0 + assert isinstance(rate, float) + assert rate > 0 + + def test_different_currencies_different_years(self) -> None: + """Test conversion rate with different currencies and years.""" + rate = get_conversion_rate( + from_iso3="USA", + to_iso3="DEU", + country="USA", + from_year=2015, + to_year=2020, + ) + assert isinstance(rate, float) + assert rate > 0 + + def test_worldbank_source(self) -> None: + """Test conversion rate using World Bank data source.""" + rate = get_conversion_rate( + from_iso3="USA", + to_iso3="USA", + country="USA", + from_year=2015, + to_year=2020, + source="worldbank", + ) + assert isinstance(rate, float) + assert rate > 0 + + def test_imf_source(self) -> None: + """Test conversion rate using IMF data source.""" + rate = get_conversion_rate( + from_iso3="USA", + to_iso3="USA", + country="USA", + from_year=2015, + to_year=2020, + source="international_monetary_fund", + ) + assert isinstance(rate, float) + assert rate > 0 + + def test_invalid_source_raises_keyerror(self) -> None: + """Test that invalid source raises KeyError.""" + with pytest.raises(KeyError): + get_conversion_rate( + from_iso3="USA", + to_iso3="USA", + country="USA", + from_year=2020, + to_year=2020, + source="invalid_source", + ) + + def test_caching_behavior(self) -> None: + """Test that function results are cached.""" + # Call function twice with same parameters + rate1 = get_conversion_rate( + from_iso3="USA", + to_iso3="DEU", + country="USA", + from_year=2018, + to_year=2019, + ) + rate2 = get_conversion_rate( + from_iso3="USA", + to_iso3="DEU", + country="USA", + from_year=2018, + to_year=2019, + ) + + # Results should be identical (cached) + assert rate1 == rate2 + + +class TestUnitRegistryGetReferenceCurrency: + """Test cases for UnitRegistry.get_reference_currency method.""" + + def test_single_reference_currency(self) -> None: + """Test that get_reference_currency returns the correct currency when one is defined.""" + ureg = SpecialUnitRegistry() + # UnitRegistry already defines USD_2020 as [currency] in __init__ + reference = ureg.get_reference_currency() + assert reference == "USD_2020" + + def test_no_reference_currency_raises_error(self) -> None: + """Test that ValueError is raised when no reference currency is defined.""" + # Use base pint registry without currency definitions + ureg = SpecialUnitRegistry() + + ureg.define( + "USD_2020 = [not_a_currency]" + ) # Overwrite the default currency definition to not be a currency + + with pytest.raises(ValueError, match="does not have a unique base currency"): + ureg.get_reference_currency() + + def test_multiple_reference_currencies_raises_error(self) -> None: + """Test that ValueError is raised when multiple currencies are defined.""" + ureg = SpecialUnitRegistry() + ureg.define("EUR_2015 = [currency]") + + with pytest.raises(ValueError, match="does not have a unique base currency"): + ureg.get_reference_currency() + + +class TestUnitRegistryEnsureCurrencyIsUnit: + """Test cases for UnitRegistry.ensure_currency_is_unit method.""" + + def test_no_currency_units_does_nothing(self) -> None: + """Test that method does nothing when no currency units are present.""" + ureg = SpecialUnitRegistry() + initial_units = set(ureg._units.keys()) + + ureg.ensure_currency_is_unit("kW/hour") + + # No new units should be added + assert set(ureg._units.keys()) == initial_units + + def test_empty_string_does_nothing(self) -> None: + """Test that method does nothing with empty string.""" + ureg = SpecialUnitRegistry() + initial_units = set(ureg._units.keys()) + + ureg.ensure_currency_is_unit("") + + # No new units should be added + assert set(ureg._units.keys()) == initial_units + + def test_already_defined_currency_not_redefined(self) -> None: + """Test that already defined currency units are not redefined.""" + ureg = SpecialUnitRegistry() + # USD_2020 is already defined in UnitRegistry.__init__ + + # Should not raise an error or redefine + ureg.ensure_currency_is_unit("USD_2020/kW") + + # Verify USD_2020 is still defined + assert "USD_2020" in ureg._units + + def test_new_currency_unit_gets_defined(self) -> None: + """Test that new currency units get defined relative to reference currency.""" + ureg = SpecialUnitRegistry() + + # EUR_2015 should not be defined initially + assert "EUR_2015" not in ureg._units + + ureg.ensure_currency_is_unit("EUR_2015/kW") + + # EUR_2015 should now be defined + assert "EUR_2015" in ureg._units + + # Verify it's defined relative to the reference currency (USD_2020) + eur_unit = ureg._units["EUR_2015"] + assert "USD_2020" in str(eur_unit) + + def test_multiple_currency_units_get_defined(self) -> None: + """Test that multiple new currency units get defined.""" + ureg = SpecialUnitRegistry() + + # Neither should be defined initially + assert "EUR_2015" not in ureg._units + assert "GBP_2018" not in ureg._units + + ureg.ensure_currency_is_unit("EUR_2015/GBP_2018/kW") + + # Both should now be defined + assert "EUR_2015" in ureg._units + assert "GBP_2018" in ureg._units + + def test_mix_of_existing_and_new_currencies(self) -> None: + """Test handling mix of existing and new currency units.""" + ureg = SpecialUnitRegistry() + + # USD_2020 already exists, CAD_2019 doesn't + assert "USD_2020" in ureg._units + assert "CAD_2019" not in ureg._units + + ureg.ensure_currency_is_unit("USD_2020/CAD_2019") + + # Both should be defined + assert "USD_2020" in ureg._units + assert "CAD_2019" in ureg._units + + def test_currency_defined_with_nan_conversion(self) -> None: + """Test that new currencies are defined with nan conversion factor.""" + ureg = SpecialUnitRegistry() + + ureg.ensure_currency_is_unit("JPY_2021/kW") + + # Verify JPY_2021 is defined with nan relative to reference currency + jpy_unit = ureg._units["JPY_2021"] + assert "nan" in str(jpy_unit) or "NaN" in str(jpy_unit).lower() + + def test_complex_unit_string_with_currency(self) -> None: + """Test handling of complex unit strings containing currencies.""" + ureg = SpecialUnitRegistry() + + assert "CHF_2022" not in ureg._units + + ureg.ensure_currency_is_unit("CHF_2022/kW/year") + + assert "CHF_2022" in ureg._units + + def test_same_currency_different_years(self) -> None: + """Test that same currency with different years creates separate units.""" + ureg = SpecialUnitRegistry() + + ureg.ensure_currency_is_unit("EUR_2015/EUR_2020") + + # Both year variants should be defined + assert "EUR_2015" in ureg._units + assert "EUR_2020" in ureg._units + + def test_invalid_currency_code_raises_error(self) -> None: + """Test that invalid currency codes raise ValueError.""" + ureg = SpecialUnitRegistry() + + with pytest.raises(ValueError, match="invalid 3-letter currency codes"): + ureg.ensure_currency_is_unit("XYZ_2020/kW") + + +class TestCarrierRegistry: + """Test cases for creg (carrier registry) functionality.""" + + def test_creg_registry_parses_carriers(self) -> None: + """Test that the carrier registry (creg) loads carrier units from carriers.txt and can create Quantities.""" + expected_carriers = [ + "electricity", + "hydrogen", + "natural_gas", + "coal", + "diesel", + ] + for carrier in expected_carriers: + assert carrier in creg, f"Carrier '{carrier}' not found in creg registry." + q = creg.Quantity(1, carrier) + assert q.units == creg.Unit(carrier) + + +class TestHeatingValueRegistry: + """Test cases for hvreg (heating value registry) functionality.""" + + def test_hvreg_registry_parses_heating_values(self) -> None: + """Test that heating value registry (hvreg) loads heating value units from heating_values.txt and can create Quantities.""" + expected_hvs = [ + "LHV", + "HHV", + "NCV", + "GCV", + ] + for fuel in expected_hvs: + assert fuel in hvreg, f"Fuel '{fuel}' not found in hvreg registry." + q = hvreg.Quantity(1, fuel) + assert q.units == hvreg.Unit(fuel) + + def test_hvreg_units_compatability(self) -> None: + """Test that the same heating values are compatible, but different hvs are not.""" + compatible_hvs = ( + ["LHV", "NCV", "lower_heating_value"], + ["HHV", "GCV", "higher_heating_value"], + ) + for hvs in compatible_hvs: + units = [hvreg.Unit(hv) for hv in hvs] + + # Check compatibility + assert all(units[0].is_compatible_with(u) for u in units[1:]), ( + f"Units {units} should be compatible." + ) + + +class TestGetIso3FromCurrencyCode: + """Test cases for get_iso3_from_currency_code function.""" + + def test_special_case_currencies(self) -> None: + """Test that special case currencies return correct ISO3 codes.""" + # Test some known special cases + assert get_iso3_from_currency_code("USD") == "USA" + assert get_iso3_from_currency_code("EUR") == "EUR" + assert get_iso3_from_currency_code("GBP") == "GBR" + assert get_iso3_from_currency_code("CHF") == "CHE" + assert get_iso3_from_currency_code("NOK") == "NOR" + + def test_regular_currency_codes(self) -> None: + """Test that regular (non-special case) currency codes work correctly.""" + # Test currencies that should have unique mappings + result = get_iso3_from_currency_code("JPY") + assert result == "JPN" + + result = get_iso3_from_currency_code("CAD") + assert result == "CAN" + + def test_invalid_currency_code_raises_error(self) -> None: + """Test that invalid currency codes raise ValueError.""" + with pytest.raises(ValueError, match="Currency code 'XYZ' not found"): + get_iso3_from_currency_code("XYZ") + + with pytest.raises(ValueError, match="Currency code 'INVALID' not found"): + get_iso3_from_currency_code("INVALID") + + def test_empty_currency_code_raises_error(self) -> None: + """Test that empty currency code raises ValueError.""" + with pytest.raises(ValueError, match="Currency code '' not found"): + get_iso3_from_currency_code("") + + def test_case_sensitivity(self) -> None: + """Test that currency codes are case sensitive.""" + # Valid uppercase + assert get_iso3_from_currency_code("USD") == "USA" + + # Invalid lowercase should raise error + with pytest.raises(ValueError, match="Currency code 'usd' not found"): + get_iso3_from_currency_code("usd") + + def test_empty_special_cases(self) -> None: + """Test behavior with empty special cases dictionary.""" + # With empty special cases, USD should not be handled specially + # This might raise an error if USD has multiple ISO3 mappings + + try: + result = get_iso3_from_currency_code("USD", special_cases=frozendict({})) + # If no error, USD has a unique mapping + assert isinstance(result, str) + assert len(result) == 3 + except ValueError as e: + # Expected if USD has multiple mappings and needs special handling + assert "Some currency codes are used by multiple ISO3 codes" in str(e) + + def test_function_caching(self) -> None: + """Test that function results are cached (via @lru_cache decorator).""" + # Call function twice with same parameters + result1 = get_iso3_from_currency_code("USD") + result2 = get_iso3_from_currency_code("USD") + + # Results should be identical (cached) + assert result1 == result2 + assert result1 == "USA" + + def test_return_type_is_string(self) -> None: + """Test that function always returns a string.""" + result = get_iso3_from_currency_code("USD") + assert isinstance(result, str) + assert len(result) == 3 # ISO3 codes are always 3 characters + assert result.isupper() # ISO3 codes are uppercase + + def test_all_special_cases_work(self) -> None: + """Test that all predefined special cases work correctly.""" + for ( + currency_code, + expected_iso3, + ) in SPECIAL_CASES_CURRENCY_CODE_TO_ISO3.items(): + result = get_iso3_from_currency_code(currency_code) + assert result == expected_iso3, f"Failed for {currency_code}" + + def test_duplicate_currency_handling_error(self) -> None: + """Test that currencies with multiple ISO3 codes raise appropriate error when not in special cases.""" + # This test verifies the error handling for currencies that appear in multiple countries + # but are not handled in special cases. The exact currencies that trigger this depend + # on the current UN data, so we test the error mechanism rather than specific currencies. + + # Use empty special cases to potentially trigger the duplicate handling error + try: + special_cases = SPECIAL_CASES_CURRENCY_CODE_TO_ISO3.delete( + "USD" + ) # Remove USD to force error + # Try a currency that might have multiple mappings + get_iso3_from_currency_code("XCD", special_cases=special_cases) + except ValueError as e: + # If it's a duplicate currency error, check the message format + assert "Some currency codes are used by multiple ISO3 codes" in str(e) diff --git a/uv.lock b/uv.lock index 91c5b29f..edc2b8ae 100644 --- a/uv.lock +++ b/uv.lock @@ -2,6 +2,15 @@ version = 1 revision = 2 requires-python = ">=3.12" +[[package]] +name = "annotated-types" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload_time = "2024-05-20T21:33:25.928Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload_time = "2024-05-20T21:33:24.1Z" }, +] + [[package]] name = "appnope" version = "0.1.4" @@ -52,6 +61,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/41/ff/392bff89415399a979be4a65357a41d92729ae8580a66073d8ec8d810f98/backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60", size = 380265, upload_time = "2025-06-22T19:34:12.405Z" }, ] +[[package]] +name = "beautifulsoup4" +version = "4.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload_time = "2025-04-15T17:05:13.836Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload_time = "2025-04-15T17:05:12.221Z" }, +] + [[package]] name = "binaryornot" version = "0.4.4" @@ -306,6 +328,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload_time = "2024-10-09T18:35:44.272Z" }, ] +[[package]] +name = "et-xmlfile" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234, upload_time = "2024-10-25T17:25:40.039Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059, upload_time = "2024-10-25T17:25:39.051Z" }, +] + [[package]] name = "execnet" version = "2.1.1" @@ -333,6 +364,71 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload_time = "2025-03-14T07:11:39.145Z" }, ] +[[package]] +name = "flexcache" +version = "0.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/b0/8a21e330561c65653d010ef112bf38f60890051d244ede197ddaa08e50c1/flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656", size = 15816, upload_time = "2024-03-09T03:21:07.555Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/cd/c883e1a7c447479d6e13985565080e3fea88ab5a107c21684c813dba1875/flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32", size = 13263, upload_time = "2024-03-09T03:21:05.635Z" }, +] + +[[package]] +name = "flexparser" +version = "0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/82/99/b4de7e39e8eaf8207ba1a8fa2241dd98b2ba72ae6e16960d8351736d8702/flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2", size = 31799, upload_time = "2024-11-07T02:00:56.249Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/5e/3be305568fe5f34448807976dc82fc151d76c3e0e03958f34770286278c1/flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846", size = 27625, upload_time = "2024-11-07T02:00:54.523Z" }, +] + +[[package]] +name = "frictionless" +version = "5.18.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "chardet" }, + { name = "humanize" }, + { name = "isodate" }, + { name = "jinja2" }, + { name = "jsonschema" }, + { name = "marko" }, + { name = "petl" }, + { name = "pydantic" }, + { name = "python-dateutil" }, + { name = "python-slugify" }, + { name = "pyyaml" }, + { name = "requests" }, + { name = "rfc3986" }, + { name = "simpleeval" }, + { name = "tabulate" }, + { name = "typer" }, + { name = "typing-extensions" }, + { name = "validators" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/11/d0/c94675a1c1b8c12fd68489e2b4a924f80a2b122199cd986c58a5136197d2/frictionless-5.18.1.tar.gz", hash = "sha256:daeaf55f896eeb52b43e62600466af9528fe0aeeebd28b1b917e13322f370a8b", size = 74372478, upload_time = "2025-03-25T21:32:50.081Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/7a/dac76d31584bb4f874ae860490c9465f5b59bd8c110f68fbbb07aba48845/frictionless-5.18.1-py3-none-any.whl", hash = "sha256:3f4c87469a89bdb88e9cc318088553a26f3d14839098f95c183ea01fc89628dd", size = 531615, upload_time = "2025-03-25T21:32:45.534Z" }, +] + +[[package]] +name = "frozendict" +version = "2.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/59/19eb300ba28e7547538bdf603f1c6c34793240a90e1a7b61b65d8517e35e/frozendict-2.4.6.tar.gz", hash = "sha256:df7cd16470fbd26fc4969a208efadc46319334eb97def1ddf48919b351192b8e", size = 316416, upload_time = "2024-10-13T12:15:32.449Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/13/d9839089b900fa7b479cce495d62110cddc4bd5630a04d8469916c0e79c5/frozendict-2.4.6-py311-none-any.whl", hash = "sha256:d065db6a44db2e2375c23eac816f1a022feb2fa98cbb50df44a9e83700accbea", size = 16148, upload_time = "2024-10-13T12:15:26.839Z" }, + { url = "https://files.pythonhosted.org/packages/ba/d0/d482c39cee2ab2978a892558cf130681d4574ea208e162da8958b31e9250/frozendict-2.4.6-py312-none-any.whl", hash = "sha256:49344abe90fb75f0f9fdefe6d4ef6d4894e640fadab71f11009d52ad97f370b9", size = 16146, upload_time = "2024-10-13T12:15:28.16Z" }, + { url = "https://files.pythonhosted.org/packages/a5/8e/b6bf6a0de482d7d7d7a2aaac8fdc4a4d0bb24a809f5ddd422aa7060eb3d2/frozendict-2.4.6-py313-none-any.whl", hash = "sha256:7134a2bb95d4a16556bb5f2b9736dceb6ea848fa5b6f3f6c2d6dba93b44b4757", size = 16146, upload_time = "2024-10-13T12:15:29.495Z" }, +] + [[package]] name = "ghp-import" version = "2.1.0" @@ -381,6 +477,45 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/58/c6/5c20af38c2a57c15d87f7f38bee77d63c1d2a3689f74fefaf35915dd12b2/griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75", size = 129303, upload_time = "2025-04-23T11:29:07.145Z" }, ] +[[package]] +name = "hdx-python-country" +version = "3.9.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "hdx-python-utilities" }, + { name = "libhxl" }, + { name = "tenacity" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/88/96/ac55b204699cd216a22a943f64aafac32bba818f624a5d44879d60368fad/hdx_python_country-3.9.6.tar.gz", hash = "sha256:7791f4b9c5ae3e62e82795c266a3ca6ee23c7bab706c91533844edf2ebd9bb18", size = 529232, upload_time = "2025-07-09T22:56:32.162Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/90/646b56ec12df459799510d6d0869ada210ad9f765ad104e50dae4867eb50/hdx_python_country-3.9.6-py3-none-any.whl", hash = "sha256:4c1833bdf3cbd14dfff0146e0bdcae5763931d344fce5f1b42493dc8751e3d4a", size = 55554, upload_time = "2025-07-09T22:56:30.128Z" }, +] + +[[package]] +name = "hdx-python-utilities" +version = "3.8.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "frictionless" }, + { name = "ijson" }, + { name = "jsonlines" }, + { name = "loguru" }, + { name = "openpyxl" }, + { name = "pyphonetics" }, + { name = "python-dateutil" }, + { name = "ratelimit" }, + { name = "requests-file" }, + { name = "ruamel-yaml" }, + { name = "tableschema-to-template" }, + { name = "xlrd" }, + { name = "xlsx2csv" }, + { name = "xlwt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/de/b812b6b242f47db98ed043b7f3211c81443f0e59959377e97a93915331c0/hdx_python_utilities-3.8.7.tar.gz", hash = "sha256:41212cd5b682777d393ee991b546f1b4326665d981714a829e5483101fd15a60", size = 656009, upload_time = "2025-05-14T02:31:28.578Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/38/44f2a0b83e103bb3d47dbc66dfaa4aaa65c34c60fd26d5445fb2bbd3c09a/hdx_python_utilities-3.8.7-py3-none-any.whl", hash = "sha256:47e67810e81a481504b8653c429b31b8c237da594dc27604075c8e79077c8640", size = 60787, upload_time = "2025-05-14T02:31:26.794Z" }, +] + [[package]] name = "htmlmin2" version = "0.1.13" @@ -389,6 +524,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/be/31/a76f4bfa885f93b8167cb4c85cf32b54d1f64384d0b897d45bc6d19b7b45/htmlmin2-0.1.13-py3-none-any.whl", hash = "sha256:75609f2a42e64f7ce57dbff28a39890363bde9e7e5885db633317efbdf8c79a2", size = 34486, upload_time = "2023-03-14T21:28:30.388Z" }, ] +[[package]] +name = "humanize" +version = "4.12.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/22/d1/bbc4d251187a43f69844f7fd8941426549bbe4723e8ff0a7441796b0789f/humanize-4.12.3.tar.gz", hash = "sha256:8430be3a615106fdfceb0b2c1b41c4c98c6b0fc5cc59663a5539b111dd325fb0", size = 80514, upload_time = "2025-04-30T11:51:07.98Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/1e/62a2ec3104394a2975a2629eec89276ede9dbe717092f6966fcf963e1bf0/humanize-4.12.3-py3-none-any.whl", hash = "sha256:2cbf6370af06568fa6d2da77c86edb7886f3160ecd19ee1ffef07979efc597f6", size = 128487, upload_time = "2025-04-30T11:51:06.468Z" }, +] + [[package]] name = "identify" version = "2.6.12" @@ -407,6 +551,62 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload_time = "2024-09-15T18:07:37.964Z" }, ] +[[package]] +name = "ijson" +version = "3.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/4f/1cfeada63f5fce87536651268ddf5cca79b8b4bbb457aee4e45777964a0a/ijson-3.4.0.tar.gz", hash = "sha256:5f74dcbad9d592c428d3ca3957f7115a42689ee7ee941458860900236ae9bb13", size = 65782, upload_time = "2025-05-08T02:37:20.135Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ec/317ee5b2d13e50448833ead3aa906659a32b376191f6abc2a7c6112d2b27/ijson-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:956b148f88259a80a9027ffbe2d91705fae0c004fbfba3e5a24028fbe72311a9", size = 87212, upload_time = "2025-05-08T02:35:51.835Z" }, + { url = "https://files.pythonhosted.org/packages/f8/43/b06c96ced30cacecc5d518f89b0fd1c98c294a30ff88848b70ed7b7f72a1/ijson-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:06b89960f5c721106394c7fba5760b3f67c515b8eb7d80f612388f5eca2f4621", size = 59175, upload_time = "2025-05-08T02:35:52.988Z" }, + { url = "https://files.pythonhosted.org/packages/e9/df/b4aeafb7ecde463130840ee9be36130823ec94a00525049bf700883378b8/ijson-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a0bb591cf250dd7e9dfab69d634745a7f3272d31cfe879f9156e0a081fd97ee", size = 59011, upload_time = "2025-05-08T02:35:54.394Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7c/a80b8e361641609507f62022089626d4b8067f0826f51e1c09e4ba86eba8/ijson-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e92de999977f4c6b660ffcf2b8d59604ccd531edcbfde05b642baf283e0de8", size = 146094, upload_time = "2025-05-08T02:35:55.601Z" }, + { url = "https://files.pythonhosted.org/packages/01/44/fa416347b9a802e3646c6ff377fc3278bd7d6106e17beb339514b6a3184e/ijson-3.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e9602157a5b869d44b6896e64f502c712a312fcde044c2e586fccb85d3e316e", size = 137903, upload_time = "2025-05-08T02:35:56.814Z" }, + { url = "https://files.pythonhosted.org/packages/24/c6/41a9ad4d42df50ff6e70fdce79b034f09b914802737ebbdc141153d8d791/ijson-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e83660edb931a425b7ff662eb49db1f10d30ca6d4d350e5630edbed098bc01", size = 148339, upload_time = "2025-05-08T02:35:58.595Z" }, + { url = "https://files.pythonhosted.org/packages/5f/6f/7d01efda415b8502dce67e067ed9e8a124f53e763002c02207e542e1a2f1/ijson-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:49bf8eac1c7b7913073865a859c215488461f7591b4fa6a33c14b51cb73659d0", size = 149383, upload_time = "2025-05-08T02:36:00.197Z" }, + { url = "https://files.pythonhosted.org/packages/95/6c/0d67024b9ecb57916c5e5ab0350251c9fe2f86dc9c8ca2b605c194bdad6a/ijson-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:160b09273cb42019f1811469508b0a057d19f26434d44752bde6f281da6d3f32", size = 141580, upload_time = "2025-05-08T02:36:01.998Z" }, + { url = "https://files.pythonhosted.org/packages/06/43/e10edcc1c6a3b619294de835e7678bfb3a1b8a75955f3689fd66a1e9e7b4/ijson-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2019ff4e6f354aa00c76c8591bd450899111c61f2354ad55cc127e2ce2492c44", size = 150280, upload_time = "2025-05-08T02:36:03.926Z" }, + { url = "https://files.pythonhosted.org/packages/07/84/1cbeee8e8190a1ebe6926569a92cf1fa80ddb380c129beb6f86559e1bb24/ijson-3.4.0-cp312-cp312-win32.whl", hash = "sha256:931c007bf6bb8330705429989b2deed6838c22b63358a330bf362b6e458ba0bf", size = 51512, upload_time = "2025-05-08T02:36:05.595Z" }, + { url = "https://files.pythonhosted.org/packages/66/13/530802bc391c95be6fe9f96e9aa427d94067e7c0b7da7a9092344dc44c4b/ijson-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:71523f2b64cb856a820223e94d23e88369f193017ecc789bb4de198cc9d349eb", size = 54081, upload_time = "2025-05-08T02:36:07.099Z" }, + { url = "https://files.pythonhosted.org/packages/77/b3/b1d2eb2745e5204ec7a25365a6deb7868576214feb5e109bce368fb692c9/ijson-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e8d96f88d75196a61c9d9443de2b72c2d4a7ba9456ff117b57ae3bba23a54256", size = 87216, upload_time = "2025-05-08T02:36:08.414Z" }, + { url = "https://files.pythonhosted.org/packages/b1/cd/cd6d340087617f8cc9bedbb21d974542fe2f160ed0126b8288d3499a469b/ijson-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c45906ce2c1d3b62f15645476fc3a6ca279549127f01662a39ca5ed334a00cf9", size = 59170, upload_time = "2025-05-08T02:36:09.604Z" }, + { url = "https://files.pythonhosted.org/packages/3e/4d/32d3a9903b488d3306e3c8288f6ee4217d2eea82728261db03a1045eb5d1/ijson-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4ab4bc2119b35c4363ea49f29563612237cae9413d2fbe54b223be098b97bc9e", size = 59013, upload_time = "2025-05-08T02:36:10.696Z" }, + { url = "https://files.pythonhosted.org/packages/d5/c8/db15465ab4b0b477cee5964c8bfc94bf8c45af8e27a23e1ad78d1926e587/ijson-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97b0a9b5a15e61dfb1f14921ea4e0dba39f3a650df6d8f444ddbc2b19b479ff1", size = 146564, upload_time = "2025-05-08T02:36:11.916Z" }, + { url = "https://files.pythonhosted.org/packages/c4/d8/0755545bc122473a9a434ab90e0f378780e603d75495b1ca3872de757873/ijson-3.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3047bb994dabedf11de11076ed1147a307924b6e5e2df6784fb2599c4ad8c60", size = 137917, upload_time = "2025-05-08T02:36:13.532Z" }, + { url = "https://files.pythonhosted.org/packages/d0/c6/aeb89c8939ebe3f534af26c8c88000c5e870dbb6ae33644c21a4531f87d2/ijson-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68c83161b052e9f5dc8191acbc862bb1e63f8a35344cb5cd0db1afd3afd487a6", size = 148897, upload_time = "2025-05-08T02:36:14.813Z" }, + { url = "https://files.pythonhosted.org/packages/be/0e/7ef6e9b372106f2682a4a32b3c65bf86bb471a1670e4dac242faee4a7d3f/ijson-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1eebd9b6c20eb1dffde0ae1f0fbb4aeacec2eb7b89adb5c7c0449fc9fd742760", size = 149711, upload_time = "2025-05-08T02:36:16.476Z" }, + { url = "https://files.pythonhosted.org/packages/d1/5d/9841c3ed75bcdabf19b3202de5f862a9c9c86ce5c7c9d95fa32347fdbf5f/ijson-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:13fb6d5c35192c541421f3ee81239d91fc15a8d8f26c869250f941f4b346a86c", size = 141691, upload_time = "2025-05-08T02:36:18.044Z" }, + { url = "https://files.pythonhosted.org/packages/d5/d2/ce74e17218dba292e9be10a44ed0c75439f7958cdd263adb0b5b92d012d5/ijson-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:28b7196ff7b37c4897c547a28fa4876919696739fc91c1f347651c9736877c69", size = 150738, upload_time = "2025-05-08T02:36:19.483Z" }, + { url = "https://files.pythonhosted.org/packages/4e/43/dcc480f94453b1075c9911d4755b823f3ace275761bb37b40139f22109ca/ijson-3.4.0-cp313-cp313-win32.whl", hash = "sha256:3c2691d2da42629522140f77b99587d6f5010440d58d36616f33bc7bdc830cc3", size = 51512, upload_time = "2025-05-08T02:36:20.99Z" }, + { url = "https://files.pythonhosted.org/packages/35/dd/d8c5f15efd85ba51e6e11451ebe23d779361a9ec0d192064c2a8c3cdfcb8/ijson-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:c4554718c275a044c47eb3874f78f2c939f300215d9031e785a6711cc51b83fc", size = 54074, upload_time = "2025-05-08T02:36:22.075Z" }, + { url = "https://files.pythonhosted.org/packages/79/73/24ad8cd106203419c4d22bed627e02e281d66b83e91bc206a371893d0486/ijson-3.4.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:915a65e3f3c0eee2ea937bc62aaedb6c14cc1e8f0bb9f3f4fb5a9e2bbfa4b480", size = 91694, upload_time = "2025-05-08T02:36:23.289Z" }, + { url = "https://files.pythonhosted.org/packages/17/2d/f7f680984bcb7324a46a4c2df3bd73cf70faef0acfeb85a3f811abdfd590/ijson-3.4.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:afbe9748707684b6c5adc295c4fdcf27765b300aec4d484e14a13dca4e5c0afa", size = 61390, upload_time = "2025-05-08T02:36:24.42Z" }, + { url = "https://files.pythonhosted.org/packages/09/a1/f3ca7bab86f95bdb82494739e71d271410dfefce4590785d511669127145/ijson-3.4.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d823f8f321b4d8d5fa020d0a84f089fec5d52b7c0762430476d9f8bf95bbc1a9", size = 61140, upload_time = "2025-05-08T02:36:26.708Z" }, + { url = "https://files.pythonhosted.org/packages/51/79/dd340df3d4fc7771c95df29997956b92ed0570fe7b616d1792fea9ad93f2/ijson-3.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0a2c54f3becf76881188beefd98b484b1d3bd005769a740d5b433b089fa23", size = 214739, upload_time = "2025-05-08T02:36:27.973Z" }, + { url = "https://files.pythonhosted.org/packages/59/f0/85380b7f51d1f5fb7065d76a7b623e02feca920cc678d329b2eccc0011e0/ijson-3.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ced19a83ab09afa16257a0b15bc1aa888dbc555cb754be09d375c7f8d41051f2", size = 198338, upload_time = "2025-05-08T02:36:29.496Z" }, + { url = "https://files.pythonhosted.org/packages/a5/cd/313264cf2ec42e0f01d198c49deb7b6fadeb793b3685e20e738eb6b3fa13/ijson-3.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8100f9885eff1f38d35cef80ef759a1bbf5fc946349afa681bd7d0e681b7f1a0", size = 207515, upload_time = "2025-05-08T02:36:30.981Z" }, + { url = "https://files.pythonhosted.org/packages/12/94/bf14457aa87ea32641f2db577c9188ef4e4ae373478afef422b31fc7f309/ijson-3.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d7bcc3f7f21b0f703031ecd15209b1284ea51b2a329d66074b5261de3916c1eb", size = 210081, upload_time = "2025-05-08T02:36:32.403Z" }, + { url = "https://files.pythonhosted.org/packages/7d/b4/eaee39e290e40e52d665db9bd1492cfdce86bd1e47948e0440db209c6023/ijson-3.4.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2dcb190227b09dd171bdcbfe4720fddd574933c66314818dfb3960c8a6246a77", size = 199253, upload_time = "2025-05-08T02:36:33.861Z" }, + { url = "https://files.pythonhosted.org/packages/c5/9c/e09c7b9ac720a703ab115b221b819f149ed54c974edfff623c1e925e57da/ijson-3.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:eda4cfb1d49c6073a901735aaa62e39cb7ab47f3ad7bb184862562f776f1fa8a", size = 203816, upload_time = "2025-05-08T02:36:35.348Z" }, + { url = "https://files.pythonhosted.org/packages/7c/14/acd304f412e32d16a2c12182b9d78206bb0ae35354d35664f45db05c1b3b/ijson-3.4.0-cp313-cp313t-win32.whl", hash = "sha256:0772638efa1f3b72b51736833404f1cbd2f5beeb9c1a3d392e7d385b9160cba7", size = 53760, upload_time = "2025-05-08T02:36:36.608Z" }, + { url = "https://files.pythonhosted.org/packages/2f/24/93dd0a467191590a5ed1fc2b35842bca9d09900d001e00b0b497c0208ef6/ijson-3.4.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3d8a0d67f36e4fb97c61a724456ef0791504b16ce6f74917a31c2e92309bbeb9", size = 56948, upload_time = "2025-05-08T02:36:37.849Z" }, +] + +[[package]] +name = "imf-reader" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "chardet" }, + { name = "pandas" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/af/45/24521d229aec5c058d998510794567788bc7b1b764dfaa02fb8e0aeda4b7/imf_reader-1.3.0.tar.gz", hash = "sha256:3f3130dd793a112fdd5913a7c7b733847a5a07fd70dee14d57624ae4e021a141", size = 12990, upload_time = "2025-02-06T09:16:10.723Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/5b/3a063116950f2aa2b450120e78162bb5b87098dde3b75ae90210c6f2c099/imf_reader-1.3.0-py3-none-any.whl", hash = "sha256:3515c6644dfef44d5fda89f5bb3786b4f83da20f49184911f0df2386782106f1", size = 16520, upload_time = "2025-02-06T09:16:09.042Z" }, +] + [[package]] name = "iniconfig" version = "2.1.0" @@ -473,6 +673,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload_time = "2025-01-17T11:24:33.271Z" }, ] +[[package]] +name = "isodate" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload_time = "2024-10-08T23:04:11.5Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload_time = "2024-10-08T23:04:09.501Z" }, +] + [[package]] name = "jedi" version = "0.19.2" @@ -497,12 +706,72 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload_time = "2025-03-05T20:05:00.369Z" }, ] +[[package]] +name = "joblib" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475, upload_time = "2025-05-23T12:04:37.097Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746, upload_time = "2025-05-23T12:04:35.124Z" }, +] + [[package]] name = "jsmin" version = "3.0.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/5e/73/e01e4c5e11ad0494f4407a3f623ad4d87714909f50b17a06ed121034ff6e/jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc", size = 13925, upload_time = "2022-01-16T20:35:59.13Z" } +[[package]] +name = "jsonlines" +version = "4.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/35/87/bcda8e46c88d0e34cad2f09ee2d0c7f5957bccdb9791b0b934ec84d84be4/jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74", size = 11359, upload_time = "2023-09-01T12:34:44.187Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/62/d9ba6323b9202dd2fe166beab8a86d29465c41a0288cbe229fac60c1ab8d/jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55", size = 8701, upload_time = "2023-09-01T12:34:42.563Z" }, +] + +[[package]] +name = "jsonpath-ng" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ply" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838, upload_time = "2024-10-11T15:41:42.404Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105, upload_time = "2024-11-20T17:58:30.418Z" }, +] + +[[package]] +name = "jsonschema" +version = "4.24.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "jsonschema-specifications" }, + { name = "referencing" }, + { name = "rpds-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480, upload_time = "2025-05-26T18:48:10.459Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709, upload_time = "2025-05-26T18:48:08.417Z" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload_time = "2025-04-23T12:34:07.418Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload_time = "2025-04-23T12:34:05.422Z" }, +] + [[package]] name = "jupyter-client" version = "8.6.3" @@ -533,6 +802,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload_time = "2025-05-27T07:38:15.137Z" }, ] +[[package]] +name = "libhxl" +version = "5.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonpath-ng" }, + { name = "ply" }, + { name = "python-dateutil" }, + { name = "python-io-wrapper" }, + { name = "requests" }, + { name = "structlog" }, + { name = "unidecode" }, + { name = "urllib3" }, + { name = "wheel" }, + { name = "xlrd3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/ad/c1dafb7c59e685692a2eeafce83245b7c5f46e05881fdb77a0cbb7c19c74/libhxl-5.2.2.tar.gz", hash = "sha256:3a74d9f23561bfcefd20e5229c574bc68dfc114fdb6ba1ba684d9e9d7ea52483", size = 127736, upload_time = "2024-10-25T09:19:11.202Z" } + [[package]] name = "license-expression" version = "30.4.4" @@ -545,6 +832,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/af/40/791891d4c0c4dab4c5e187c17261cedc26285fd41541577f900470a45a4d/license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4", size = 120615, upload_time = "2025-07-22T11:13:31.217Z" }, ] +[[package]] +name = "loguru" +version = "0.7.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "win32-setctime", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559, upload_time = "2024-12-06T11:20:56.608Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595, upload_time = "2024-12-06T11:20:54.538Z" }, +] + [[package]] name = "markdown" version = "3.8.2" @@ -554,6 +854,27 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/96/2b/34cc11786bc00d0f04d0f5fdc3a2b1ae0b6239eef72d3d345805f9ad92a1/markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24", size = 106827, upload_time = "2025-06-19T17:12:42.994Z" }, ] +[[package]] +name = "markdown-it-py" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mdurl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload_time = "2023-06-03T06:41:14.443Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload_time = "2023-06-03T06:41:11.019Z" }, +] + +[[package]] +name = "marko" +version = "2.1.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/dc/c8cadbd83de1b38d95a48568b445a5553005ebdd32e00a333ca940113db4/marko-2.1.4.tar.gz", hash = "sha256:dd7d66f3706732bf8f994790e674649a4fd0a6c67f16b80246f30de8e16a1eac", size = 142795, upload_time = "2025-06-13T03:25:50.857Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c3/66/49e3691d14898fb6e34ccb337c7677dfb7e18269ed170f12e4b85315eae6/marko-2.1.4-py3-none-any.whl", hash = "sha256:81c2b9f570ca485bc356678d9ba1a1b3eb78b4a315d01f3ded25442fdc796990", size = 42186, upload_time = "2025-06-13T03:25:49.858Z" }, +] + [[package]] name = "markupsafe" version = "3.0.2" @@ -604,6 +925,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload_time = "2024-04-15T13:44:43.265Z" }, ] +[[package]] +name = "mdurl" +version = "0.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload_time = "2022-08-14T12:40:10.846Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload_time = "2022-08-14T12:40:09.779Z" }, +] + [[package]] name = "mergedeep" version = "1.3.4" @@ -875,6 +1205,34 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/d4/ca/af82bf0fad4c3e573c6930ed743b5308492ff19917c7caaf2f9b6f9e2e98/numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244", size = 10260376, upload_time = "2025-06-21T12:24:56.884Z" }, ] +[[package]] +name = "oda-reader" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "joblib" }, + { name = "openpyxl" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1a/d1/5c0bb2a714ebea7df131b8e87010eab39d0df75878f6785f2a214ff66bb2/oda_reader-1.2.2.tar.gz", hash = "sha256:55be081e1744e75184eca3d09e794fad71958201d08b48fb497aac97a95f3685", size = 35630, upload_time = "2025-06-16T16:15:05.49Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d8/ec/59338ec9108848dc53f50e7381b9817595bf98f414f4a732100a06828a3b/oda_reader-1.2.2-py3-none-any.whl", hash = "sha256:7f7b854ab1e9bc2cf64b6c63bd56a2ac64cb90ec054518fd01b741fd518cf007", size = 45314, upload_time = "2025-06-16T16:15:04.328Z" }, +] + +[[package]] +name = "openpyxl" +version = "3.1.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "et-xmlfile" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload_time = "2024-06-28T14:03:44.161Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload_time = "2024-06-28T14:03:41.161Z" }, +] + [[package]] name = "packaging" version = "25.0" @@ -945,6 +1303,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload_time = "2023-12-10T22:30:43.14Z" }, ] +[[package]] +name = "petl" +version = "1.7.16" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/99/28/ce7321fbd3b981fd9c212adf7455e0e4e42babebd83b92e24f8265d13dd3/petl-1.7.16.tar.gz", hash = "sha256:9c2fea64d859da45e120fd86d471e5387396cc45d5d4986efa79679f18eb8752", size = 420780, upload_time = "2025-04-04T23:54:50.921Z" } + [[package]] name = "pexpect" version = "4.9.0" @@ -957,6 +1321,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload_time = "2023-11-25T06:56:14.81Z" }, ] +[[package]] +name = "pint" +version = "0.24.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "flexcache" }, + { name = "flexparser" }, + { name = "platformdirs" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/20/bb/52b15ddf7b7706ed591134a895dbf6e41c8348171fb635e655e0a4bbb0ea/pint-0.24.4.tar.gz", hash = "sha256:35275439b574837a6cd3020a5a4a73645eb125ce4152a73a2f126bf164b91b80", size = 342225, upload_time = "2024-11-07T16:29:46.061Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/16/bd2f5904557265882108dc2e04f18abc05ab0c2b7082ae9430091daf1d5c/Pint-0.24.4-py3-none-any.whl", hash = "sha256:aa54926c8772159fcf65f82cc0d34de6768c151b32ad1deb0331291c38fe7659", size = 302029, upload_time = "2024-11-07T16:29:43.976Z" }, +] + [[package]] name = "platformdirs" version = "4.3.8" @@ -975,6 +1354,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload_time = "2025-05-15T12:30:06.134Z" }, ] +[[package]] +name = "ply" +version = "3.11" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130, upload_time = "2018-02-15T19:01:31.097Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567, upload_time = "2018-02-15T19:01:27.172Z" }, +] + [[package]] name = "pre-commit" version = "4.2.0" @@ -1036,6 +1424,41 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload_time = "2024-07-21T12:58:20.04Z" }, ] +[[package]] +name = "pyarrow" +version = "20.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187, upload_time = "2025-04-27T12:34:23.264Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067, upload_time = "2025-04-27T12:29:44.384Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128, upload_time = "2025-04-27T12:29:52.038Z" }, + { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890, upload_time = "2025-04-27T12:29:59.452Z" }, + { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775, upload_time = "2025-04-27T12:30:06.875Z" }, + { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231, upload_time = "2025-04-27T12:30:13.954Z" }, + { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639, upload_time = "2025-04-27T12:30:21.949Z" }, + { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549, upload_time = "2025-04-27T12:30:29.551Z" }, + { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216, upload_time = "2025-04-27T12:30:36.977Z" }, + { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496, upload_time = "2025-04-27T12:30:42.809Z" }, + { url = "https://files.pythonhosted.org/packages/9b/aa/daa413b81446d20d4dad2944110dcf4cf4f4179ef7f685dd5a6d7570dc8e/pyarrow-20.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a15532e77b94c61efadde86d10957950392999503b3616b2ffcef7621a002893", size = 30798501, upload_time = "2025-04-27T12:30:48.351Z" }, + { url = "https://files.pythonhosted.org/packages/ff/75/2303d1caa410925de902d32ac215dc80a7ce7dd8dfe95358c165f2adf107/pyarrow-20.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:dd43f58037443af715f34f1322c782ec463a3c8a94a85fdb2d987ceb5658e061", size = 32277895, upload_time = "2025-04-27T12:30:55.238Z" }, + { url = "https://files.pythonhosted.org/packages/92/41/fe18c7c0b38b20811b73d1bdd54b1fccba0dab0e51d2048878042d84afa8/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa0d288143a8585806e3cc7c39566407aab646fb9ece164609dac1cfff45f6ae", size = 41327322, upload_time = "2025-04-27T12:31:05.587Z" }, + { url = "https://files.pythonhosted.org/packages/da/ab/7dbf3d11db67c72dbf36ae63dcbc9f30b866c153b3a22ef728523943eee6/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6953f0114f8d6f3d905d98e987d0924dabce59c3cda380bdfaa25a6201563b4", size = 42411441, upload_time = "2025-04-27T12:31:15.675Z" }, + { url = "https://files.pythonhosted.org/packages/90/c3/0c7da7b6dac863af75b64e2f827e4742161128c350bfe7955b426484e226/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:991f85b48a8a5e839b2128590ce07611fae48a904cae6cab1f089c5955b57eb5", size = 40677027, upload_time = "2025-04-27T12:31:24.631Z" }, + { url = "https://files.pythonhosted.org/packages/be/27/43a47fa0ff9053ab5203bb3faeec435d43c0d8bfa40179bfd076cdbd4e1c/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:97c8dc984ed09cb07d618d57d8d4b67a5100a30c3818c2fb0b04599f0da2de7b", size = 42281473, upload_time = "2025-04-27T12:31:31.311Z" }, + { url = "https://files.pythonhosted.org/packages/bc/0b/d56c63b078876da81bbb9ba695a596eabee9b085555ed12bf6eb3b7cab0e/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9b71daf534f4745818f96c214dbc1e6124d7daf059167330b610fc69b6f3d3e3", size = 42893897, upload_time = "2025-04-27T12:31:39.406Z" }, + { url = "https://files.pythonhosted.org/packages/92/ac/7d4bd020ba9145f354012838692d48300c1b8fe5634bfda886abcada67ed/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e8b88758f9303fa5a83d6c90e176714b2fd3852e776fc2d7e42a22dd6c2fb368", size = 44543847, upload_time = "2025-04-27T12:31:45.997Z" }, + { url = "https://files.pythonhosted.org/packages/9d/07/290f4abf9ca702c5df7b47739c1b2c83588641ddfa2cc75e34a301d42e55/pyarrow-20.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:30b3051b7975801c1e1d387e17c588d8ab05ced9b1e14eec57915f79869b5031", size = 25653219, upload_time = "2025-04-27T12:31:54.11Z" }, + { url = "https://files.pythonhosted.org/packages/95/df/720bb17704b10bd69dde086e1400b8eefb8f58df3f8ac9cff6c425bf57f1/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:ca151afa4f9b7bc45bcc791eb9a89e90a9eb2772767d0b1e5389609c7d03db63", size = 30853957, upload_time = "2025-04-27T12:31:59.215Z" }, + { url = "https://files.pythonhosted.org/packages/d9/72/0d5f875efc31baef742ba55a00a25213a19ea64d7176e0fe001c5d8b6e9a/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:4680f01ecd86e0dd63e39eb5cd59ef9ff24a9d166db328679e36c108dc993d4c", size = 32247972, upload_time = "2025-04-27T12:32:05.369Z" }, + { url = "https://files.pythonhosted.org/packages/d5/bc/e48b4fa544d2eea72f7844180eb77f83f2030b84c8dad860f199f94307ed/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f4c8534e2ff059765647aa69b75d6543f9fef59e2cd4c6d18015192565d2b70", size = 41256434, upload_time = "2025-04-27T12:32:11.814Z" }, + { url = "https://files.pythonhosted.org/packages/c3/01/974043a29874aa2cf4f87fb07fd108828fc7362300265a2a64a94965e35b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e1f8a47f4b4ae4c69c4d702cfbdfe4d41e18e5c7ef6f1bb1c50918c1e81c57b", size = 42353648, upload_time = "2025-04-27T12:32:20.766Z" }, + { url = "https://files.pythonhosted.org/packages/68/95/cc0d3634cde9ca69b0e51cbe830d8915ea32dda2157560dda27ff3b3337b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:a1f60dc14658efaa927f8214734f6a01a806d7690be4b3232ba526836d216122", size = 40619853, upload_time = "2025-04-27T12:32:28.1Z" }, + { url = "https://files.pythonhosted.org/packages/29/c2/3ad40e07e96a3e74e7ed7cc8285aadfa84eb848a798c98ec0ad009eb6bcc/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:204a846dca751428991346976b914d6d2a82ae5b8316a6ed99789ebf976551e6", size = 42241743, upload_time = "2025-04-27T12:32:35.792Z" }, + { url = "https://files.pythonhosted.org/packages/eb/cb/65fa110b483339add6a9bc7b6373614166b14e20375d4daa73483755f830/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f3b117b922af5e4c6b9a9115825726cac7d8b1421c37c2b5e24fbacc8930612c", size = 42839441, upload_time = "2025-04-27T12:32:46.64Z" }, + { url = "https://files.pythonhosted.org/packages/98/7b/f30b1954589243207d7a0fbc9997401044bf9a033eec78f6cb50da3f304a/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e724a3fd23ae5b9c010e7be857f4405ed5e679db5c93e66204db1a69f733936a", size = 44503279, upload_time = "2025-04-27T12:32:56.503Z" }, + { url = "https://files.pythonhosted.org/packages/37/40/ad395740cd641869a13bcf60851296c89624662575621968dcfafabaa7f6/pyarrow-20.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:82f1ee5133bd8f49d31be1299dc07f585136679666b502540db854968576faf9", size = 25944982, upload_time = "2025-04-27T12:33:04.72Z" }, +] + [[package]] name = "pycparser" version = "2.22" @@ -1045,6 +1468,81 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload_time = "2024-03-30T13:22:20.476Z" }, ] +[[package]] +name = "pydantic" +version = "2.11.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, + { name = "typing-inspection" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload_time = "2025-06-14T08:33:17.137Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload_time = "2025-06-14T08:33:14.905Z" }, +] + +[[package]] +name = "pydantic-core" +version = "2.33.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload_time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload_time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload_time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload_time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload_time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload_time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload_time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload_time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload_time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload_time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload_time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload_time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload_time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload_time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload_time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload_time = "2025-04-23T18:31:53.175Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload_time = "2025-04-23T18:31:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload_time = "2025-04-23T18:31:57.393Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload_time = "2025-04-23T18:31:59.065Z" }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload_time = "2025-04-23T18:32:00.78Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload_time = "2025-04-23T18:32:02.418Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload_time = "2025-04-23T18:32:04.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload_time = "2025-04-23T18:32:06.129Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload_time = "2025-04-23T18:32:08.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload_time = "2025-04-23T18:32:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload_time = "2025-04-23T18:32:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload_time = "2025-04-23T18:32:14.034Z" }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload_time = "2025-04-23T18:32:15.783Z" }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload_time = "2025-04-23T18:32:18.473Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload_time = "2025-04-23T18:32:20.188Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload_time = "2025-04-23T18:32:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload_time = "2025-04-23T18:32:25.088Z" }, +] + +[[package]] +name = "pydeflate" +version = "2.1.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "hdx-python-country" }, + { name = "imf-reader" }, + { name = "oda-reader" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "requests" }, + { name = "wbgapi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5e/72/3e56d8166ca4b366a4e37c85711a706bba66768f70ba690bdb279f728d8d/pydeflate-2.1.3.tar.gz", hash = "sha256:48a2b74ad900dd8c50dfb1e4cdfcea8ca11cbd2d3a713bf9208f2028fea4cf4f", size = 26586, upload_time = "2025-06-03T09:38:12.25Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/31/31/e703ab5bc311c58e4dc00759d7a48a850877b8bbcd64c9778e2315e06bd5/pydeflate-2.1.3-py3-none-any.whl", hash = "sha256:09ebdde04eb2fea1c4b6712889cb2a9d4c2dd22ce0204aaeae64f4335667354f", size = 32540, upload_time = "2025-06-03T09:38:10.858Z" }, +] + [[package]] name = "pygments" version = "2.19.2" @@ -1067,6 +1565,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/98/d4/10bb14004d3c792811e05e21b5e5dcae805aacb739bd12a0540967b99592/pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2", size = 266143, upload_time = "2025-06-21T17:56:35.356Z" }, ] +[[package]] +name = "pyphonetics" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "unidecode" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/7c/7c45a9e9bf6ddb57b67e66cf4e8076a7baf3a790a3411daac1a7a2df0c5b/pyphonetics-0.5.3.tar.gz", hash = "sha256:2d3c2e359fde91a3c57914f0b5468bba7a5daf38e7927fd999992ea68990fbe4", size = 10314, upload_time = "2020-02-25T12:08:31.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/dd/a7d0a860efd3d4335d538b4361b8e9af8311f2aba2e8c7e4c7a47d623b6e/pyphonetics-0.5.3-py2.py3-none-any.whl", hash = "sha256:e6b29671d0d624dda1cac59c0c5a8a7216d8db504bae4941bfc482e04a0621d1", size = 10729, upload_time = "2020-02-25T12:08:25.368Z" }, +] + [[package]] name = "pytest" version = "8.4.1" @@ -1134,6 +1644,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ba/15/e8096189b18dda72e4923622abc10b021ecff723b397e22eff29fb86637b/python_debian-1.0.1-py3-none-any.whl", hash = "sha256:8f137c230c1d9279c2ac892b35915068b2aca090c9fd3da5671ff87af32af12c", size = 137453, upload_time = "2025-03-11T12:27:25.014Z" }, ] +[[package]] +name = "python-io-wrapper" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/74/8dc5f7d0b7cc1a0ca9e5c320abf11adee2094998c93ae8c9c80d9a8323ff/python-io-wrapper-0.3.1.tar.gz", hash = "sha256:e3391787ff0d9870e739294c6392437915502153e695a017450aa46b6d091762", size = 3271, upload_time = "2022-11-14T15:00:10.932Z" } + +[[package]] +name = "python-slugify" +version = "8.0.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "text-unidecode" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921, upload_time = "2024-02-08T18:32:45.488Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051, upload_time = "2024-02-08T18:32:43.911Z" }, +] + [[package]] name = "pytz" version = "2025.2" @@ -1224,6 +1752,26 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/eb/bc/1709dc55f0970cf4cb8259e435e6773f9946f41a045c2cb90e870b7072da/pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f", size = 639933, upload_time = "2025-06-13T14:08:00.777Z" }, ] +[[package]] +name = "ratelimit" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/38/ff60c8fc9e002d50d48822cc5095deb8ebbc5f91a6b8fdd9731c87a147c9/ratelimit-2.2.1.tar.gz", hash = "sha256:af8a9b64b821529aca09ebaf6d8d279100d766f19e90b5059ac6a718ca6dee42", size = 5251, upload_time = "2018-12-17T18:55:49.675Z" } + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload_time = "2025-01-25T08:48:16.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload_time = "2025-01-25T08:48:14.241Z" }, +] + [[package]] name = "requests" version = "2.32.4" @@ -1239,6 +1787,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload_time = "2025-06-09T16:43:05.728Z" }, ] +[[package]] +name = "requests-file" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/97/bf44e6c6bd8ddbb99943baf7ba8b1a8485bcd2fe0e55e5708d7fee4ff1ae/requests_file-2.1.0.tar.gz", hash = "sha256:0f549a3f3b0699415ac04d167e9cb39bccfb730cb832b4d20be3d9867356e658", size = 6891, upload_time = "2024-05-21T16:28:00.24Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/25/dd878a121fcfdf38f52850f11c512e13ec87c2ea72385933818e5b6c15ce/requests_file-2.1.0-py2.py3-none-any.whl", hash = "sha256:cf270de5a4c5874e84599fc5778303d496c10ae5e870bfa378818f35d21bda5c", size = 4244, upload_time = "2024-05-21T16:27:57.733Z" }, +] + [[package]] name = "reuse" version = "5.0.2" @@ -1258,6 +1818,142 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0a/2f/73de654df9e7e5f67d742c1d949b5c0c7c1203e84b2272d9e34a91faaf5c/reuse-5.0.2-cp313-cp313-manylinux_2_40_x86_64.whl", hash = "sha256:7a680f00324e87a72061677a892d8cbabfddf7adcf7a5376aeeed2d78995bbbb", size = 184309, upload_time = "2024-11-14T09:33:15.047Z" }, ] +[[package]] +name = "rfc3986" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026, upload_time = "2022-01-10T00:52:30.832Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326, upload_time = "2022-01-10T00:52:29.594Z" }, +] + +[[package]] +name = "rich" +version = "14.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078, upload_time = "2025-03-30T14:15:14.23Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229, upload_time = "2025-03-30T14:15:12.283Z" }, +] + +[[package]] +name = "rpds-py" +version = "0.26.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/aa/4456d84bbb54adc6a916fb10c9b374f78ac840337644e4a5eda229c81275/rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0", size = 27385, upload_time = "2025-07-01T15:57:13.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/86/90eb87c6f87085868bd077c7a9938006eb1ce19ed4d06944a90d3560fce2/rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d", size = 363933, upload_time = "2025-07-01T15:54:15.734Z" }, + { url = "https://files.pythonhosted.org/packages/63/78/4469f24d34636242c924626082b9586f064ada0b5dbb1e9d096ee7a8e0c6/rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136", size = 350447, upload_time = "2025-07-01T15:54:16.922Z" }, + { url = "https://files.pythonhosted.org/packages/ad/91/c448ed45efdfdade82348d5e7995e15612754826ea640afc20915119734f/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582", size = 384711, upload_time = "2025-07-01T15:54:18.101Z" }, + { url = "https://files.pythonhosted.org/packages/ec/43/e5c86fef4be7f49828bdd4ecc8931f0287b1152c0bb0163049b3218740e7/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e", size = 400865, upload_time = "2025-07-01T15:54:19.295Z" }, + { url = "https://files.pythonhosted.org/packages/55/34/e00f726a4d44f22d5c5fe2e5ddd3ac3d7fd3f74a175607781fbdd06fe375/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15", size = 517763, upload_time = "2025-07-01T15:54:20.858Z" }, + { url = "https://files.pythonhosted.org/packages/52/1c/52dc20c31b147af724b16104500fba13e60123ea0334beba7b40e33354b4/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8", size = 406651, upload_time = "2025-07-01T15:54:22.508Z" }, + { url = "https://files.pythonhosted.org/packages/2e/77/87d7bfabfc4e821caa35481a2ff6ae0b73e6a391bb6b343db2c91c2b9844/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a", size = 386079, upload_time = "2025-07-01T15:54:23.987Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d4/7f2200c2d3ee145b65b3cddc4310d51f7da6a26634f3ac87125fd789152a/rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323", size = 421379, upload_time = "2025-07-01T15:54:25.073Z" }, + { url = "https://files.pythonhosted.org/packages/ae/13/9fdd428b9c820869924ab62236b8688b122baa22d23efdd1c566938a39ba/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158", size = 562033, upload_time = "2025-07-01T15:54:26.225Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e1/b69686c3bcbe775abac3a4c1c30a164a2076d28df7926041f6c0eb5e8d28/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3", size = 591639, upload_time = "2025-07-01T15:54:27.424Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c9/1e3d8c8863c84a90197ac577bbc3d796a92502124c27092413426f670990/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2", size = 557105, upload_time = "2025-07-01T15:54:29.93Z" }, + { url = "https://files.pythonhosted.org/packages/9f/c5/90c569649057622959f6dcc40f7b516539608a414dfd54b8d77e3b201ac0/rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44", size = 223272, upload_time = "2025-07-01T15:54:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/16/19f5d9f2a556cfed454eebe4d354c38d51c20f3db69e7b4ce6cff904905d/rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c", size = 234995, upload_time = "2025-07-01T15:54:32.195Z" }, + { url = "https://files.pythonhosted.org/packages/83/f0/7935e40b529c0e752dfaa7880224771b51175fce08b41ab4a92eb2fbdc7f/rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8", size = 223198, upload_time = "2025-07-01T15:54:33.271Z" }, + { url = "https://files.pythonhosted.org/packages/6a/67/bb62d0109493b12b1c6ab00de7a5566aa84c0e44217c2d94bee1bd370da9/rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d", size = 363917, upload_time = "2025-07-01T15:54:34.755Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f3/34e6ae1925a5706c0f002a8d2d7f172373b855768149796af87bd65dcdb9/rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1", size = 350073, upload_time = "2025-07-01T15:54:36.292Z" }, + { url = "https://files.pythonhosted.org/packages/75/83/1953a9d4f4e4de7fd0533733e041c28135f3c21485faaef56a8aadbd96b5/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e", size = 384214, upload_time = "2025-07-01T15:54:37.469Z" }, + { url = "https://files.pythonhosted.org/packages/48/0e/983ed1b792b3322ea1d065e67f4b230f3b96025f5ce3878cc40af09b7533/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1", size = 400113, upload_time = "2025-07-01T15:54:38.954Z" }, + { url = "https://files.pythonhosted.org/packages/69/7f/36c0925fff6f660a80be259c5b4f5e53a16851f946eb080351d057698528/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9", size = 515189, upload_time = "2025-07-01T15:54:40.57Z" }, + { url = "https://files.pythonhosted.org/packages/13/45/cbf07fc03ba7a9b54662c9badb58294ecfb24f828b9732970bd1a431ed5c/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7", size = 406998, upload_time = "2025-07-01T15:54:43.025Z" }, + { url = "https://files.pythonhosted.org/packages/6c/b0/8fa5e36e58657997873fd6a1cf621285ca822ca75b4b3434ead047daa307/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04", size = 385903, upload_time = "2025-07-01T15:54:44.752Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f7/b25437772f9f57d7a9fbd73ed86d0dcd76b4c7c6998348c070d90f23e315/rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1", size = 419785, upload_time = "2025-07-01T15:54:46.043Z" }, + { url = "https://files.pythonhosted.org/packages/a7/6b/63ffa55743dfcb4baf2e9e77a0b11f7f97ed96a54558fcb5717a4b2cd732/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9", size = 561329, upload_time = "2025-07-01T15:54:47.64Z" }, + { url = "https://files.pythonhosted.org/packages/2f/07/1f4f5e2886c480a2346b1e6759c00278b8a69e697ae952d82ae2e6ee5db0/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9", size = 590875, upload_time = "2025-07-01T15:54:48.9Z" }, + { url = "https://files.pythonhosted.org/packages/cc/bc/e6639f1b91c3a55f8c41b47d73e6307051b6e246254a827ede730624c0f8/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba", size = 556636, upload_time = "2025-07-01T15:54:50.619Z" }, + { url = "https://files.pythonhosted.org/packages/05/4c/b3917c45566f9f9a209d38d9b54a1833f2bb1032a3e04c66f75726f28876/rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b", size = 222663, upload_time = "2025-07-01T15:54:52.023Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0b/0851bdd6025775aaa2365bb8de0697ee2558184c800bfef8d7aef5ccde58/rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5", size = 234428, upload_time = "2025-07-01T15:54:53.692Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e8/a47c64ed53149c75fb581e14a237b7b7cd18217e969c30d474d335105622/rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256", size = 222571, upload_time = "2025-07-01T15:54:54.822Z" }, + { url = "https://files.pythonhosted.org/packages/89/bf/3d970ba2e2bcd17d2912cb42874107390f72873e38e79267224110de5e61/rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618", size = 360475, upload_time = "2025-07-01T15:54:56.228Z" }, + { url = "https://files.pythonhosted.org/packages/82/9f/283e7e2979fc4ec2d8ecee506d5a3675fce5ed9b4b7cb387ea5d37c2f18d/rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35", size = 346692, upload_time = "2025-07-01T15:54:58.561Z" }, + { url = "https://files.pythonhosted.org/packages/e3/03/7e50423c04d78daf391da3cc4330bdb97042fc192a58b186f2d5deb7befd/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f", size = 379415, upload_time = "2025-07-01T15:54:59.751Z" }, + { url = "https://files.pythonhosted.org/packages/57/00/d11ee60d4d3b16808432417951c63df803afb0e0fc672b5e8d07e9edaaae/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83", size = 391783, upload_time = "2025-07-01T15:55:00.898Z" }, + { url = "https://files.pythonhosted.org/packages/08/b3/1069c394d9c0d6d23c5b522e1f6546b65793a22950f6e0210adcc6f97c3e/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1", size = 512844, upload_time = "2025-07-01T15:55:02.201Z" }, + { url = "https://files.pythonhosted.org/packages/08/3b/c4fbf0926800ed70b2c245ceca99c49f066456755f5d6eb8863c2c51e6d0/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8", size = 402105, upload_time = "2025-07-01T15:55:03.698Z" }, + { url = "https://files.pythonhosted.org/packages/1c/b0/db69b52ca07413e568dae9dc674627a22297abb144c4d6022c6d78f1e5cc/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f", size = 383440, upload_time = "2025-07-01T15:55:05.398Z" }, + { url = "https://files.pythonhosted.org/packages/4c/e1/c65255ad5b63903e56b3bb3ff9dcc3f4f5c3badde5d08c741ee03903e951/rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed", size = 412759, upload_time = "2025-07-01T15:55:08.316Z" }, + { url = "https://files.pythonhosted.org/packages/e4/22/bb731077872377a93c6e93b8a9487d0406c70208985831034ccdeed39c8e/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632", size = 556032, upload_time = "2025-07-01T15:55:09.52Z" }, + { url = "https://files.pythonhosted.org/packages/e0/8b/393322ce7bac5c4530fb96fc79cc9ea2f83e968ff5f6e873f905c493e1c4/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c", size = 585416, upload_time = "2025-07-01T15:55:11.216Z" }, + { url = "https://files.pythonhosted.org/packages/49/ae/769dc372211835bf759319a7aae70525c6eb523e3371842c65b7ef41c9c6/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0", size = 554049, upload_time = "2025-07-01T15:55:13.004Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f9/4c43f9cc203d6ba44ce3146246cdc38619d92c7bd7bad4946a3491bd5b70/rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9", size = 218428, upload_time = "2025-07-01T15:55:14.486Z" }, + { url = "https://files.pythonhosted.org/packages/7e/8b/9286b7e822036a4a977f2f1e851c7345c20528dbd56b687bb67ed68a8ede/rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9", size = 231524, upload_time = "2025-07-01T15:55:15.745Z" }, + { url = "https://files.pythonhosted.org/packages/55/07/029b7c45db910c74e182de626dfdae0ad489a949d84a468465cd0ca36355/rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a", size = 364292, upload_time = "2025-07-01T15:55:17.001Z" }, + { url = "https://files.pythonhosted.org/packages/13/d1/9b3d3f986216b4d1f584878dca15ce4797aaf5d372d738974ba737bf68d6/rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf", size = 350334, upload_time = "2025-07-01T15:55:18.922Z" }, + { url = "https://files.pythonhosted.org/packages/18/98/16d5e7bc9ec715fa9668731d0cf97f6b032724e61696e2db3d47aeb89214/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12", size = 384875, upload_time = "2025-07-01T15:55:20.399Z" }, + { url = "https://files.pythonhosted.org/packages/f9/13/aa5e2b1ec5ab0e86a5c464d53514c0467bec6ba2507027d35fc81818358e/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20", size = 399993, upload_time = "2025-07-01T15:55:21.729Z" }, + { url = "https://files.pythonhosted.org/packages/17/03/8021810b0e97923abdbab6474c8b77c69bcb4b2c58330777df9ff69dc559/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331", size = 516683, upload_time = "2025-07-01T15:55:22.918Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b1/da8e61c87c2f3d836954239fdbbfb477bb7b54d74974d8f6fcb34342d166/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f", size = 408825, upload_time = "2025-07-01T15:55:24.207Z" }, + { url = "https://files.pythonhosted.org/packages/38/bc/1fc173edaaa0e52c94b02a655db20697cb5fa954ad5a8e15a2c784c5cbdd/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246", size = 387292, upload_time = "2025-07-01T15:55:25.554Z" }, + { url = "https://files.pythonhosted.org/packages/7c/eb/3a9bb4bd90867d21916f253caf4f0d0be7098671b6715ad1cead9fe7bab9/rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387", size = 420435, upload_time = "2025-07-01T15:55:27.798Z" }, + { url = "https://files.pythonhosted.org/packages/cd/16/e066dcdb56f5632713445271a3f8d3d0b426d51ae9c0cca387799df58b02/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af", size = 562410, upload_time = "2025-07-01T15:55:29.057Z" }, + { url = "https://files.pythonhosted.org/packages/60/22/ddbdec7eb82a0dc2e455be44c97c71c232983e21349836ce9f272e8a3c29/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33", size = 590724, upload_time = "2025-07-01T15:55:30.719Z" }, + { url = "https://files.pythonhosted.org/packages/2c/b4/95744085e65b7187d83f2fcb0bef70716a1ea0a9e5d8f7f39a86e5d83424/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953", size = 558285, upload_time = "2025-07-01T15:55:31.981Z" }, + { url = "https://files.pythonhosted.org/packages/37/37/6309a75e464d1da2559446f9c811aa4d16343cebe3dbb73701e63f760caa/rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9", size = 223459, upload_time = "2025-07-01T15:55:33.312Z" }, + { url = "https://files.pythonhosted.org/packages/d9/6f/8e9c11214c46098b1d1391b7e02b70bb689ab963db3b19540cba17315291/rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37", size = 236083, upload_time = "2025-07-01T15:55:34.933Z" }, + { url = "https://files.pythonhosted.org/packages/47/af/9c4638994dd623d51c39892edd9d08e8be8220a4b7e874fa02c2d6e91955/rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867", size = 223291, upload_time = "2025-07-01T15:55:36.202Z" }, + { url = "https://files.pythonhosted.org/packages/4d/db/669a241144460474aab03e254326b32c42def83eb23458a10d163cb9b5ce/rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da", size = 361445, upload_time = "2025-07-01T15:55:37.483Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2d/133f61cc5807c6c2fd086a46df0eb8f63a23f5df8306ff9f6d0fd168fecc/rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7", size = 347206, upload_time = "2025-07-01T15:55:38.828Z" }, + { url = "https://files.pythonhosted.org/packages/05/bf/0e8fb4c05f70273469eecf82f6ccf37248558526a45321644826555db31b/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad", size = 380330, upload_time = "2025-07-01T15:55:40.175Z" }, + { url = "https://files.pythonhosted.org/packages/d4/a8/060d24185d8b24d3923322f8d0ede16df4ade226a74e747b8c7c978e3dd3/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d", size = 392254, upload_time = "2025-07-01T15:55:42.015Z" }, + { url = "https://files.pythonhosted.org/packages/b9/7b/7c2e8a9ee3e6bc0bae26bf29f5219955ca2fbb761dca996a83f5d2f773fe/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca", size = 516094, upload_time = "2025-07-01T15:55:43.603Z" }, + { url = "https://files.pythonhosted.org/packages/75/d6/f61cafbed8ba1499b9af9f1777a2a199cd888f74a96133d8833ce5eaa9c5/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19", size = 402889, upload_time = "2025-07-01T15:55:45.275Z" }, + { url = "https://files.pythonhosted.org/packages/92/19/c8ac0a8a8df2dd30cdec27f69298a5c13e9029500d6d76718130f5e5be10/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8", size = 384301, upload_time = "2025-07-01T15:55:47.098Z" }, + { url = "https://files.pythonhosted.org/packages/41/e1/6b1859898bc292a9ce5776016c7312b672da00e25cec74d7beced1027286/rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b", size = 412891, upload_time = "2025-07-01T15:55:48.412Z" }, + { url = "https://files.pythonhosted.org/packages/ef/b9/ceb39af29913c07966a61367b3c08b4f71fad841e32c6b59a129d5974698/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a", size = 557044, upload_time = "2025-07-01T15:55:49.816Z" }, + { url = "https://files.pythonhosted.org/packages/2f/27/35637b98380731a521f8ec4f3fd94e477964f04f6b2f8f7af8a2d889a4af/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170", size = 585774, upload_time = "2025-07-01T15:55:51.192Z" }, + { url = "https://files.pythonhosted.org/packages/52/d9/3f0f105420fecd18551b678c9a6ce60bd23986098b252a56d35781b3e7e9/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e", size = 554886, upload_time = "2025-07-01T15:55:52.541Z" }, + { url = "https://files.pythonhosted.org/packages/6b/c5/347c056a90dc8dd9bc240a08c527315008e1b5042e7a4cf4ac027be9d38a/rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f", size = 219027, upload_time = "2025-07-01T15:55:53.874Z" }, + { url = "https://files.pythonhosted.org/packages/75/04/5302cea1aa26d886d34cadbf2dc77d90d7737e576c0065f357b96dc7a1a6/rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7", size = 232821, upload_time = "2025-07-01T15:55:55.167Z" }, +] + +[[package]] +name = "ruamel-yaml" +version = "0.18.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ruamel-yaml-clib", marker = "python_full_version < '3.14' and platform_python_implementation == 'CPython'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/39/87/6da0df742a4684263261c253f00edd5829e6aca970fff69e75028cccc547/ruamel.yaml-0.18.14.tar.gz", hash = "sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7", size = 145511, upload_time = "2025-06-09T08:51:09.828Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/6d/6fe4805235e193aad4aaf979160dd1f3c487c57d48b810c816e6e842171b/ruamel.yaml-0.18.14-py3-none-any.whl", hash = "sha256:710ff198bb53da66718c7db27eec4fbcc9aa6ca7204e4c1df2f282b6fe5eb6b2", size = 118570, upload_time = "2025-06-09T08:51:06.348Z" }, +] + +[[package]] +name = "ruamel-yaml-clib" +version = "0.2.12" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315, upload_time = "2024-10-20T10:10:56.22Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433, upload_time = "2024-10-20T10:12:55.657Z" }, + { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362, upload_time = "2024-10-20T10:12:57.155Z" }, + { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118, upload_time = "2024-10-20T10:12:58.501Z" }, + { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497, upload_time = "2024-10-20T10:13:00.211Z" }, + { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042, upload_time = "2024-10-21T11:26:46.038Z" }, + { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831, upload_time = "2024-10-21T11:26:47.487Z" }, + { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692, upload_time = "2024-12-11T19:58:17.252Z" }, + { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777, upload_time = "2024-10-20T10:13:01.395Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523, upload_time = "2024-10-20T10:13:02.768Z" }, + { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011, upload_time = "2024-10-20T10:13:04.377Z" }, + { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488, upload_time = "2024-10-20T10:13:05.906Z" }, + { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066, upload_time = "2024-10-20T10:13:07.26Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785, upload_time = "2024-10-20T10:13:08.504Z" }, + { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017, upload_time = "2024-10-21T11:26:48.866Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270, upload_time = "2024-10-21T11:26:50.213Z" }, + { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059, upload_time = "2024-12-11T19:58:18.846Z" }, + { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583, upload_time = "2024-10-20T10:13:09.658Z" }, + { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190, upload_time = "2024-10-20T10:13:10.66Z" }, +] + [[package]] name = "savepagenow" version = "1.3.0" @@ -1271,6 +1967,24 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a6/8f/aea39979f8a7091ad2242a038a0e4c2b463593923ce598a914255dfba9ef/savepagenow-1.3.0-py2.py3-none-any.whl", hash = "sha256:4b0a4fff47254c160a37a20868ab53bb90da3d3f9f96086a9255b2375e39fcbf", size = 5649, upload_time = "2023-07-01T13:31:48.005Z" }, ] +[[package]] +name = "shellingham" +version = "1.5.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload_time = "2023-10-24T04:13:40.426Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload_time = "2023-10-24T04:13:38.866Z" }, +] + +[[package]] +name = "simpleeval" +version = "1.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/6f/15be211749430f52f2c8f0c69158a6fc961c03aac93fa28d44d1a6f5ebc7/simpleeval-1.0.3.tar.gz", hash = "sha256:67bbf246040ac3b57c29cf048657b9cf31d4e7b9d6659684daa08ca8f1e45829", size = 24358, upload_time = "2024-11-02T10:29:46.912Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/e9/e58082fbb8cecbb6fb4133033c40cc50c248b1a331582be3a0f39138d65b/simpleeval-1.0.3-py3-none-any.whl", hash = "sha256:e3bdbb8c82c26297c9a153902d0fd1858a6c3774bf53ff4f134788c3f2035c38", size = 15762, upload_time = "2024-11-02T10:29:45.706Z" }, +] + [[package]] name = "six" version = "1.17.0" @@ -1289,6 +2003,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303, upload_time = "2025-01-02T07:14:38.724Z" }, ] +[[package]] +name = "soupsieve" +version = "2.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload_time = "2025-04-20T18:50:08.518Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload_time = "2025-04-20T18:50:07.196Z" }, +] + [[package]] name = "stack-data" version = "0.6.3" @@ -1303,14 +2026,51 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload_time = "2023-09-30T13:58:03.53Z" }, ] +[[package]] +name = "structlog" +version = "25.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/b9/6e672db4fec07349e7a8a8172c1a6ae235c58679ca29c3f86a61b5e59ff3/structlog-25.4.0.tar.gz", hash = "sha256:186cd1b0a8ae762e29417095664adf1d6a31702160a46dacb7796ea82f7409e4", size = 1369138, upload_time = "2025-06-02T08:21:12.971Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/4a/97ee6973e3a73c74c8120d59829c3861ea52210667ec3e7a16045c62b64d/structlog-25.4.0-py3-none-any.whl", hash = "sha256:fe809ff5c27e557d14e613f45ca441aabda051d119ee5a0102aaba6ce40eed2c", size = 68720, upload_time = "2025-06-02T08:21:11.43Z" }, +] + +[[package]] +name = "tableschema-to-template" +version = "0.0.13" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonschema" }, + { name = "pyyaml" }, + { name = "xlsxwriter" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/2d/5b5c0127e959a715c5365b3b491846fba5bc1fb7f94370cc3a4fb3f51f68/tableschema-to-template-0.0.13.tar.gz", hash = "sha256:2d8d2250efb840e0ecb9012c5e879a82ef68f65dd86bdff574200fdfc978ff1c", size = 13564, upload_time = "2023-02-01T21:53:17.238Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/7f/3c129377d9b815c0bb92b8c24bbecabe5e6b13b831f38924f80d2e5b40b2/tableschema_to_template-0.0.13-py3-none-any.whl", hash = "sha256:4905500a4235740654230c3223629d26fdccb7a0457ec1d0110ea102c4f1146c", size = 14860, upload_time = "2023-02-01T21:53:16.02Z" }, +] + +[[package]] +name = "tabulate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload_time = "2022-10-06T17:21:48.54Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload_time = "2022-10-06T17:21:44.262Z" }, +] + [[package]] name = "technologydata" source = { editable = "." } dependencies = [ + { name = "frozendict" }, + { name = "hdx-python-country" }, { name = "ipykernel" }, { name = "mypy" }, { name = "pandas" }, + { name = "pint" }, { name = "pre-commit" }, + { name = "pydantic" }, + { name = "pydeflate" }, { name = "pytest" }, { name = "pytest-cov" }, { name = "pytest-xdist" }, @@ -1332,6 +2092,8 @@ docs = [ [package.metadata] requires-dist = [ + { name = "frozendict", specifier = ">=2.4.6" }, + { name = "hdx-python-country", specifier = ">=3.9.6" }, { name = "ipykernel", specifier = ">=6.29.5" }, { name = "mkdocs-autolinks-plugin", marker = "extra == 'docs'", specifier = ">=0.7.1" }, { name = "mkdocs-git-revision-date-localized-plugin", marker = "extra == 'docs'", specifier = ">=1.4.7" }, @@ -1342,7 +2104,10 @@ requires-dist = [ { name = "mkdocstrings-python", marker = "extra == 'docs'", specifier = ">=1.16.11" }, { name = "mypy", specifier = ">=1.15.0" }, { name = "pandas", specifier = ">=2.2.3" }, + { name = "pint", specifier = ">=0.24.4" }, { name = "pre-commit", specifier = ">=4.2.0" }, + { name = "pydantic", specifier = ">=2.11.7" }, + { name = "pydeflate", specifier = ">=2.1.3" }, { name = "pytest", specifier = ">=8.3.5" }, { name = "pytest-cov", specifier = ">=6.2.1" }, { name = "pytest-xdist", specifier = ">=3.8.0" }, @@ -1352,6 +2117,24 @@ requires-dist = [ ] provides-extras = ["docs"] +[[package]] +name = "tenacity" +version = "9.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload_time = "2025-04-02T08:25:09.966Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload_time = "2025-04-02T08:25:07.678Z" }, +] + +[[package]] +name = "text-unidecode" +version = "1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload_time = "2019-08-30T21:36:45.405Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload_time = "2019-08-30T21:37:03.543Z" }, +] + [[package]] name = "tomlkit" version = "0.13.3" @@ -1389,6 +2172,21 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload_time = "2024-04-19T11:11:46.763Z" }, ] +[[package]] +name = "typer" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "rich" }, + { name = "shellingham" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/8c/7d682431efca5fd290017663ea4588bf6f2c6aad085c7f108c5dbc316e70/typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b", size = 102625, upload_time = "2025-05-26T14:30:31.824Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/42/3efaf858001d2c2913de7f354563e3a3a2f0decae3efe98427125a8f441e/typer-0.16.0-py3-none-any.whl", hash = "sha256:1f79bed11d4d02d4310e3c1b7ba594183bcedb0ac73b27a9e5f28f6fb5b98855", size = 46317, upload_time = "2025-05-26T14:30:30.523Z" }, +] + [[package]] name = "typing-extensions" version = "4.14.1" @@ -1398,6 +2196,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload_time = "2025-07-04T13:28:32.743Z" }, ] +[[package]] +name = "typing-inspection" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload_time = "2025-05-21T18:55:23.885Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload_time = "2025-05-21T18:55:22.152Z" }, +] + [[package]] name = "tzdata" version = "2025.2" @@ -1407,6 +2217,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload_time = "2025-03-23T13:54:41.845Z" }, ] +[[package]] +name = "unidecode" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/7d/a8a765761bbc0c836e397a2e48d498305a865b70a8600fd7a942e85dcf63/Unidecode-1.4.0.tar.gz", hash = "sha256:ce35985008338b676573023acc382d62c264f307c8f7963733405add37ea2b23", size = 200149, upload_time = "2025-04-24T08:45:03.798Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/b7/559f59d57d18b44c6d1250d2eeaa676e028b9c527431f5d0736478a73ba1/Unidecode-1.4.0-py3-none-any.whl", hash = "sha256:c3c7606c27503ad8d501270406e345ddb480a7b5f38827eafe4fa82a137f0021", size = 235837, upload_time = "2025-04-24T08:45:01.609Z" }, +] + [[package]] name = "urllib3" version = "2.5.0" @@ -1416,6 +2235,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload_time = "2025-06-18T14:07:40.39Z" }, ] +[[package]] +name = "validators" +version = "0.35.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/53/66/a435d9ae49850b2f071f7ebd8119dd4e84872b01630d6736761e6e7fd847/validators-0.35.0.tar.gz", hash = "sha256:992d6c48a4e77c81f1b4daba10d16c3a9bb0dbb79b3a19ea847ff0928e70497a", size = 73399, upload_time = "2025-05-01T05:42:06.7Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/6e/3e955517e22cbdd565f2f8b2e73d52528b14b8bcfdb04f62466b071de847/validators-0.35.0-py3-none-any.whl", hash = "sha256:e8c947097eae7892cb3d26868d637f79f47b4a0554bc6b80065dfe5aac3705dd", size = 44712, upload_time = "2025-05-01T05:42:04.203Z" }, +] + [[package]] name = "virtualenv" version = "20.31.2" @@ -1454,6 +2282,20 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload_time = "2024-11-01T14:07:11.845Z" }, ] +[[package]] +name = "wbgapi" +version = "1.0.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, + { name = "requests" }, + { name = "tabulate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d7/4a/f55695bd1c9f1996b675b6e9e980eef40ebdb5e4bf8774c059c31af6ade1/wbgapi-1.0.12.tar.gz", hash = "sha256:338c3c768bd120b80596b48fa0449ecabc93513ac989c55671dce579dbb3a5be", size = 33590, upload_time = "2022-07-05T15:07:22.772Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/12/224030af4886e119a3d03b709f7130e9601a4d15332e1d6a35671b25a4de/wbgapi-1.0.12-py3-none-any.whl", hash = "sha256:c5a1e1683b03d4264d287627c2562932f30e7f5c65509b812cb2e3de7d32633f", size = 36385, upload_time = "2022-07-05T15:07:20.606Z" }, +] + [[package]] name = "wcwidth" version = "0.2.13" @@ -1462,3 +2304,66 @@ sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc wheels = [ { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload_time = "2024-01-06T02:10:55.763Z" }, ] + +[[package]] +name = "wheel" +version = "0.45.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545, upload_time = "2024-11-23T00:18:23.513Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload_time = "2024-11-23T00:18:21.207Z" }, +] + +[[package]] +name = "win32-setctime" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867, upload_time = "2024-12-07T15:28:28.314Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083, upload_time = "2024-12-07T15:28:26.465Z" }, +] + +[[package]] +name = "xlrd" +version = "2.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/07/5a/377161c2d3538d1990d7af382c79f3b2372e880b65de21b01b1a2b78691e/xlrd-2.0.2.tar.gz", hash = "sha256:08b5e25de58f21ce71dc7db3b3b8106c1fa776f3024c54e45b45b374e89234c9", size = 100167, upload_time = "2025-06-14T08:46:39.039Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/62/c8d562e7766786ba6587d09c5a8ba9f718ed3fa8af7f4553e8f91c36f302/xlrd-2.0.2-py2.py3-none-any.whl", hash = "sha256:ea762c3d29f4cca48d82df517b6d89fbce4db3107f9d78713e48cd321d5c9aa9", size = 96555, upload_time = "2025-06-14T08:46:37.766Z" }, +] + +[[package]] +name = "xlrd3" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/db/88d8d49ddacc203956ecb98dc86c6ffeee6e933ef1f50da9b369de518f7f/xlrd3-1.1.0.tar.gz", hash = "sha256:20e6ed2e5f7f8b4ab61e30faffebceff6fab348332b4c915373f0a72742dc177", size = 58919847, upload_time = "2021-04-25T12:27:10.03Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5d/08/fce745025e58f160e7dcb5a45d4d43eb0bd44c0d8851425be87ef90271fa/xlrd3-1.1.0-py2.py3-none-any.whl", hash = "sha256:8e8e808f938144e7936a6e07c1d57be7a0f6c6f5b37c9c67974b43246d8aacb6", size = 105268, upload_time = "2021-04-25T12:26:55.264Z" }, +] + +[[package]] +name = "xlsx2csv" +version = "0.8.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/20/94860286a308a4213581c1beacd4fc7be724250c03583fcff23aaa6107bb/xlsx2csv-0.8.4.tar.gz", hash = "sha256:2aa809888826f6af5b26c77fc7f613f2bbeada0d8cc09e5a58e0f59684bb6911", size = 221390, upload_time = "2024-11-19T17:06:07.818Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/c0/15c21556362c67f1155f3643a375d50ac67559b82c768e64e800a42a2577/xlsx2csv-0.8.4-py3-none-any.whl", hash = "sha256:52ab873fc7b2f2ca75d14aee8bd1985a9f5c1bcb3cc7b80df7a5d57a40a67473", size = 15904, upload_time = "2024-11-19T17:06:05.362Z" }, +] + +[[package]] +name = "xlsxwriter" +version = "3.2.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/47/7704bac42ac6fe1710ae099b70e6a1e68ed173ef14792b647808c357da43/xlsxwriter-3.2.5.tar.gz", hash = "sha256:7e88469d607cdc920151c0ab3ce9cf1a83992d4b7bc730c5ffdd1a12115a7dbe", size = 213306, upload_time = "2025-06-17T08:59:14.619Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/34/a22e6664211f0c8879521328000bdcae9bf6dbafa94a923e531f6d5b3f73/xlsxwriter-3.2.5-py3-none-any.whl", hash = "sha256:4f4824234e1eaf9d95df9a8fe974585ff91d0f5e3d3f12ace5b71e443c1c6abd", size = 172347, upload_time = "2025-06-17T08:59:13.453Z" }, +] + +[[package]] +name = "xlwt" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/97/56a6f56ce44578a69343449aa5a0d98eefe04085d69da539f3034e2cd5c1/xlwt-1.3.0.tar.gz", hash = "sha256:c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88", size = 153929, upload_time = "2017-08-22T06:47:16.498Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/48/def306413b25c3d01753603b1a222a011b8621aed27cd7f89cbc27e6b0f4/xlwt-1.3.0-py2.py3-none-any.whl", hash = "sha256:a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e", size = 99981, upload_time = "2017-08-22T06:47:15.281Z" }, +] From 105578b9b0015bde54366fc281d08ee5047c6273 Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Thu, 31 Jul 2025 16:44:47 +0200 Subject: [PATCH 06/30] code: add OOP to test suites (#21) --- test/test_commons.py | 258 +++++++++-------- test/test_datapackage.py | 38 +-- test/test_source.py | 366 ++++++++++++------------ test/test_source_collection.py | 445 +++++++++++++++-------------- test/test_technology_collection.py | 179 ++++++------ 5 files changed, 667 insertions(+), 619 deletions(-) diff --git a/test/test_commons.py b/test/test_commons.py index 95bf5ad8..c242f863 100644 --- a/test/test_commons.py +++ b/test/test_commons.py @@ -11,131 +11,143 @@ import technologydata -@pytest.mark.parametrize( - "input_datetime_string, date_format, expected_date", - [ - ( - "2025-05-20 14:45:00", - technologydata.DateFormatEnum.SOURCES_CSV, - "2025-05-20 14:45:00", - ), - ( - "20250520144500", - technologydata.DateFormatEnum.SOURCES_CSV, - "2025-05-20 14:45:00", - ), - ( - "2025-05-20 14:45:00", - technologydata.DateFormatEnum.WAYBACK, - "20250520144500", - ), - ("20250520144500", technologydata.DateFormatEnum.WAYBACK, "20250520144500"), - ("2025-05-20 14:45:00", technologydata.DateFormatEnum.NONE, ""), - ("invalid-date-string", technologydata.DateFormatEnum.SOURCES_CSV, ValueError), - ("2025/13/01", technologydata.DateFormatEnum.SOURCES_CSV, ValueError), - ], -) # type: ignore -def test_change_datetime_format( - input_datetime_string: str, - date_format: technologydata.DateFormatEnum, - expected_date: str | typing.Any, -) -> None: - """Check if the datetime is correctly transformed to a new format.""" - if expected_date is ValueError: - with pytest.raises(ValueError, match="Error during datetime formatting"): - technologydata.Commons.change_datetime_format( +class TestCommonsUtils: + """Test suite for the Commons utility functions in the technologydata module.""" + + @pytest.mark.parametrize( + "input_datetime_string, date_format, expected_date", + [ + ( + "2025-05-20 14:45:00", + technologydata.DateFormatEnum.SOURCES_CSV, + "2025-05-20 14:45:00", + ), + ( + "20250520144500", + technologydata.DateFormatEnum.SOURCES_CSV, + "2025-05-20 14:45:00", + ), + ( + "2025-05-20 14:45:00", + technologydata.DateFormatEnum.WAYBACK, + "20250520144500", + ), + ("20250520144500", technologydata.DateFormatEnum.WAYBACK, "20250520144500"), + ("2025-05-20 14:45:00", technologydata.DateFormatEnum.NONE, ""), + ( + "invalid-date-string", + technologydata.DateFormatEnum.SOURCES_CSV, + ValueError, + ), + ("2025/13/01", technologydata.DateFormatEnum.SOURCES_CSV, ValueError), + ], + ) # type: ignore + def test_change_datetime_format( + self, + input_datetime_string: str, + date_format: technologydata.DateFormatEnum, + expected_date: str | typing.Any, + ) -> None: + """Check if the datetime is correctly transformed to a new format.""" + if expected_date is ValueError: + with pytest.raises(ValueError, match="Error during datetime formatting"): + technologydata.Commons.change_datetime_format( + input_datetime_string, date_format + ) + else: + result = technologydata.Commons.change_datetime_format( input_datetime_string, date_format ) - else: - result = technologydata.Commons.change_datetime_format( - input_datetime_string, date_format - ) - assert result == expected_date - - -@pytest.mark.parametrize( - "input_string, expected_string", - [ - ( - "Hello, World! Welcome to Python @ 2023.", - "hello_world_welcome_to_python_2023", - ), - ( - " Special#Characters$Are%Fun! ", - "special_characters_are_fun", - ), - ( - "!!!LeadingAndTrailing!!!", - "leadingandtrailing", - ), - ], -) # type: ignore -def test_replace_special_characters( - input_string: str, - expected_string: str, -) -> None: - """Check if the special characters are removed from a string and the string is lowercased.""" - assert ( - technologydata.Commons.replace_special_characters(input_string) - == expected_string - ) + assert result == expected_date + @pytest.mark.parametrize( + "input_string, expected_string", + [ + ( + "Hello, World! Welcome to Python @ 2023.", + "hello_world_welcome_to_python_2023", + ), + ( + " Special#Characters$Are%Fun! ", + "special_characters_are_fun", + ), + ( + "!!!LeadingAndTrailing!!!", + "leadingandtrailing", + ), + ], + ) # type: ignore + def test_replace_special_characters( + self, + input_string: str, + expected_string: str, + ) -> None: + """Check if the special characters are removed from a string and the string is lowercased.""" + assert ( + technologydata.Commons.replace_special_characters(input_string) + == expected_string + ) -@pytest.mark.parametrize( - "input_string, expected_string", - [ - ("text/plain", ".txt"), - ("text/html", ".html"), - ("text/csv", ".csv"), - ("text/xml", ".xml"), - ("application/vnd.ms-excel", ".xls"), - ("application/vnd.oasis.opendocument.spreadsheet", ".ods"), - ("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", ".xlsx"), - ("application/json", ".json"), - ("application/xml", ".xml"), - ("application/pdf", ".pdf"), - ("application/parquet", ".parquet"), - ("application/vdn.apache.parquet", ".parquet"), - ("application/x-rar-compressed", ".rar"), - ("application/vnd.rar", ".rar"), - ("application/zip", ".zip"), - ("application/x-zip-compressed", ".zip"), - ], -) # type: ignore -def test_get_extension( - input_string: str, - expected_string: str, -) -> None: - """Check if the correct file extension is associated to a given MIME type.""" - assert ( - technologydata.FileExtensionEnum.get_extension(input_string) == expected_string - ) - + @pytest.mark.parametrize( + "input_string, expected_string", + [ + ("text/plain", ".txt"), + ("text/html", ".html"), + ("text/csv", ".csv"), + ("text/xml", ".xml"), + ("application/vnd.ms-excel", ".xls"), + ("application/vnd.oasis.opendocument.spreadsheet", ".ods"), + ( + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", + ".xlsx", + ), + ("application/json", ".json"), + ("application/xml", ".xml"), + ("application/pdf", ".pdf"), + ("application/parquet", ".parquet"), + ("application/vdn.apache.parquet", ".parquet"), + ("application/x-rar-compressed", ".rar"), + ("application/vnd.rar", ".rar"), + ("application/zip", ".zip"), + ("application/x-zip-compressed", ".zip"), + ], + ) # type: ignore + def test_get_extension( + self, + input_string: str, + expected_string: str, + ) -> None: + """Check if the correct file extension is associated to a given MIME type.""" + assert ( + technologydata.FileExtensionEnum.get_extension(input_string) + == expected_string + ) -@pytest.mark.parametrize( - "input_string, expected_string", - [ - ("https://example.com/file.txt", ".txt"), - ("https://example.com/file.html", ".html"), - ("https://example.com/file.csv", ".csv"), - ("https://example.com/file.xml", ".xml"), - ("https://example.com/file.xls", ".xls"), - ("https://example.com/file.ods", ".ods"), - ("https://example.com/file.xlsx", ".xlsx"), - ("https://example.com/file.json", ".json"), - ("https://example.com/file.pdf", ".pdf"), - ("https://example.com/file.parquet", ".parquet"), - ("https://example.com/file.rar", ".rar"), - ("https://example.com/file.zip", ".zip"), - ("https://example.com/file.unknown", None), - ], -) # type: ignore -def test_search_file_extension_in_url( - input_string: str, - expected_string: str, -) -> None: - """Check if the correct file extension is found in a given url.""" - assert ( - technologydata.FileExtensionEnum.search_file_extension_in_url(input_string) - == expected_string - ) + @pytest.mark.parametrize( + "input_string, expected_string", + [ + ("https://example.com/file.txt", ".txt"), + ("https://example.com/file.html", ".html"), + ("https://example.com/file.csv", ".csv"), + ("https://example.com/file.xml", ".xml"), + ("https://example.com/file.xls", ".xls"), + ("https://example.com/file.ods", ".ods"), + ("https://example.com/file.xlsx", ".xlsx"), + ("https://example.com/file.json", ".json"), + ("https://example.com/file.pdf", ".pdf"), + ("https://example.com/file.parquet", ".parquet"), + ("https://example.com/file.rar", ".rar"), + ("https://example.com/file.zip", ".zip"), + ("https://example.com/file.unknown", None), + ], + ) # type: ignore + def test_search_file_extension_in_url( + self, + input_string: str, + expected_string: str, + ) -> None: + """Check if the correct file extension is found in a given url.""" + assert ( + technologydata.FileExtensionEnum.search_file_extension_in_url(input_string) + == expected_string + ) diff --git a/test/test_datapackage.py b/test/test_datapackage.py index 5e84e940..d1611fe9 100644 --- a/test/test_datapackage.py +++ b/test/test_datapackage.py @@ -11,19 +11,25 @@ path_cwd = pathlib.Path.cwd() -def test_get_source_collection() -> None: - """Test how the sources attributes is extracted from a TechnologyCollection instance.""" - input_file = pathlib.Path( - path_cwd, - "test", - "test_data", - "solar_photovoltaics_example_03", - "technologies.json", - ) - technologies_collection = technologydata.TechnologyCollection.from_json(input_file) - data_package = technologydata.DataPackage( - technologies=technologies_collection, - ) - data_package.get_source_collection() - assert isinstance(data_package.sources, technologydata.SourceCollection) - assert len(data_package.sources) == 2 +class TestDatapackage: + """Test suite for the Datapackage class in the technologydata module.""" + + def test_get_source_collection(self) -> None: + """Test how the sources attributes is extracted from a TechnologyCollection instance.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example_03", + "technologies.json", + ) + + technologies_collection = technologydata.TechnologyCollection.from_json( + input_file + ) + data_package = technologydata.DataPackage( + technologies=technologies_collection, + ) + data_package.get_source_collection() + assert isinstance(data_package.sources, technologydata.SourceCollection) + assert len(data_package.sources) == 2 diff --git a/test/test_source.py b/test/test_source.py index 94c8db4d..c889b627 100644 --- a/test/test_source.py +++ b/test/test_source.py @@ -14,21 +14,67 @@ path_cwd = pathlib.Path.cwd() -@pytest.mark.parametrize( - "example_source, expected_equal", - [ - ( +class TestSource: + """Test suite for the Source class in the technologydata module.""" + + @pytest.mark.parametrize( + "example_source, expected_equal", + [ + ( + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url": "https:download", + "source_url_archive": "http:/3273/download", + "source_url_date": "2025-05-22 15:08:02", + "source_url_date_archive": "2025-05-22 15:08:02", + }, + False, # Expect not equal + ), + ( + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + "source_url": "https:download", + "source_url_archive": "http:/3273/download", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + True, # Expect equal + ), + ( + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + }, + False, # Expect not equal + ), + ], + indirect=["example_source"], + ) # type: ignore + def test_eq( + self, example_source: technologydata.Source, expected_equal: bool + ) -> None: + """Check if the override method __eq__ works as expected.""" + reference_source = technologydata.Source( + title="tech_data_generation", + authors="Danish Energy Agency", + url="https:download", + url_archive="http:/3273/download", + url_date="2025-05-06 16:02:04", + url_date_archive="2025-05-06 16:02:04", + ) + assert (example_source == reference_source) == expected_equal + + @pytest.mark.parametrize( + "example_source", + [ { "source_title": "atb_nrel", "source_authors": "NREL/ATB", - "source_url": "https:download", "source_url_archive": "http:/3273/download", - "source_url_date": "2025-05-22 15:08:02", "source_url_date_archive": "2025-05-22 15:08:02", }, - False, # Expect not equal - ), - ( { "source_title": "tech_data_generation", "source_authors": "Danish Energy Agency", @@ -37,184 +83,142 @@ "source_url_date": "2025-05-06 16:02:04", "source_url_date_archive": "2025-05-06 16:02:04", }, - True, # Expect equal - ), - ( + ], + indirect=["example_source"], + ) # type: ignore + def test_hash(self, example_source: technologydata.Source) -> None: + """Check if the override method __hash__ works as expected.""" + assert isinstance(hash(example_source), int) + + @pytest.mark.parametrize( + "example_source, expected_string", + [ + ( + { + "source_title": "OET project page", + "source_authors": "Open Energy Transition gGmbH", + "source_url": "https://outputs.html", + "source_url_archive": "https:archived.html", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + "'Open Energy Transition gGmbH': 'OET project page', from url 'https://outputs.html', last accessed on '2025-05-06 16:02:04', archived at 'https:archived.html', on '2025-05-06 16:02:04'.", + ) + ], + indirect=["example_source"], + ) # type: ignore + def test_str( + self, example_source: technologydata.Source, expected_string: str + ) -> None: + """Check if the override method __str__ works as expected.""" + # Ensure the snapshot is created + assert str(example_source) == expected_string + + @pytest.mark.parametrize( + "example_source", + [ + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_date": "2025-05-22 15:08:02", + "source_url_date_archive": "2025-05-22 15:08:02", + }, { "source_title": "tech_data_generation", "source_authors": "Danish Energy Agency", + "source_url": "https://ens.dk/media/3273/download", + "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", }, - False, # Expect not equal - ), - ], - indirect=["example_source"], -) # type: ignore -def test_eq(example_source: technologydata.Source, expected_equal: bool) -> None: - """Check if the override method __eq__ works as expected.""" - reference_source = technologydata.Source( - title="tech_data_generation", - authors="Danish Energy Agency", - url="https:download", - url_archive="http:/3273/download", - url_date="2025-05-06 16:02:04", - url_date_archive="2025-05-06 16:02:04", - ) - assert (example_source == reference_source) == expected_equal - - -@pytest.mark.parametrize( - "example_source", - [ - { - "source_title": "atb_nrel", - "source_authors": "NREL/ATB", - "source_url_archive": "http:/3273/download", - "source_url_date_archive": "2025-05-22 15:08:02", - }, - { - "source_title": "tech_data_generation", - "source_authors": "Danish Energy Agency", - "source_url": "https:download", - "source_url_archive": "http:/3273/download", - "source_url_date": "2025-05-06 16:02:04", - "source_url_date_archive": "2025-05-06 16:02:04", - }, - ], - indirect=["example_source"], -) # type: ignore -def test_hash(example_source: technologydata.Source) -> None: - """Check if the override method __hash__ works as expected.""" - assert isinstance(hash(example_source), int) - - -@pytest.mark.parametrize( - "example_source, expected_string", - [ - ( + ], + indirect=["example_source"], + ) # type: ignore + def test_retrieve_from_wayback(self, example_source: technologydata.Source) -> None: + """Check if the example source is downloaded from the Internet Archive Wayback Machine.""" + storage_path = example_source.retrieve_from_wayback(path_cwd) + # Check if storage_paths is not None and is a list + assert storage_path is not None, "Expected a valid storage path, but got None." + assert isinstance(storage_path, pathlib.Path), ( + "Expected storage_path to be a pathlib.Path." + ) + assert storage_path is not None, "Expected a valid storage path, but got None." + assert storage_path.is_file(), ( + f"Expected {storage_path} to be a file, but it does not exist." + ) + # Delete the downloaded file + storage_path.unlink(missing_ok=True) + + def test_store_in_wayback(self) -> None: + """Check if a given url is correctly stored as a snapshot on Internet Archive Wayback Machine.""" + url_to_archive = "https://www.openenergytransition.org/outputs.html" + archived_info = technologydata.Source.store_in_wayback(url_to_archive) + + # Check if archived_info is None + assert archived_info is not None, "archived_info should not be None" + + archived_url, new_capture, output_timestamp = archived_info + + assert "https://web.archive.org/web/" in archived_url + assert url_to_archive in archived_url + assert isinstance(new_capture, bool) + + assert output_timestamp is not None, "output_timestamp should not be None" + try: + datetime.datetime.strptime( + output_timestamp, technologydata.DateFormatEnum.SOURCES_CSV + ) + except ValueError: + pytest.fail("Valid date-time string did not match the format") + + @pytest.mark.parametrize( + "example_source", + [ { "source_title": "OET project page", "source_authors": "Open Energy Transition gGmbH", - "source_url": "https://outputs.html", - "source_url_archive": "https:archived.html", - "source_url_date": "2025-05-06 16:02:04", - "source_url_date_archive": "2025-05-06 16:02:04", + "source_url": "https://openenergytransition.org/outputs.html", }, - "'Open Energy Transition gGmbH': 'OET project page', from url 'https://outputs.html', last accessed on '2025-05-06 16:02:04', archived at 'https:archived.html', on '2025-05-06 16:02:04'.", - ) - ], - indirect=["example_source"], -) # type: ignore -def test_str(example_source: technologydata.Source, expected_string: str) -> None: - """Check if the override method __str__ works as expected.""" - # Ensure the snapshot is created - assert str(example_source) == expected_string - - -@pytest.mark.parametrize( - "example_source", - [ - { - "source_title": "atb_nrel", - "source_authors": "NREL/ATB", - "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "source_url_date": "2025-05-22 15:08:02", - "source_url_date_archive": "2025-05-22 15:08:02", - }, - { - "source_title": "tech_data_generation", - "source_authors": "Danish Energy Agency", - "source_url": "https://ens.dk/media/3273/download", - "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "source_url_date": "2025-05-06 16:02:04", - "source_url_date_archive": "2025-05-06 16:02:04", - }, - ], - indirect=["example_source"], -) # type: ignore -def test_retrieve_from_wayback(example_source: technologydata.Source) -> None: - """Check if the example source is downloaded from the Internet Archive Wayback Machine.""" - storage_path = example_source.retrieve_from_wayback(path_cwd) - # Check if storage_paths is not None and is a list - assert storage_path is not None, "Expected a valid storage path, but got None." - assert isinstance(storage_path, pathlib.Path), ( - "Expected storage_path to be a pathlib.Path." - ) - assert storage_path is not None, "Expected a valid storage path, but got None." - assert storage_path.is_file(), ( - f"Expected {storage_path} to be a file, but it does not exist." - ) - # Delete the downloaded file - storage_path.unlink(missing_ok=True) - - -def test_store_in_wayback() -> None: - """Check if a given url is correctly stored as a snapshot on Internet Archive Wayback Machine.""" - url_to_archive = "https://www.openenergytransition.org/outputs.html" - archived_info = technologydata.Source.store_in_wayback(url_to_archive) - - # Check if archived_info is None - assert archived_info is not None, "archived_info should not be None" - - archived_url, new_capture, output_timestamp = archived_info - - assert "https://web.archive.org/web/" in archived_url - assert url_to_archive in archived_url - assert isinstance(new_capture, bool) - - assert output_timestamp is not None, "output_timestamp should not be None" - try: - datetime.datetime.strptime( - output_timestamp, technologydata.DateFormatEnum.SOURCES_CSV + ], + indirect=["example_source"], + ) # type: ignore + def test_ensure_in_wayback(self, example_source: technologydata.Source) -> None: + """Check if the snapshot URL is created correctly.""" + # Ensure the snapshot is created + example_source.ensure_in_wayback() + assert example_source.url_date_archive is not None + assert example_source.url_archive is not None + + @pytest.mark.parametrize( + "url_archived, source_path, source_title, expected_path", + [ + ( + "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + path_cwd, + "title", + pathlib.Path(path_cwd, "title.pdf"), + ), + ( + "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + path_cwd, + "title", + pathlib.Path(path_cwd, "title.parquet"), + ), + ], + ) # type: ignore + def test_get_save_path( + self, + url_archived: str, + source_path: pathlib.Path, + source_title: str, + expected_path: pathlib.Path, + ) -> None: + """Check if the path where to store the file to download follows the requested pattern.""" + assert ( + technologydata.Source._get_save_path( + url_archived, source_path, source_title + ) + == expected_path ) - except ValueError: - pytest.fail("Valid date-time string did not match the format") - - -@pytest.mark.parametrize( - "example_source", - [ - { - "source_title": "OET project page", - "source_authors": "Open Energy Transition gGmbH", - "source_url": "https://openenergytransition.org/outputs.html", - }, - ], - indirect=["example_source"], -) # type: ignore -def test_ensure_in_wayback(example_source: technologydata.Source) -> None: - """Check if the snapshot URL is created correctly.""" - # Ensure the snapshot is created - example_source.ensure_in_wayback() - assert example_source.url_date_archive is not None - assert example_source.url_archive is not None - - -@pytest.mark.parametrize( - "url_archived, source_path, source_title, expected_path", - [ - ( - "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - path_cwd, - "title", - pathlib.Path(path_cwd, "title.pdf"), - ), - ( - "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - path_cwd, - "title", - pathlib.Path(path_cwd, "title.parquet"), - ), - ], -) # type: ignore -def test_get_save_path( - url_archived: str, - source_path: pathlib.Path, - source_title: str, - expected_path: pathlib.Path, -) -> None: - """Check if the path where to store the file to download follows the requested pattern.""" - assert ( - technologydata.Source._get_save_path(url_archived, source_path, source_title) - == expected_path - ) diff --git a/test/test_source_collection.py b/test/test_source_collection.py index fd75356b..62e95a42 100644 --- a/test/test_source_collection.py +++ b/test/test_source_collection.py @@ -14,236 +14,253 @@ path_cwd = pathlib.Path.cwd() -@pytest.mark.parametrize( - "example_source_collection, expected_string", - [ - ( +class TestSourceCollection: + """Test suite for the SourceCollection class in the technologydata module.""" + + @pytest.mark.parametrize( + "example_source_collection, expected_string", + [ + ( + [ + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url_date": "2025-05-22 15:08:02", + }, + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + ], + "SourceCollection with 2 sources: " + "'NREL/ATB': 'atb_nrel', last accessed on '2025-05-22 15:08:02', " + "'Danish Energy Agency': 'tech_data_generation', on '2025-05-06 16:02:04'.", + ), + ], + indirect=["example_source_collection"], + ) # type: ignore + def test_str( + self, + example_source_collection: technologydata.SourceCollection, + expected_string: str, + ) -> None: + """Check if the example source collection is cast to string as expected.""" + assert str(example_source_collection) == expected_string + + @pytest.mark.parametrize( + "example_source_collection", + [ + [ + { + "source_title": "Source 1", + "source_authors": "Author 1", + }, + { + "source_title": "Source 2", + "source_authors": "Author 2", + }, + ] + ], + indirect=["example_source_collection"], + ) # type: ignore + def test_example_source_collection( + self, + example_source_collection: technologydata.SourceCollection, + ) -> None: + """Check if the example source collection is instantiated correctly.""" + # Check that the returned object is a SourceCollection + assert isinstance(example_source_collection, technologydata.SourceCollection) + + # Check the number of sources + assert len(example_source_collection.sources) == 2 + + # Check the titles of the sources + assert example_source_collection.sources[0].title == "Source 1" + assert example_source_collection.sources[1].title == "Source 2" + assert example_source_collection.sources[0].authors == "Author 1" + assert example_source_collection.sources[1].authors == "Author 2" + + @pytest.mark.parametrize( + "example_source_collection", + [ [ { "source_title": "atb_nrel", "source_authors": "NREL/ATB", + "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", "source_url_date": "2025-05-22 15:08:02", + "source_url_date_archive": "2025-05-22 15:08:02", }, { "source_title": "tech_data_generation", "source_authors": "Danish Energy Agency", + "source_url": "https://ens.dk/media/3273/download", + "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "source_url_date": "2025-05-06 16:02:04", "source_url_date_archive": "2025-05-06 16:02:04", }, ], - "SourceCollection with 2 sources: " - "'NREL/ATB': 'atb_nrel', last accessed on '2025-05-22 15:08:02', " - "'Danish Energy Agency': 'tech_data_generation', on '2025-05-06 16:02:04'.", - ), - ], - indirect=["example_source_collection"], -) # type: ignore -def test_str( - example_source_collection: technologydata.SourceCollection, expected_string: str -) -> None: - """Check if the example source collection is cast to string as expected.""" - assert str(example_source_collection) == expected_string - - -@pytest.mark.parametrize( - "example_source_collection", - [ - [ - { - "source_title": "Source 1", - "source_authors": "Author 1", - }, - { - "source_title": "Source 2", - "source_authors": "Author 2", - }, - ] - ], - indirect=["example_source_collection"], -) # type: ignore -def test_example_source_collection( - example_source_collection: technologydata.SourceCollection, -) -> None: - """Check if the example source collection is instantiated correctly.""" - # Check that the returned object is a SourceCollection - assert isinstance(example_source_collection, technologydata.SourceCollection) - - # Check the number of sources - assert len(example_source_collection.sources) == 2 - - # Check the titles of the sources - assert example_source_collection.sources[0].title == "Source 1" - assert example_source_collection.sources[1].title == "Source 2" - assert example_source_collection.sources[0].authors == "Author 1" - assert example_source_collection.sources[1].authors == "Author 2" - - -@pytest.mark.parametrize( - "example_source_collection", - [ - [ - { - "source_title": "atb_nrel", - "source_authors": "NREL/ATB", - "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "source_url_date": "2025-05-22 15:08:02", - "source_url_date_archive": "2025-05-22 15:08:02", - }, - { - "source_title": "tech_data_generation", - "source_authors": "Danish Energy Agency", - "source_url": "https://ens.dk/media/3273/download", - "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "source_url_date": "2025-05-06 16:02:04", - "source_url_date_archive": "2025-05-06 16:02:04", - }, ], - ], - indirect=["example_source_collection"], -) # type: ignore -def test_retrieve_all_from_wayback( - example_source_collection: technologydata.SourceCollection, -) -> None: - """Check if the example source collection is downloaded from the Internet Archive Wayback Machine.""" - storage_paths = example_source_collection.retrieve_all_from_wayback(path_cwd) - - # Check if storage_paths is not None and is a list - assert storage_paths is not None, "Expected storage_paths to be not None." - assert isinstance(storage_paths, list), "Expected storage_paths to be a list." - - # Filter out None values and check the remaining paths - valid_paths = [path for path in storage_paths if path is not None] - - assert all(isinstance(path, pathlib.Path) for path in valid_paths), ( - f"Expected all elements in {valid_paths} to be instances of pathlib.Path." - ) - assert all(path.is_file() for path in valid_paths), ( - f"Expected all elements in {valid_paths} to be a file, but it does not exist." - ) - - # Delete the downloaded files - for path in valid_paths: - path.unlink(missing_ok=True) - - -@pytest.mark.parametrize( - "example_source_collection", - [ + indirect=["example_source_collection"], + ) # type: ignore + def test_retrieve_all_from_wayback( + self, + example_source_collection: technologydata.SourceCollection, + ) -> None: + """Check if the example source collection is downloaded from the Internet Archive Wayback Machine.""" + storage_paths = example_source_collection.retrieve_all_from_wayback(path_cwd) + + # Check if storage_paths is not None and is a list + assert storage_paths is not None, "Expected storage_paths to be not None." + assert isinstance(storage_paths, list), "Expected storage_paths to be a list." + + # Filter out None values and check the remaining paths + valid_paths = [path for path in storage_paths if path is not None] + + assert all(isinstance(path, pathlib.Path) for path in valid_paths), ( + f"Expected all elements in {valid_paths} to be instances of pathlib.Path." + ) + assert all(path.is_file() for path in valid_paths), ( + f"Expected all elements in {valid_paths} to be a file, but it does not exist." + ) + + # Delete the downloaded files + for path in valid_paths: + path.unlink(missing_ok=True) + + @pytest.mark.parametrize( + "example_source_collection", [ - { - "source_title": "atb_nrel", - "source_authors": "NREL/ATB", - "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "source_url_date": "2025-05-22 15:08:02", - "source_url_date_archive": "2025-05-22 15:08:02", - }, - { - "source_title": "tech_data_generation", - "source_authors": "Danish Energy Agency", - "source_url": "https://ens.dk/media/3273/download", - "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "source_url_date": "2025-05-06 16:02:04", - "source_url_date_archive": "2025-05-06 16:02:04", - }, + [ + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_date": "2025-05-22 15:08:02", + "source_url_date_archive": "2025-05-22 15:08:02", + }, + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + "source_url": "https://ens.dk/media/3273/download", + "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + ], ], - ], - indirect=["example_source_collection"], -) # type: ignore -def test_to_csv(example_source_collection: technologydata.SourceCollection) -> None: - """Check if the example source collection is exported to CSV.""" - output_file = pathlib.Path(path_cwd, "export.csv") - example_source_collection.to_csv(path_or_buf=output_file) - assert output_file.is_file() - output_file.unlink(missing_ok=True) - - -@pytest.mark.parametrize( - "example_source_collection", - [ + indirect=["example_source_collection"], + ) # type: ignore + def test_to_csv( + self, example_source_collection: technologydata.SourceCollection + ) -> None: + """Check if the example source collection is exported to CSV.""" + output_file = pathlib.Path(path_cwd, "export.csv") + example_source_collection.to_csv(path_or_buf=output_file) + assert output_file.is_file() + output_file.unlink(missing_ok=True) + + @pytest.mark.parametrize( + "example_source_collection", [ - { - "source_title": "atb_nrel", - "source_authors": "NREL/ATB", - "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "source_url_date": "2025-05-22 15:08:02", - "source_url_date_archive": "2025-05-22 15:08:02", - }, - { - "source_title": "tech_data_generation", - "source_authors": "Danish Energy Agency", - "source_url": "https://ens.dk/media/3273/download", - "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "source_url_date": "2025-05-06 16:02:04", - "source_url_date_archive": "2025-05-06 16:02:04", - }, + [ + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_date": "2025-05-22 15:08:02", + "source_url_date_archive": "2025-05-22 15:08:02", + }, + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + "source_url": "https://ens.dk/media/3273/download", + "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + ], ], - ], - indirect=["example_source_collection"], -) # type: ignore -def test_to_json(example_source_collection: technologydata.SourceCollection) -> None: - """Check if the example source collection is exported to JSON.""" - output_file = pathlib.Path(path_cwd, "sources.json") - schema_file = pathlib.Path(path_cwd, "sources.schema.json") - example_source_collection.to_json(pathlib.Path(output_file)) - assert output_file.is_file() - assert schema_file.is_file() - output_file.unlink(missing_ok=True) - schema_file.unlink(missing_ok=True) - - -@pytest.mark.parametrize( - "example_source_collection", - [ + indirect=["example_source_collection"], + ) # type: ignore + def test_to_json( + self, example_source_collection: technologydata.SourceCollection + ) -> None: + """Check if the example source collection is exported to JSON.""" + output_file = pathlib.Path(path_cwd, "sources.json") + schema_file = pathlib.Path(path_cwd, "sources.schema.json") + example_source_collection.to_json(pathlib.Path(output_file)) + assert output_file.is_file() + assert schema_file.is_file() + output_file.unlink(missing_ok=True) + schema_file.unlink(missing_ok=True) + + @pytest.mark.parametrize( + "example_source_collection", [ - { - "source_title": "atb_nrel", - "source_authors": "NREL/ATB", - "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "source_url_date": "2025-05-22 15:08:02", - "source_url_date_archive": "2025-05-22 15:08:02", - }, - { - "source_title": "tech_data_generation", - "source_authors": "Danish Energy Agency", - "source_url": "https://ens.dk/media/3273/download", - "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "source_url_date": "2025-05-06 16:02:04", - "source_url_date_archive": "2025-05-06 16:02:04", - }, + [ + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_date": "2025-05-22 15:08:02", + "source_url_date_archive": "2025-05-22 15:08:02", + }, + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + "source_url": "https://ens.dk/media/3273/download", + "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + ], ], - ], - indirect=["example_source_collection"], -) # type: ignore -def test_to_dataframe( - example_source_collection: technologydata.SourceCollection, -) -> None: - """Check if the example source collection is exported to pandas dataframe.""" - assert isinstance(example_source_collection.to_dataframe(), pandas.DataFrame) - - -def test_from_json() -> None: - """Check if the example source collection is imported from JSON.""" - input_file = pathlib.Path( - path_cwd, "test", "test_data", "solar_photovoltaics_example_03", "sources.json" - ) - source_collection = technologydata.SourceCollection.from_json(file_path=input_file) - assert isinstance(source_collection, technologydata.SourceCollection) - assert len(source_collection) == 2 - - -@pytest.mark.parametrize( - "title_pattern, authors_pattern", - [["ATB", "nrel"], ["TECH_DATA", "danish"]], -) # type: ignore -def test_get(title_pattern: str, authors_pattern: str) -> None: - """Check if the example source collection is filtered as requested.""" - input_file = pathlib.Path( - path_cwd, "test", "test_data", "solar_photovoltaics_example_03", "sources.json" - ) - - source_collection = technologydata.SourceCollection.from_json(file_path=input_file) - result = source_collection.get(title=title_pattern, authors=authors_pattern) - assert len(result.sources) == 1 + indirect=["example_source_collection"], + ) # type: ignore + def test_to_dataframe( + self, + example_source_collection: technologydata.SourceCollection, + ) -> None: + """Check if the example source collection is exported to pandas dataframe.""" + assert isinstance(example_source_collection.to_dataframe(), pandas.DataFrame) + + def test_from_json(self) -> None: + """Check if the example source collection is imported from JSON.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example_03", + "sources.json", + ) + source_collection = technologydata.SourceCollection.from_json( + file_path=input_file + ) + assert isinstance(source_collection, technologydata.SourceCollection) + assert len(source_collection) == 2 + + @pytest.mark.parametrize( + "title_pattern, authors_pattern", + [["ATB", "nrel"], ["TECH_DATA", "danish"]], + ) # type: ignore + def test_get(self, title_pattern: str, authors_pattern: str) -> None: + """Check if the example source collection is filtered as requested.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example_03", + "sources.json", + ) + + source_collection = technologydata.SourceCollection.from_json( + file_path=input_file + ) + result = source_collection.get(title=title_pattern, authors=authors_pattern) + assert len(result.sources) == 1 diff --git a/test/test_technology_collection.py b/test/test_technology_collection.py index 3e1e7fb5..2c129f9e 100644 --- a/test/test_technology_collection.py +++ b/test/test_technology_collection.py @@ -14,93 +14,102 @@ path_cwd = pathlib.Path.cwd() -def test_to_csv() -> None: - """Check if the example technology collection is exported to CSV.""" - input_file = pathlib.Path( - path_cwd, - "test", - "test_data", - "solar_photovoltaics_example_03", - "technologies.json", - ) - technology_collection = technologydata.TechnologyCollection.from_json(input_file) - output_file = pathlib.Path(path_cwd, "technologies.csv") - technology_collection.to_csv(path_or_buf=output_file) - assert output_file.is_file() - output_file.unlink(missing_ok=True) +class TestTechnologyCollection: + """Test suite for the TechnologyCollection class in the technologydata module.""" + def test_to_csv(self) -> None: + """Check if the example technology collection is exported to CSV.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example_03", + "technologies.json", + ) + technology_collection = technologydata.TechnologyCollection.from_json( + input_file + ) + output_file = pathlib.Path(path_cwd, "technologies.csv") + technology_collection.to_csv(path_or_buf=output_file) + assert output_file.is_file() + output_file.unlink(missing_ok=True) -def test_to_dataframe() -> None: - """Check if the example technology collection is exported to pandas dataframe.""" - input_file = pathlib.Path( - path_cwd, - "test", - "test_data", - "solar_photovoltaics_example_03", - "technologies.json", - ) - technology_collection = technologydata.TechnologyCollection.from_json(input_file) - assert isinstance(technology_collection.to_dataframe(), pandas.DataFrame) + def test_to_dataframe(self) -> None: + """Check if the example technology collection is exported to pandas dataframe.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example_03", + "technologies.json", + ) + technology_collection = technologydata.TechnologyCollection.from_json( + input_file + ) + assert isinstance(technology_collection.to_dataframe(), pandas.DataFrame) + def test_to_json(self) -> None: + """Check if the example technology collection is exported to JSON.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example_03", + "technologies.json", + ) + technology_collection = technologydata.TechnologyCollection.from_json( + input_file + ) + output_file = pathlib.Path(path_cwd, "technologies.json") + schema_file = pathlib.Path(path_cwd, "technologies.schema.json") + technology_collection.to_json(pathlib.Path(output_file)) + assert output_file.is_file() + assert schema_file.is_file() + output_file.unlink(missing_ok=True) + schema_file.unlink(missing_ok=True) -def test_to_json() -> None: - """Check if the example technology collection is exported to JSON.""" - input_file = pathlib.Path( - path_cwd, - "test", - "test_data", - "solar_photovoltaics_example_03", - "technologies.json", - ) - technology_collection = technologydata.TechnologyCollection.from_json(input_file) - output_file = pathlib.Path(path_cwd, "technologies.json") - schema_file = pathlib.Path(path_cwd, "technologies.schema.json") - technology_collection.to_json(pathlib.Path(output_file)) - assert output_file.is_file() - assert schema_file.is_file() - output_file.unlink(missing_ok=True) - schema_file.unlink(missing_ok=True) + def test_from_json(self) -> None: + """Check if the example technology collection is imported from JSON.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example_03", + "technologies.json", + ) + technology_collection = technologydata.TechnologyCollection.from_json( + input_file + ) + assert isinstance(technology_collection, technologydata.TechnologyCollection) + assert len(technology_collection) == 2 - -def test_from_json() -> None: - """Check if the example technology collection is imported from JSON.""" - input_file = pathlib.Path( - path_cwd, - "test", - "test_data", - "solar_photovoltaics_example_03", - "technologies.json", - ) - technology_collection = technologydata.TechnologyCollection.from_json(input_file) - assert isinstance(technology_collection, technologydata.TechnologyCollection) - assert len(technology_collection) == 2 - - -@pytest.mark.parametrize( - "name, region, year, case, detailed_technology", - [ - ["Solar photovoltaics", "DEU", 2022, "example-scenario", "Si-HC"], - ["Solar photovoltaics", "DEU", 2022, "example-project", "Si-HC"], - ], -) # type: ignore -def test_get( - name: str, region: str, year: int, case: str, detailed_technology: str -) -> None: - """Check if the example technology collection is filtered as requested.""" - input_file = pathlib.Path( - path_cwd, - "test", - "test_data", - "solar_photovoltaics_example_03", - "technologies.json", - ) - technologies_collection = technologydata.TechnologyCollection.from_json(input_file) - result = technologies_collection.get( - name=name, - region=region, - year=year, - case=case, - detailed_technology=detailed_technology, - ) - assert isinstance(result, technologydata.TechnologyCollection) - assert len(result.technologies) == 1 + @pytest.mark.parametrize( + "name, region, year, case, detailed_technology", + [ + ["Solar photovoltaics", "DEU", 2022, "example-scenario", "Si-HC"], + ["Solar photovoltaics", "DEU", 2022, "example-project", "Si-HC"], + ], + ) # type: ignore + def test_get( + self, name: str, region: str, year: int, case: str, detailed_technology: str + ) -> None: + """Check if the example technology collection is filtered as requested.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example_03", + "technologies.json", + ) + technologies_collection = technologydata.TechnologyCollection.from_json( + input_file + ) + result = technologies_collection.get( + name=name, + region=region, + year=year, + case=case, + detailed_technology=detailed_technology, + ) + assert isinstance(result, technologydata.TechnologyCollection) + assert len(result.technologies) == 1 From fe3cfcc5316718b7458e6caae9efd8efa19932a0 Mon Sep 17 00:00:00 2001 From: euronion Date: Mon, 18 Aug 2025 18:21:50 +0200 Subject: [PATCH 07/30] code: Switch to src layout --- pyproject.toml | 9 +++++++++ {technologydata => src/technologydata}/__init__.py | 0 .../technologydata}/constants/__init__.py | 0 .../technologydata}/constants/energy_density.py | 0 {technologydata => src/technologydata}/datapackage.py | 0 {technologydata => src/technologydata}/parameter.py | 0 {technologydata => src/technologydata}/source.py | 0 .../technologydata}/source_collection.py | 0 {technologydata => src/technologydata}/technology.py | 0 .../technologydata}/technology_collection.py | 0 {technologydata => src/technologydata}/utils/__init__.py | 0 .../technologydata}/utils/carriers.txt | 0 {technologydata => src/technologydata}/utils/commons.py | 0 .../technologydata}/utils/heating_values.txt | 0 {technologydata => src/technologydata}/utils/units.py | 0 15 files changed, 9 insertions(+) rename {technologydata => src/technologydata}/__init__.py (100%) rename {technologydata => src/technologydata}/constants/__init__.py (100%) rename {technologydata => src/technologydata}/constants/energy_density.py (100%) rename {technologydata => src/technologydata}/datapackage.py (100%) rename {technologydata => src/technologydata}/parameter.py (100%) rename {technologydata => src/technologydata}/source.py (100%) rename {technologydata => src/technologydata}/source_collection.py (100%) rename {technologydata => src/technologydata}/technology.py (100%) rename {technologydata => src/technologydata}/technology_collection.py (100%) rename {technologydata => src/technologydata}/utils/__init__.py (100%) rename {technologydata => src/technologydata}/utils/carriers.txt (100%) rename {technologydata => src/technologydata}/utils/commons.py (100%) rename {technologydata => src/technologydata}/utils/heating_values.txt (100%) rename {technologydata => src/technologydata}/utils/units.py (100%) diff --git a/pyproject.toml b/pyproject.toml index 18199008..d257613e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -62,6 +62,9 @@ docs = [ ] [tool.pytest.ini_options] +pythonpath = [ + "src", +] testpaths = "test" addopts = "--cov=technologydata --cov-report=term" filterwarnings = [ @@ -79,6 +82,12 @@ version_scheme = "no-guess-dev" [tool.setuptools.packages.find] include = ["technologydata"] +# code coverage settings +[tool.coverage.run] +source = [ + "src/technologydata", +] + # Static type checker settings [tool.mypy] diff --git a/technologydata/__init__.py b/src/technologydata/__init__.py similarity index 100% rename from technologydata/__init__.py rename to src/technologydata/__init__.py diff --git a/technologydata/constants/__init__.py b/src/technologydata/constants/__init__.py similarity index 100% rename from technologydata/constants/__init__.py rename to src/technologydata/constants/__init__.py diff --git a/technologydata/constants/energy_density.py b/src/technologydata/constants/energy_density.py similarity index 100% rename from technologydata/constants/energy_density.py rename to src/technologydata/constants/energy_density.py diff --git a/technologydata/datapackage.py b/src/technologydata/datapackage.py similarity index 100% rename from technologydata/datapackage.py rename to src/technologydata/datapackage.py diff --git a/technologydata/parameter.py b/src/technologydata/parameter.py similarity index 100% rename from technologydata/parameter.py rename to src/technologydata/parameter.py diff --git a/technologydata/source.py b/src/technologydata/source.py similarity index 100% rename from technologydata/source.py rename to src/technologydata/source.py diff --git a/technologydata/source_collection.py b/src/technologydata/source_collection.py similarity index 100% rename from technologydata/source_collection.py rename to src/technologydata/source_collection.py diff --git a/technologydata/technology.py b/src/technologydata/technology.py similarity index 100% rename from technologydata/technology.py rename to src/technologydata/technology.py diff --git a/technologydata/technology_collection.py b/src/technologydata/technology_collection.py similarity index 100% rename from technologydata/technology_collection.py rename to src/technologydata/technology_collection.py diff --git a/technologydata/utils/__init__.py b/src/technologydata/utils/__init__.py similarity index 100% rename from technologydata/utils/__init__.py rename to src/technologydata/utils/__init__.py diff --git a/technologydata/utils/carriers.txt b/src/technologydata/utils/carriers.txt similarity index 100% rename from technologydata/utils/carriers.txt rename to src/technologydata/utils/carriers.txt diff --git a/technologydata/utils/commons.py b/src/technologydata/utils/commons.py similarity index 100% rename from technologydata/utils/commons.py rename to src/technologydata/utils/commons.py diff --git a/technologydata/utils/heating_values.txt b/src/technologydata/utils/heating_values.txt similarity index 100% rename from technologydata/utils/heating_values.txt rename to src/technologydata/utils/heating_values.txt diff --git a/technologydata/utils/units.py b/src/technologydata/utils/units.py similarity index 100% rename from technologydata/utils/units.py rename to src/technologydata/utils/units.py From 0f0b43af9d123c99e8248b884d73db81539068dd Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi Date: Tue, 19 Aug 2025 11:06:36 +0200 Subject: [PATCH 08/30] code: update unit test in test_source.py --- test/test_source.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_source.py b/test/test_source.py index c889b627..038dfe8f 100644 --- a/test/test_source.py +++ b/test/test_source.py @@ -153,7 +153,7 @@ def test_retrieve_from_wayback(self, example_source: technologydata.Source) -> N def test_store_in_wayback(self) -> None: """Check if a given url is correctly stored as a snapshot on Internet Archive Wayback Machine.""" - url_to_archive = "https://www.openenergytransition.org/outputs.html" + url_to_archive = "https://openenergytransition.org/outputs.html" archived_info = technologydata.Source.store_in_wayback(url_to_archive) # Check if archived_info is None From 69c8f96b23fe971205906a3daa017c70c641dc6b Mon Sep 17 00:00:00 2001 From: Johannes HAMPP <42553970+euronion@users.noreply.github.com> Date: Thu, 21 Aug 2025 10:46:31 +0200 Subject: [PATCH 09/30] Make development dependencies optional (#34) * code: Separate development dependencies from necessary dependencies * doc: Add note on installing dev depenencies * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: Fix packaging and pytest issues * doc: Update installation details * doc: Add copyright statement --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- docs/contributing.md | 35 + pyproject.toml | 27 +- uv.lock | 1619 +++++++++++++++++++++--------------------- 3 files changed, 868 insertions(+), 813 deletions(-) create mode 100644 docs/contributing.md diff --git a/docs/contributing.md b/docs/contributing.md new file mode 100644 index 00000000..b6c74006 --- /dev/null +++ b/docs/contributing.md @@ -0,0 +1,35 @@ + +# Contributing + +## Development dependencies + +To contribute to this project, you will need to install the development dependencies. +These dependencies include everything needed for development, testing and building the documentation of the project. + +To install the development dependencies, run the following command inside the project directory: + +```bash +uv sync +``` + +The development dependencies include `ipykernel` to support Jupyter notebooks and integration into e.g. VS Code. + +To view the full list of development dependencies, you can check the `pyproject.toml` file under the `[dependency-groups]` section as `dev` and `docs`, which are both included in the `default-groups`. + +## Testing + +To run all tests in parallel, you can use the following command: + +```bash +pytest -n auto +``` + +Some tests may not be thread-safe and therefore fail unexpectedly when run in parallel. +If you encounter such issues, you can run the tests sequentially by omitting the `-n auto` option: + +```bash +pytest +``` diff --git a/pyproject.toml b/pyproject.toml index d257613e..70a7b3a2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,18 +29,12 @@ requires-python = ">=3.12" dependencies = [ "frozendict>=2.4.6", "hdx-python-country>=3.9.6", - "ipykernel>=6.29.5", # this one can go into optional as "dev" "mypy>=1.15.0", "pandas>=2.2.3", "pint>=0.24.4", - "pre-commit>=4.2.0", # this one can go into optional as "dev" "pydantic>=2.11.7", - "pydeflate>=2.1.3", # this one can go into optional as "dev" - "pytest>=8.3.5", # this one can go into optional as "dev" - "pytest-cov>=6.2.1", # this one can go into optional as "dev" - "pytest-xdist>=3.8.0", # this one can go into optional as "dev" + "pydeflate>=2.1.3", "requests>=2.32.3", - "reuse>=5.0.2", "savepagenow>=1.3.0", ] @@ -50,7 +44,19 @@ Source = "https://github.com/PyPSA/technology-data" BugTracker = "https://github.com/PyPSA/technology-data/issues" Changelog = "https://github.com/PyPSA/technology-data/releases" -[project.optional-dependencies] +# https://docs.astral.sh/uv/concepts/projects/dependencies/#dependency-groups +# editable install of package and non-packaged dependencies +[dependency-groups] +dev = [ + "ipykernel>=6.29.5", + "pre-commit>=4.2.0", + "pytest>=8.4.1", + "pytest-cov>=6.2.1", + "pytest-xdist>=3.8.0", + "reuse>=5.0.2", + "technologydata", +] + docs = [ "mkdocs-autolinks-plugin>=0.7.1", "mkdocs-git-revision-date-localized-plugin>=1.4.7", @@ -75,11 +81,16 @@ filterwarnings = [ # Setuptools_scm settings [tool.uv] package = true +default-groups = ["dev", "docs"] + +[tool.uv.sources] +technologydata = { workspace = true } [tool.setuptools_scm] version_scheme = "no-guess-dev" [tool.setuptools.packages.find] +where = ["src"] include = ["technologydata"] # code coverage settings diff --git a/uv.lock b/uv.lock index edc2b8ae..223004a8 100644 --- a/uv.lock +++ b/uv.lock @@ -1,64 +1,64 @@ version = 1 -revision = 2 +revision = 1 requires-python = ">=3.12" [[package]] name = "annotated-types" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload_time = "2024-05-20T21:33:25.928Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload_time = "2024-05-20T21:33:24.1Z" }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, ] [[package]] name = "appnope" version = "0.1.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload_time = "2024-02-06T09:43:11.258Z" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170 } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload_time = "2024-02-06T09:43:09.663Z" }, + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, ] [[package]] name = "asttokens" version = "3.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978, upload_time = "2024-11-30T04:30:14.439Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978 } wheels = [ - { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload_time = "2024-11-30T04:30:10.946Z" }, + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, ] [[package]] name = "attrs" version = "25.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload_time = "2025-03-13T11:10:22.779Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload_time = "2025-03-13T11:10:21.14Z" }, + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, ] [[package]] name = "babel" version = "2.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload_time = "2025-02-01T15:17:41.026Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload_time = "2025-02-01T15:17:37.39Z" }, + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, ] [[package]] name = "backrefs" version = "5.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/eb/a7/312f673df6a79003279e1f55619abbe7daebbb87c17c976ddc0345c04c7b/backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59", size = 5765857, upload_time = "2025-06-22T19:34:13.97Z" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/a7/312f673df6a79003279e1f55619abbe7daebbb87c17c976ddc0345c04c7b/backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59", size = 5765857 } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/4d/798dc1f30468134906575156c089c492cf79b5a5fd373f07fe26c4d046bf/backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f", size = 380267, upload_time = "2025-06-22T19:34:05.252Z" }, - { url = "https://files.pythonhosted.org/packages/55/07/f0b3375bf0d06014e9787797e6b7cc02b38ac9ff9726ccfe834d94e9991e/backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf", size = 392072, upload_time = "2025-06-22T19:34:06.743Z" }, - { url = "https://files.pythonhosted.org/packages/9d/12/4f345407259dd60a0997107758ba3f221cf89a9b5a0f8ed5b961aef97253/backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa", size = 397947, upload_time = "2025-06-22T19:34:08.172Z" }, - { url = "https://files.pythonhosted.org/packages/10/bf/fa31834dc27a7f05e5290eae47c82690edc3a7b37d58f7fb35a1bdbf355b/backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b", size = 399843, upload_time = "2025-06-22T19:34:09.68Z" }, - { url = "https://files.pythonhosted.org/packages/fc/24/b29af34b2c9c41645a9f4ff117bae860291780d73880f449e0b5d948c070/backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9", size = 411762, upload_time = "2025-06-22T19:34:11.037Z" }, - { url = "https://files.pythonhosted.org/packages/41/ff/392bff89415399a979be4a65357a41d92729ae8580a66073d8ec8d810f98/backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60", size = 380265, upload_time = "2025-06-22T19:34:12.405Z" }, + { url = "https://files.pythonhosted.org/packages/19/4d/798dc1f30468134906575156c089c492cf79b5a5fd373f07fe26c4d046bf/backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f", size = 380267 }, + { url = "https://files.pythonhosted.org/packages/55/07/f0b3375bf0d06014e9787797e6b7cc02b38ac9ff9726ccfe834d94e9991e/backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf", size = 392072 }, + { url = "https://files.pythonhosted.org/packages/9d/12/4f345407259dd60a0997107758ba3f221cf89a9b5a0f8ed5b961aef97253/backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa", size = 397947 }, + { url = "https://files.pythonhosted.org/packages/10/bf/fa31834dc27a7f05e5290eae47c82690edc3a7b37d58f7fb35a1bdbf355b/backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b", size = 399843 }, + { url = "https://files.pythonhosted.org/packages/fc/24/b29af34b2c9c41645a9f4ff117bae860291780d73880f449e0b5d948c070/backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9", size = 411762 }, + { url = "https://files.pythonhosted.org/packages/41/ff/392bff89415399a979be4a65357a41d92729ae8580a66073d8ec8d810f98/backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60", size = 380265 }, ] [[package]] @@ -69,9 +69,9 @@ dependencies = [ { name = "soupsieve" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload_time = "2025-04-15T17:05:13.836Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067 } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload_time = "2025-04-15T17:05:12.221Z" }, + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285 }, ] [[package]] @@ -81,27 +81,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "chardet" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a7/fe/7ebfec74d49f97fc55cd38240c7a7d08134002b1e14be8c3897c0dd5e49b/binaryornot-0.4.4.tar.gz", hash = "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", size = 371054, upload_time = "2017-08-03T15:55:25.08Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/fe/7ebfec74d49f97fc55cd38240c7a7d08134002b1e14be8c3897c0dd5e49b/binaryornot-0.4.4.tar.gz", hash = "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", size = 371054 } wheels = [ - { url = "https://files.pythonhosted.org/packages/24/7e/f7b6f453e6481d1e233540262ccbfcf89adcd43606f44a028d7f5fae5eb2/binaryornot-0.4.4-py2.py3-none-any.whl", hash = "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4", size = 9006, upload_time = "2017-08-03T15:55:31.23Z" }, + { url = "https://files.pythonhosted.org/packages/24/7e/f7b6f453e6481d1e233540262ccbfcf89adcd43606f44a028d7f5fae5eb2/binaryornot-0.4.4-py2.py3-none-any.whl", hash = "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4", size = 9006 }, ] [[package]] name = "boolean-py" version = "5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c4/cf/85379f13b76f3a69bca86b60237978af17d6aa0bc5998978c3b8cf05abb2/boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95", size = 37047, upload_time = "2025-04-03T10:39:49.734Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c4/cf/85379f13b76f3a69bca86b60237978af17d6aa0bc5998978c3b8cf05abb2/boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95", size = 37047 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/ca/78d423b324b8d77900030fa59c4aa9054261ef0925631cd2501dd015b7b7/boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9", size = 26577, upload_time = "2025-04-03T10:39:48.449Z" }, + { url = "https://files.pythonhosted.org/packages/e5/ca/78d423b324b8d77900030fa59c4aa9054261ef0925631cd2501dd015b7b7/boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9", size = 26577 }, ] [[package]] name = "certifi" version = "2025.7.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/de/8a/c729b6b60c66a38f590c4e774decc4b2ec7b0576be8f1aa984a53ffa812a/certifi-2025.7.9.tar.gz", hash = "sha256:c1d2ec05395148ee10cf672ffc28cd37ea0ab0d99f9cc74c43e588cbd111b079", size = 160386, upload_time = "2025-07-09T02:13:58.874Z" } +sdist = { url = "https://files.pythonhosted.org/packages/de/8a/c729b6b60c66a38f590c4e774decc4b2ec7b0576be8f1aa984a53ffa812a/certifi-2025.7.9.tar.gz", hash = "sha256:c1d2ec05395148ee10cf672ffc28cd37ea0ab0d99f9cc74c43e588cbd111b079", size = 160386 } wheels = [ - { url = "https://files.pythonhosted.org/packages/66/f3/80a3f974c8b535d394ff960a11ac20368e06b736da395b551a49ce950cce/certifi-2025.7.9-py3-none-any.whl", hash = "sha256:d842783a14f8fdd646895ac26f719a061408834473cfc10203f6a575beb15d39", size = 159230, upload_time = "2025-07-09T02:13:57.007Z" }, + { url = "https://files.pythonhosted.org/packages/66/f3/80a3f974c8b535d394ff960a11ac20368e06b736da395b551a49ce950cce/certifi-2025.7.9-py3-none-any.whl", hash = "sha256:d842783a14f8fdd646895ac26f719a061408834473cfc10203f6a575beb15d39", size = 159230 }, ] [[package]] @@ -111,83 +111,83 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pycparser" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload_time = "2024-09-04T20:45:21.852Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload_time = "2024-09-04T20:44:12.232Z" }, - { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload_time = "2024-09-04T20:44:13.739Z" }, - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload_time = "2024-09-04T20:44:15.231Z" }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload_time = "2024-09-04T20:44:17.188Z" }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload_time = "2024-09-04T20:44:18.688Z" }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload_time = "2024-09-04T20:44:20.248Z" }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload_time = "2024-09-04T20:44:21.673Z" }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload_time = "2024-09-04T20:44:23.245Z" }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload_time = "2024-09-04T20:44:24.757Z" }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload_time = "2024-09-04T20:44:26.208Z" }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload_time = "2024-09-04T20:44:27.578Z" }, - { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload_time = "2024-09-04T20:44:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload_time = "2024-09-04T20:44:30.289Z" }, - { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload_time = "2024-09-04T20:44:32.01Z" }, - { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload_time = "2024-09-04T20:44:33.606Z" }, - { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload_time = "2024-09-04T20:44:35.191Z" }, - { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload_time = "2024-09-04T20:44:36.743Z" }, - { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload_time = "2024-09-04T20:44:38.492Z" }, - { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload_time = "2024-09-04T20:44:40.046Z" }, - { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload_time = "2024-09-04T20:44:41.616Z" }, - { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload_time = "2024-09-04T20:44:43.733Z" }, - { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload_time = "2024-09-04T20:44:45.309Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, ] [[package]] name = "cfgv" version = "3.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload_time = "2023-08-12T20:38:17.776Z" } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload_time = "2023-08-12T20:38:16.269Z" }, + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, ] [[package]] name = "chardet" version = "5.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618, upload_time = "2023-08-01T19:23:02.662Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618 } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385, upload_time = "2023-08-01T19:23:00.661Z" }, + { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385 }, ] [[package]] name = "charset-normalizer" version = "3.4.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload_time = "2025-05-02T08:34:42.01Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload_time = "2025-05-02T08:32:33.712Z" }, - { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload_time = "2025-05-02T08:32:35.768Z" }, - { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload_time = "2025-05-02T08:32:37.284Z" }, - { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload_time = "2025-05-02T08:32:38.803Z" }, - { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload_time = "2025-05-02T08:32:40.251Z" }, - { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload_time = "2025-05-02T08:32:41.705Z" }, - { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload_time = "2025-05-02T08:32:43.709Z" }, - { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload_time = "2025-05-02T08:32:46.197Z" }, - { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload_time = "2025-05-02T08:32:48.105Z" }, - { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload_time = "2025-05-02T08:32:49.719Z" }, - { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload_time = "2025-05-02T08:32:51.404Z" }, - { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload_time = "2025-05-02T08:32:53.079Z" }, - { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload_time = "2025-05-02T08:32:54.573Z" }, - { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload_time = "2025-05-02T08:32:56.363Z" }, - { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload_time = "2025-05-02T08:32:58.551Z" }, - { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload_time = "2025-05-02T08:33:00.342Z" }, - { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload_time = "2025-05-02T08:33:02.081Z" }, - { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload_time = "2025-05-02T08:33:04.063Z" }, - { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload_time = "2025-05-02T08:33:06.418Z" }, - { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload_time = "2025-05-02T08:33:08.183Z" }, - { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload_time = "2025-05-02T08:33:09.986Z" }, - { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload_time = "2025-05-02T08:33:11.814Z" }, - { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload_time = "2025-05-02T08:33:13.707Z" }, - { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload_time = "2025-05-02T08:33:15.458Z" }, - { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload_time = "2025-05-02T08:33:17.06Z" }, - { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload_time = "2025-05-02T08:33:18.753Z" }, - { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload_time = "2025-05-02T08:34:40.053Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936 }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790 }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924 }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626 }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567 }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957 }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408 }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399 }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815 }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537 }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565 }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357 }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776 }, + { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622 }, + { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435 }, + { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653 }, + { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231 }, + { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243 }, + { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442 }, + { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147 }, + { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057 }, + { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454 }, + { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174 }, + { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166 }, + { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064 }, + { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641 }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, ] [[package]] @@ -197,18 +197,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload_time = "2025-05-20T23:19:49.832Z" } +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342 } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload_time = "2025-05-20T23:19:47.796Z" }, + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215 }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload_time = "2022-10-25T02:36:22.414Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload_time = "2022-10-25T02:36:20.889Z" }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, ] [[package]] @@ -218,150 +218,150 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210, upload_time = "2024-03-12T16:53:41.133Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180, upload_time = "2024-03-12T16:53:39.226Z" }, + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 }, ] [[package]] name = "coverage" version = "7.10.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/87/0e/66dbd4c6a7f0758a8d18044c048779ba21fb94856e1edcf764bd5403e710/coverage-7.10.1.tar.gz", hash = "sha256:ae2b4856f29ddfe827106794f3589949a57da6f0d38ab01e24ec35107979ba57", size = 819938, upload_time = "2025-07-27T14:13:39.045Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/3f/b051feeb292400bd22d071fdf933b3ad389a8cef5c80c7866ed0c7414b9e/coverage-7.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b7dc7f0a75a7eaa4584e5843c873c561b12602439d2351ee28c7478186c4da4", size = 214934, upload_time = "2025-07-27T14:11:36.096Z" }, - { url = "https://files.pythonhosted.org/packages/f8/e4/a61b27d5c4c2d185bdfb0bfe9d15ab4ac4f0073032665544507429ae60eb/coverage-7.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:607f82389f0ecafc565813aa201a5cade04f897603750028dd660fb01797265e", size = 215173, upload_time = "2025-07-27T14:11:38.005Z" }, - { url = "https://files.pythonhosted.org/packages/8a/01/40a6ee05b60d02d0bc53742ad4966e39dccd450aafb48c535a64390a3552/coverage-7.10.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f7da31a1ba31f1c1d4d5044b7c5813878adae1f3af8f4052d679cc493c7328f4", size = 246190, upload_time = "2025-07-27T14:11:39.887Z" }, - { url = "https://files.pythonhosted.org/packages/11/ef/a28d64d702eb583c377255047281305dc5a5cfbfb0ee36e721f78255adb6/coverage-7.10.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:51fe93f3fe4f5d8483d51072fddc65e717a175490804e1942c975a68e04bf97a", size = 248618, upload_time = "2025-07-27T14:11:41.841Z" }, - { url = "https://files.pythonhosted.org/packages/6a/ad/73d018bb0c8317725370c79d69b5c6e0257df84a3b9b781bda27a438a3be/coverage-7.10.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3e59d00830da411a1feef6ac828b90bbf74c9b6a8e87b8ca37964925bba76dbe", size = 250081, upload_time = "2025-07-27T14:11:43.705Z" }, - { url = "https://files.pythonhosted.org/packages/2d/dd/496adfbbb4503ebca5d5b2de8bed5ec00c0a76558ffc5b834fd404166bc9/coverage-7.10.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:924563481c27941229cb4e16eefacc35da28563e80791b3ddc5597b062a5c386", size = 247990, upload_time = "2025-07-27T14:11:45.244Z" }, - { url = "https://files.pythonhosted.org/packages/18/3c/a9331a7982facfac0d98a4a87b36ae666fe4257d0f00961a3a9ef73e015d/coverage-7.10.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ca79146ee421b259f8131f153102220b84d1a5e6fb9c8aed13b3badfd1796de6", size = 246191, upload_time = "2025-07-27T14:11:47.093Z" }, - { url = "https://files.pythonhosted.org/packages/62/0c/75345895013b83f7afe92ec595e15a9a525ede17491677ceebb2ba5c3d85/coverage-7.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2b225a06d227f23f386fdc0eab471506d9e644be699424814acc7d114595495f", size = 247400, upload_time = "2025-07-27T14:11:48.643Z" }, - { url = "https://files.pythonhosted.org/packages/e2/a9/98b268cfc5619ef9df1d5d34fee408ecb1542d9fd43d467e5c2f28668cd4/coverage-7.10.1-cp312-cp312-win32.whl", hash = "sha256:5ba9a8770effec5baaaab1567be916c87d8eea0c9ad11253722d86874d885eca", size = 217338, upload_time = "2025-07-27T14:11:50.258Z" }, - { url = "https://files.pythonhosted.org/packages/fe/31/22a5440e4d1451f253c5cd69fdcead65e92ef08cd4ec237b8756dc0b20a7/coverage-7.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:9eb245a8d8dd0ad73b4062135a251ec55086fbc2c42e0eb9725a9b553fba18a3", size = 218125, upload_time = "2025-07-27T14:11:52.034Z" }, - { url = "https://files.pythonhosted.org/packages/d6/2b/40d9f0ce7ee839f08a43c5bfc9d05cec28aaa7c9785837247f96cbe490b9/coverage-7.10.1-cp312-cp312-win_arm64.whl", hash = "sha256:7718060dd4434cc719803a5e526838a5d66e4efa5dc46d2b25c21965a9c6fcc4", size = 216523, upload_time = "2025-07-27T14:11:53.965Z" }, - { url = "https://files.pythonhosted.org/packages/ef/72/135ff5fef09b1ffe78dbe6fcf1e16b2e564cd35faeacf3d63d60d887f12d/coverage-7.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ebb08d0867c5a25dffa4823377292a0ffd7aaafb218b5d4e2e106378b1061e39", size = 214960, upload_time = "2025-07-27T14:11:55.959Z" }, - { url = "https://files.pythonhosted.org/packages/b1/aa/73a5d1a6fc08ca709a8177825616aa95ee6bf34d522517c2595484a3e6c9/coverage-7.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f32a95a83c2e17422f67af922a89422cd24c6fa94041f083dd0bb4f6057d0bc7", size = 215220, upload_time = "2025-07-27T14:11:57.899Z" }, - { url = "https://files.pythonhosted.org/packages/8d/40/3124fdd45ed3772a42fc73ca41c091699b38a2c3bd4f9cb564162378e8b6/coverage-7.10.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c4c746d11c8aba4b9f58ca8bfc6fbfd0da4efe7960ae5540d1a1b13655ee8892", size = 245772, upload_time = "2025-07-27T14:12:00.422Z" }, - { url = "https://files.pythonhosted.org/packages/42/62/a77b254822efa8c12ad59e8039f2bc3df56dc162ebda55e1943e35ba31a5/coverage-7.10.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7f39edd52c23e5c7ed94e0e4bf088928029edf86ef10b95413e5ea670c5e92d7", size = 248116, upload_time = "2025-07-27T14:12:03.099Z" }, - { url = "https://files.pythonhosted.org/packages/1d/01/8101f062f472a3a6205b458d18ef0444a63ae5d36a8a5ed5dd0f6167f4db/coverage-7.10.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab6e19b684981d0cd968906e293d5628e89faacb27977c92f3600b201926b994", size = 249554, upload_time = "2025-07-27T14:12:04.668Z" }, - { url = "https://files.pythonhosted.org/packages/8f/7b/e51bc61573e71ff7275a4f167aecbd16cb010aefdf54bcd8b0a133391263/coverage-7.10.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5121d8cf0eacb16133501455d216bb5f99899ae2f52d394fe45d59229e6611d0", size = 247766, upload_time = "2025-07-27T14:12:06.234Z" }, - { url = "https://files.pythonhosted.org/packages/4b/71/1c96d66a51d4204a9d6d12df53c4071d87e110941a2a1fe94693192262f5/coverage-7.10.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:df1c742ca6f46a6f6cbcaef9ac694dc2cb1260d30a6a2f5c68c5f5bcfee1cfd7", size = 245735, upload_time = "2025-07-27T14:12:08.305Z" }, - { url = "https://files.pythonhosted.org/packages/13/d5/efbc2ac4d35ae2f22ef6df2ca084c60e13bd9378be68655e3268c80349ab/coverage-7.10.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:40f9a38676f9c073bf4b9194707aa1eb97dca0e22cc3766d83879d72500132c7", size = 247118, upload_time = "2025-07-27T14:12:09.903Z" }, - { url = "https://files.pythonhosted.org/packages/d1/22/073848352bec28ca65f2b6816b892fcf9a31abbef07b868487ad15dd55f1/coverage-7.10.1-cp313-cp313-win32.whl", hash = "sha256:2348631f049e884839553b9974f0821d39241c6ffb01a418efce434f7eba0fe7", size = 217381, upload_time = "2025-07-27T14:12:11.535Z" }, - { url = "https://files.pythonhosted.org/packages/b7/df/df6a0ff33b042f000089bd11b6bb034bab073e2ab64a56e78ed882cba55d/coverage-7.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:4072b31361b0d6d23f750c524f694e1a417c1220a30d3ef02741eed28520c48e", size = 218152, upload_time = "2025-07-27T14:12:13.182Z" }, - { url = "https://files.pythonhosted.org/packages/30/e3/5085ca849a40ed6b47cdb8f65471c2f754e19390b5a12fa8abd25cbfaa8f/coverage-7.10.1-cp313-cp313-win_arm64.whl", hash = "sha256:3e31dfb8271937cab9425f19259b1b1d1f556790e98eb266009e7a61d337b6d4", size = 216559, upload_time = "2025-07-27T14:12:14.807Z" }, - { url = "https://files.pythonhosted.org/packages/cc/93/58714efbfdeb547909feaabe1d67b2bdd59f0597060271b9c548d5efb529/coverage-7.10.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1c4f679c6b573a5257af6012f167a45be4c749c9925fd44d5178fd641ad8bf72", size = 215677, upload_time = "2025-07-27T14:12:16.68Z" }, - { url = "https://files.pythonhosted.org/packages/c0/0c/18eaa5897e7e8cb3f8c45e563e23e8a85686b4585e29d53cacb6bc9cb340/coverage-7.10.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:871ebe8143da284bd77b84a9136200bd638be253618765d21a1fce71006d94af", size = 215899, upload_time = "2025-07-27T14:12:18.758Z" }, - { url = "https://files.pythonhosted.org/packages/84/c1/9d1affacc3c75b5a184c140377701bbf14fc94619367f07a269cd9e4fed6/coverage-7.10.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:998c4751dabf7d29b30594af416e4bf5091f11f92a8d88eb1512c7ba136d1ed7", size = 257140, upload_time = "2025-07-27T14:12:20.357Z" }, - { url = "https://files.pythonhosted.org/packages/3d/0f/339bc6b8fa968c346df346068cca1f24bdea2ddfa93bb3dc2e7749730962/coverage-7.10.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:780f750a25e7749d0af6b3631759c2c14f45de209f3faaa2398312d1c7a22759", size = 259005, upload_time = "2025-07-27T14:12:22.007Z" }, - { url = "https://files.pythonhosted.org/packages/c8/22/89390864b92ea7c909079939b71baba7e5b42a76bf327c1d615bd829ba57/coverage-7.10.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:590bdba9445df4763bdbebc928d8182f094c1f3947a8dc0fc82ef014dbdd8324", size = 261143, upload_time = "2025-07-27T14:12:23.746Z" }, - { url = "https://files.pythonhosted.org/packages/2c/56/3d04d89017c0c41c7a71bd69b29699d919b6bbf2649b8b2091240b97dd6a/coverage-7.10.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b2df80cb6a2af86d300e70acb82e9b79dab2c1e6971e44b78dbfc1a1e736b53", size = 258735, upload_time = "2025-07-27T14:12:25.73Z" }, - { url = "https://files.pythonhosted.org/packages/cb/40/312252c8afa5ca781063a09d931f4b9409dc91526cd0b5a2b84143ffafa2/coverage-7.10.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d6a558c2725bfb6337bf57c1cd366c13798bfd3bfc9e3dd1f4a6f6fc95a4605f", size = 256871, upload_time = "2025-07-27T14:12:27.767Z" }, - { url = "https://files.pythonhosted.org/packages/1f/2b/564947d5dede068215aaddb9e05638aeac079685101462218229ddea9113/coverage-7.10.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e6150d167f32f2a54690e572e0a4c90296fb000a18e9b26ab81a6489e24e78dd", size = 257692, upload_time = "2025-07-27T14:12:29.347Z" }, - { url = "https://files.pythonhosted.org/packages/93/1b/c8a867ade85cb26d802aea2209b9c2c80613b9c122baa8c8ecea6799648f/coverage-7.10.1-cp313-cp313t-win32.whl", hash = "sha256:d946a0c067aa88be4a593aad1236493313bafaa27e2a2080bfe88db827972f3c", size = 218059, upload_time = "2025-07-27T14:12:31.076Z" }, - { url = "https://files.pythonhosted.org/packages/a1/fe/cd4ab40570ae83a516bf5e754ea4388aeedd48e660e40c50b7713ed4f930/coverage-7.10.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e37c72eaccdd5ed1130c67a92ad38f5b2af66eeff7b0abe29534225db2ef7b18", size = 219150, upload_time = "2025-07-27T14:12:32.746Z" }, - { url = "https://files.pythonhosted.org/packages/8d/16/6e5ed5854be6d70d0c39e9cb9dd2449f2c8c34455534c32c1a508c7dbdb5/coverage-7.10.1-cp313-cp313t-win_arm64.whl", hash = "sha256:89ec0ffc215c590c732918c95cd02b55c7d0f569d76b90bb1a5e78aa340618e4", size = 217014, upload_time = "2025-07-27T14:12:34.406Z" }, - { url = "https://files.pythonhosted.org/packages/54/8e/6d0bfe9c3d7121cf936c5f8b03e8c3da1484fb801703127dba20fb8bd3c7/coverage-7.10.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:166d89c57e877e93d8827dac32cedae6b0277ca684c6511497311249f35a280c", size = 214951, upload_time = "2025-07-27T14:12:36.069Z" }, - { url = "https://files.pythonhosted.org/packages/f2/29/e3e51a8c653cf2174c60532aafeb5065cea0911403fa144c9abe39790308/coverage-7.10.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:bed4a2341b33cd1a7d9ffc47df4a78ee61d3416d43b4adc9e18b7d266650b83e", size = 215229, upload_time = "2025-07-27T14:12:37.759Z" }, - { url = "https://files.pythonhosted.org/packages/e0/59/3c972080b2fa18b6c4510201f6d4dc87159d450627d062cd9ad051134062/coverage-7.10.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ddca1e4f5f4c67980533df01430184c19b5359900e080248bbf4ed6789584d8b", size = 245738, upload_time = "2025-07-27T14:12:39.453Z" }, - { url = "https://files.pythonhosted.org/packages/2e/04/fc0d99d3f809452654e958e1788454f6e27b34e43f8f8598191c8ad13537/coverage-7.10.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:37b69226001d8b7de7126cad7366b0778d36777e4d788c66991455ba817c5b41", size = 248045, upload_time = "2025-07-27T14:12:41.387Z" }, - { url = "https://files.pythonhosted.org/packages/5e/2e/afcbf599e77e0dfbf4c97197747250d13d397d27e185b93987d9eaac053d/coverage-7.10.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2f22102197bcb1722691296f9e589f02b616f874e54a209284dd7b9294b0b7f", size = 249666, upload_time = "2025-07-27T14:12:43.056Z" }, - { url = "https://files.pythonhosted.org/packages/6e/ae/bc47f7f8ecb7a06cbae2bf86a6fa20f479dd902bc80f57cff7730438059d/coverage-7.10.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1e0c768b0f9ac5839dac5cf88992a4bb459e488ee8a1f8489af4cb33b1af00f1", size = 247692, upload_time = "2025-07-27T14:12:44.83Z" }, - { url = "https://files.pythonhosted.org/packages/b6/26/cbfa3092d31ccba8ba7647e4d25753263e818b4547eba446b113d7d1efdf/coverage-7.10.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:991196702d5e0b120a8fef2664e1b9c333a81d36d5f6bcf6b225c0cf8b0451a2", size = 245536, upload_time = "2025-07-27T14:12:46.527Z" }, - { url = "https://files.pythonhosted.org/packages/56/77/9c68e92500e6a1c83d024a70eadcc9a173f21aadd73c4675fe64c9c43fdf/coverage-7.10.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ae8e59e5f4fd85d6ad34c2bb9d74037b5b11be072b8b7e9986beb11f957573d4", size = 246954, upload_time = "2025-07-27T14:12:49.279Z" }, - { url = "https://files.pythonhosted.org/packages/7f/a5/ba96671c5a669672aacd9877a5987c8551501b602827b4e84256da2a30a7/coverage-7.10.1-cp314-cp314-win32.whl", hash = "sha256:042125c89cf74a074984002e165d61fe0e31c7bd40ebb4bbebf07939b5924613", size = 217616, upload_time = "2025-07-27T14:12:51.214Z" }, - { url = "https://files.pythonhosted.org/packages/e7/3c/e1e1eb95fc1585f15a410208c4795db24a948e04d9bde818fe4eb893bc85/coverage-7.10.1-cp314-cp314-win_amd64.whl", hash = "sha256:a22c3bfe09f7a530e2c94c87ff7af867259c91bef87ed2089cd69b783af7b84e", size = 218412, upload_time = "2025-07-27T14:12:53.429Z" }, - { url = "https://files.pythonhosted.org/packages/b0/85/7e1e5be2cb966cba95566ba702b13a572ca744fbb3779df9888213762d67/coverage-7.10.1-cp314-cp314-win_arm64.whl", hash = "sha256:ee6be07af68d9c4fca4027c70cea0c31a0f1bc9cb464ff3c84a1f916bf82e652", size = 216776, upload_time = "2025-07-27T14:12:55.482Z" }, - { url = "https://files.pythonhosted.org/packages/62/0f/5bb8f29923141cca8560fe2217679caf4e0db643872c1945ac7d8748c2a7/coverage-7.10.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d24fb3c0c8ff0d517c5ca5de7cf3994a4cd559cde0315201511dbfa7ab528894", size = 215698, upload_time = "2025-07-27T14:12:57.225Z" }, - { url = "https://files.pythonhosted.org/packages/80/29/547038ffa4e8e4d9e82f7dfc6d152f75fcdc0af146913f0ba03875211f03/coverage-7.10.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1217a54cfd79be20512a67ca81c7da3f2163f51bbfd188aab91054df012154f5", size = 215902, upload_time = "2025-07-27T14:12:59.071Z" }, - { url = "https://files.pythonhosted.org/packages/e1/8a/7aaa8fbfaed900147987a424e112af2e7790e1ac9cd92601e5bd4e1ba60a/coverage-7.10.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:51f30da7a52c009667e02f125737229d7d8044ad84b79db454308033a7808ab2", size = 257230, upload_time = "2025-07-27T14:13:01.248Z" }, - { url = "https://files.pythonhosted.org/packages/e5/1d/c252b5ffac44294e23a0d79dd5acf51749b39795ccc898faeabf7bee903f/coverage-7.10.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ed3718c757c82d920f1c94089066225ca2ad7f00bb904cb72b1c39ebdd906ccb", size = 259194, upload_time = "2025-07-27T14:13:03.247Z" }, - { url = "https://files.pythonhosted.org/packages/16/ad/6c8d9f83d08f3bac2e7507534d0c48d1a4f52c18e6f94919d364edbdfa8f/coverage-7.10.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc452481e124a819ced0c25412ea2e144269ef2f2534b862d9f6a9dae4bda17b", size = 261316, upload_time = "2025-07-27T14:13:04.957Z" }, - { url = "https://files.pythonhosted.org/packages/d6/4e/f9bbf3a36c061e2e0e0f78369c006d66416561a33d2bee63345aee8ee65e/coverage-7.10.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9d6f494c307e5cb9b1e052ec1a471060f1dea092c8116e642e7a23e79d9388ea", size = 258794, upload_time = "2025-07-27T14:13:06.715Z" }, - { url = "https://files.pythonhosted.org/packages/87/82/e600bbe78eb2cb0541751d03cef9314bcd0897e8eea156219c39b685f869/coverage-7.10.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:fc0e46d86905ddd16b85991f1f4919028092b4e511689bbdaff0876bd8aab3dd", size = 256869, upload_time = "2025-07-27T14:13:08.933Z" }, - { url = "https://files.pythonhosted.org/packages/ce/5d/2fc9a9236c5268f68ac011d97cd3a5ad16cc420535369bedbda659fdd9b7/coverage-7.10.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80b9ccd82e30038b61fc9a692a8dc4801504689651b281ed9109f10cc9fe8b4d", size = 257765, upload_time = "2025-07-27T14:13:10.778Z" }, - { url = "https://files.pythonhosted.org/packages/8a/05/b4e00b2bd48a2dc8e1c7d2aea7455f40af2e36484ab2ef06deb85883e9fe/coverage-7.10.1-cp314-cp314t-win32.whl", hash = "sha256:e58991a2b213417285ec866d3cd32db17a6a88061a985dbb7e8e8f13af429c47", size = 218420, upload_time = "2025-07-27T14:13:12.882Z" }, - { url = "https://files.pythonhosted.org/packages/77/fb/d21d05f33ea27ece327422240e69654b5932b0b29e7fbc40fbab3cf199bf/coverage-7.10.1-cp314-cp314t-win_amd64.whl", hash = "sha256:e88dd71e4ecbc49d9d57d064117462c43f40a21a1383507811cf834a4a620651", size = 219536, upload_time = "2025-07-27T14:13:14.718Z" }, - { url = "https://files.pythonhosted.org/packages/a6/68/7fea94b141281ed8be3d1d5c4319a97f2befc3e487ce33657fc64db2c45e/coverage-7.10.1-cp314-cp314t-win_arm64.whl", hash = "sha256:1aadfb06a30c62c2eb82322171fe1f7c288c80ca4156d46af0ca039052814bab", size = 217190, upload_time = "2025-07-27T14:13:16.85Z" }, - { url = "https://files.pythonhosted.org/packages/0f/64/922899cff2c0fd3496be83fa8b81230f5a8d82a2ad30f98370b133c2c83b/coverage-7.10.1-py3-none-any.whl", hash = "sha256:fa2a258aa6bf188eb9a8948f7102a83da7c430a0dce918dbd8b60ef8fcb772d7", size = 206597, upload_time = "2025-07-27T14:13:37.221Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/87/0e/66dbd4c6a7f0758a8d18044c048779ba21fb94856e1edcf764bd5403e710/coverage-7.10.1.tar.gz", hash = "sha256:ae2b4856f29ddfe827106794f3589949a57da6f0d38ab01e24ec35107979ba57", size = 819938 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/3f/b051feeb292400bd22d071fdf933b3ad389a8cef5c80c7866ed0c7414b9e/coverage-7.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b7dc7f0a75a7eaa4584e5843c873c561b12602439d2351ee28c7478186c4da4", size = 214934 }, + { url = "https://files.pythonhosted.org/packages/f8/e4/a61b27d5c4c2d185bdfb0bfe9d15ab4ac4f0073032665544507429ae60eb/coverage-7.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:607f82389f0ecafc565813aa201a5cade04f897603750028dd660fb01797265e", size = 215173 }, + { url = "https://files.pythonhosted.org/packages/8a/01/40a6ee05b60d02d0bc53742ad4966e39dccd450aafb48c535a64390a3552/coverage-7.10.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f7da31a1ba31f1c1d4d5044b7c5813878adae1f3af8f4052d679cc493c7328f4", size = 246190 }, + { url = "https://files.pythonhosted.org/packages/11/ef/a28d64d702eb583c377255047281305dc5a5cfbfb0ee36e721f78255adb6/coverage-7.10.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:51fe93f3fe4f5d8483d51072fddc65e717a175490804e1942c975a68e04bf97a", size = 248618 }, + { url = "https://files.pythonhosted.org/packages/6a/ad/73d018bb0c8317725370c79d69b5c6e0257df84a3b9b781bda27a438a3be/coverage-7.10.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3e59d00830da411a1feef6ac828b90bbf74c9b6a8e87b8ca37964925bba76dbe", size = 250081 }, + { url = "https://files.pythonhosted.org/packages/2d/dd/496adfbbb4503ebca5d5b2de8bed5ec00c0a76558ffc5b834fd404166bc9/coverage-7.10.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:924563481c27941229cb4e16eefacc35da28563e80791b3ddc5597b062a5c386", size = 247990 }, + { url = "https://files.pythonhosted.org/packages/18/3c/a9331a7982facfac0d98a4a87b36ae666fe4257d0f00961a3a9ef73e015d/coverage-7.10.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ca79146ee421b259f8131f153102220b84d1a5e6fb9c8aed13b3badfd1796de6", size = 246191 }, + { url = "https://files.pythonhosted.org/packages/62/0c/75345895013b83f7afe92ec595e15a9a525ede17491677ceebb2ba5c3d85/coverage-7.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2b225a06d227f23f386fdc0eab471506d9e644be699424814acc7d114595495f", size = 247400 }, + { url = "https://files.pythonhosted.org/packages/e2/a9/98b268cfc5619ef9df1d5d34fee408ecb1542d9fd43d467e5c2f28668cd4/coverage-7.10.1-cp312-cp312-win32.whl", hash = "sha256:5ba9a8770effec5baaaab1567be916c87d8eea0c9ad11253722d86874d885eca", size = 217338 }, + { url = "https://files.pythonhosted.org/packages/fe/31/22a5440e4d1451f253c5cd69fdcead65e92ef08cd4ec237b8756dc0b20a7/coverage-7.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:9eb245a8d8dd0ad73b4062135a251ec55086fbc2c42e0eb9725a9b553fba18a3", size = 218125 }, + { url = "https://files.pythonhosted.org/packages/d6/2b/40d9f0ce7ee839f08a43c5bfc9d05cec28aaa7c9785837247f96cbe490b9/coverage-7.10.1-cp312-cp312-win_arm64.whl", hash = "sha256:7718060dd4434cc719803a5e526838a5d66e4efa5dc46d2b25c21965a9c6fcc4", size = 216523 }, + { url = "https://files.pythonhosted.org/packages/ef/72/135ff5fef09b1ffe78dbe6fcf1e16b2e564cd35faeacf3d63d60d887f12d/coverage-7.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ebb08d0867c5a25dffa4823377292a0ffd7aaafb218b5d4e2e106378b1061e39", size = 214960 }, + { url = "https://files.pythonhosted.org/packages/b1/aa/73a5d1a6fc08ca709a8177825616aa95ee6bf34d522517c2595484a3e6c9/coverage-7.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f32a95a83c2e17422f67af922a89422cd24c6fa94041f083dd0bb4f6057d0bc7", size = 215220 }, + { url = "https://files.pythonhosted.org/packages/8d/40/3124fdd45ed3772a42fc73ca41c091699b38a2c3bd4f9cb564162378e8b6/coverage-7.10.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c4c746d11c8aba4b9f58ca8bfc6fbfd0da4efe7960ae5540d1a1b13655ee8892", size = 245772 }, + { url = "https://files.pythonhosted.org/packages/42/62/a77b254822efa8c12ad59e8039f2bc3df56dc162ebda55e1943e35ba31a5/coverage-7.10.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7f39edd52c23e5c7ed94e0e4bf088928029edf86ef10b95413e5ea670c5e92d7", size = 248116 }, + { url = "https://files.pythonhosted.org/packages/1d/01/8101f062f472a3a6205b458d18ef0444a63ae5d36a8a5ed5dd0f6167f4db/coverage-7.10.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab6e19b684981d0cd968906e293d5628e89faacb27977c92f3600b201926b994", size = 249554 }, + { url = "https://files.pythonhosted.org/packages/8f/7b/e51bc61573e71ff7275a4f167aecbd16cb010aefdf54bcd8b0a133391263/coverage-7.10.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5121d8cf0eacb16133501455d216bb5f99899ae2f52d394fe45d59229e6611d0", size = 247766 }, + { url = "https://files.pythonhosted.org/packages/4b/71/1c96d66a51d4204a9d6d12df53c4071d87e110941a2a1fe94693192262f5/coverage-7.10.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:df1c742ca6f46a6f6cbcaef9ac694dc2cb1260d30a6a2f5c68c5f5bcfee1cfd7", size = 245735 }, + { url = "https://files.pythonhosted.org/packages/13/d5/efbc2ac4d35ae2f22ef6df2ca084c60e13bd9378be68655e3268c80349ab/coverage-7.10.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:40f9a38676f9c073bf4b9194707aa1eb97dca0e22cc3766d83879d72500132c7", size = 247118 }, + { url = "https://files.pythonhosted.org/packages/d1/22/073848352bec28ca65f2b6816b892fcf9a31abbef07b868487ad15dd55f1/coverage-7.10.1-cp313-cp313-win32.whl", hash = "sha256:2348631f049e884839553b9974f0821d39241c6ffb01a418efce434f7eba0fe7", size = 217381 }, + { url = "https://files.pythonhosted.org/packages/b7/df/df6a0ff33b042f000089bd11b6bb034bab073e2ab64a56e78ed882cba55d/coverage-7.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:4072b31361b0d6d23f750c524f694e1a417c1220a30d3ef02741eed28520c48e", size = 218152 }, + { url = "https://files.pythonhosted.org/packages/30/e3/5085ca849a40ed6b47cdb8f65471c2f754e19390b5a12fa8abd25cbfaa8f/coverage-7.10.1-cp313-cp313-win_arm64.whl", hash = "sha256:3e31dfb8271937cab9425f19259b1b1d1f556790e98eb266009e7a61d337b6d4", size = 216559 }, + { url = "https://files.pythonhosted.org/packages/cc/93/58714efbfdeb547909feaabe1d67b2bdd59f0597060271b9c548d5efb529/coverage-7.10.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1c4f679c6b573a5257af6012f167a45be4c749c9925fd44d5178fd641ad8bf72", size = 215677 }, + { url = "https://files.pythonhosted.org/packages/c0/0c/18eaa5897e7e8cb3f8c45e563e23e8a85686b4585e29d53cacb6bc9cb340/coverage-7.10.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:871ebe8143da284bd77b84a9136200bd638be253618765d21a1fce71006d94af", size = 215899 }, + { url = "https://files.pythonhosted.org/packages/84/c1/9d1affacc3c75b5a184c140377701bbf14fc94619367f07a269cd9e4fed6/coverage-7.10.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:998c4751dabf7d29b30594af416e4bf5091f11f92a8d88eb1512c7ba136d1ed7", size = 257140 }, + { url = "https://files.pythonhosted.org/packages/3d/0f/339bc6b8fa968c346df346068cca1f24bdea2ddfa93bb3dc2e7749730962/coverage-7.10.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:780f750a25e7749d0af6b3631759c2c14f45de209f3faaa2398312d1c7a22759", size = 259005 }, + { url = "https://files.pythonhosted.org/packages/c8/22/89390864b92ea7c909079939b71baba7e5b42a76bf327c1d615bd829ba57/coverage-7.10.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:590bdba9445df4763bdbebc928d8182f094c1f3947a8dc0fc82ef014dbdd8324", size = 261143 }, + { url = "https://files.pythonhosted.org/packages/2c/56/3d04d89017c0c41c7a71bd69b29699d919b6bbf2649b8b2091240b97dd6a/coverage-7.10.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b2df80cb6a2af86d300e70acb82e9b79dab2c1e6971e44b78dbfc1a1e736b53", size = 258735 }, + { url = "https://files.pythonhosted.org/packages/cb/40/312252c8afa5ca781063a09d931f4b9409dc91526cd0b5a2b84143ffafa2/coverage-7.10.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d6a558c2725bfb6337bf57c1cd366c13798bfd3bfc9e3dd1f4a6f6fc95a4605f", size = 256871 }, + { url = "https://files.pythonhosted.org/packages/1f/2b/564947d5dede068215aaddb9e05638aeac079685101462218229ddea9113/coverage-7.10.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e6150d167f32f2a54690e572e0a4c90296fb000a18e9b26ab81a6489e24e78dd", size = 257692 }, + { url = "https://files.pythonhosted.org/packages/93/1b/c8a867ade85cb26d802aea2209b9c2c80613b9c122baa8c8ecea6799648f/coverage-7.10.1-cp313-cp313t-win32.whl", hash = "sha256:d946a0c067aa88be4a593aad1236493313bafaa27e2a2080bfe88db827972f3c", size = 218059 }, + { url = "https://files.pythonhosted.org/packages/a1/fe/cd4ab40570ae83a516bf5e754ea4388aeedd48e660e40c50b7713ed4f930/coverage-7.10.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e37c72eaccdd5ed1130c67a92ad38f5b2af66eeff7b0abe29534225db2ef7b18", size = 219150 }, + { url = "https://files.pythonhosted.org/packages/8d/16/6e5ed5854be6d70d0c39e9cb9dd2449f2c8c34455534c32c1a508c7dbdb5/coverage-7.10.1-cp313-cp313t-win_arm64.whl", hash = "sha256:89ec0ffc215c590c732918c95cd02b55c7d0f569d76b90bb1a5e78aa340618e4", size = 217014 }, + { url = "https://files.pythonhosted.org/packages/54/8e/6d0bfe9c3d7121cf936c5f8b03e8c3da1484fb801703127dba20fb8bd3c7/coverage-7.10.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:166d89c57e877e93d8827dac32cedae6b0277ca684c6511497311249f35a280c", size = 214951 }, + { url = "https://files.pythonhosted.org/packages/f2/29/e3e51a8c653cf2174c60532aafeb5065cea0911403fa144c9abe39790308/coverage-7.10.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:bed4a2341b33cd1a7d9ffc47df4a78ee61d3416d43b4adc9e18b7d266650b83e", size = 215229 }, + { url = "https://files.pythonhosted.org/packages/e0/59/3c972080b2fa18b6c4510201f6d4dc87159d450627d062cd9ad051134062/coverage-7.10.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ddca1e4f5f4c67980533df01430184c19b5359900e080248bbf4ed6789584d8b", size = 245738 }, + { url = "https://files.pythonhosted.org/packages/2e/04/fc0d99d3f809452654e958e1788454f6e27b34e43f8f8598191c8ad13537/coverage-7.10.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:37b69226001d8b7de7126cad7366b0778d36777e4d788c66991455ba817c5b41", size = 248045 }, + { url = "https://files.pythonhosted.org/packages/5e/2e/afcbf599e77e0dfbf4c97197747250d13d397d27e185b93987d9eaac053d/coverage-7.10.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2f22102197bcb1722691296f9e589f02b616f874e54a209284dd7b9294b0b7f", size = 249666 }, + { url = "https://files.pythonhosted.org/packages/6e/ae/bc47f7f8ecb7a06cbae2bf86a6fa20f479dd902bc80f57cff7730438059d/coverage-7.10.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1e0c768b0f9ac5839dac5cf88992a4bb459e488ee8a1f8489af4cb33b1af00f1", size = 247692 }, + { url = "https://files.pythonhosted.org/packages/b6/26/cbfa3092d31ccba8ba7647e4d25753263e818b4547eba446b113d7d1efdf/coverage-7.10.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:991196702d5e0b120a8fef2664e1b9c333a81d36d5f6bcf6b225c0cf8b0451a2", size = 245536 }, + { url = "https://files.pythonhosted.org/packages/56/77/9c68e92500e6a1c83d024a70eadcc9a173f21aadd73c4675fe64c9c43fdf/coverage-7.10.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ae8e59e5f4fd85d6ad34c2bb9d74037b5b11be072b8b7e9986beb11f957573d4", size = 246954 }, + { url = "https://files.pythonhosted.org/packages/7f/a5/ba96671c5a669672aacd9877a5987c8551501b602827b4e84256da2a30a7/coverage-7.10.1-cp314-cp314-win32.whl", hash = "sha256:042125c89cf74a074984002e165d61fe0e31c7bd40ebb4bbebf07939b5924613", size = 217616 }, + { url = "https://files.pythonhosted.org/packages/e7/3c/e1e1eb95fc1585f15a410208c4795db24a948e04d9bde818fe4eb893bc85/coverage-7.10.1-cp314-cp314-win_amd64.whl", hash = "sha256:a22c3bfe09f7a530e2c94c87ff7af867259c91bef87ed2089cd69b783af7b84e", size = 218412 }, + { url = "https://files.pythonhosted.org/packages/b0/85/7e1e5be2cb966cba95566ba702b13a572ca744fbb3779df9888213762d67/coverage-7.10.1-cp314-cp314-win_arm64.whl", hash = "sha256:ee6be07af68d9c4fca4027c70cea0c31a0f1bc9cb464ff3c84a1f916bf82e652", size = 216776 }, + { url = "https://files.pythonhosted.org/packages/62/0f/5bb8f29923141cca8560fe2217679caf4e0db643872c1945ac7d8748c2a7/coverage-7.10.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d24fb3c0c8ff0d517c5ca5de7cf3994a4cd559cde0315201511dbfa7ab528894", size = 215698 }, + { url = "https://files.pythonhosted.org/packages/80/29/547038ffa4e8e4d9e82f7dfc6d152f75fcdc0af146913f0ba03875211f03/coverage-7.10.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1217a54cfd79be20512a67ca81c7da3f2163f51bbfd188aab91054df012154f5", size = 215902 }, + { url = "https://files.pythonhosted.org/packages/e1/8a/7aaa8fbfaed900147987a424e112af2e7790e1ac9cd92601e5bd4e1ba60a/coverage-7.10.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:51f30da7a52c009667e02f125737229d7d8044ad84b79db454308033a7808ab2", size = 257230 }, + { url = "https://files.pythonhosted.org/packages/e5/1d/c252b5ffac44294e23a0d79dd5acf51749b39795ccc898faeabf7bee903f/coverage-7.10.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ed3718c757c82d920f1c94089066225ca2ad7f00bb904cb72b1c39ebdd906ccb", size = 259194 }, + { url = "https://files.pythonhosted.org/packages/16/ad/6c8d9f83d08f3bac2e7507534d0c48d1a4f52c18e6f94919d364edbdfa8f/coverage-7.10.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc452481e124a819ced0c25412ea2e144269ef2f2534b862d9f6a9dae4bda17b", size = 261316 }, + { url = "https://files.pythonhosted.org/packages/d6/4e/f9bbf3a36c061e2e0e0f78369c006d66416561a33d2bee63345aee8ee65e/coverage-7.10.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9d6f494c307e5cb9b1e052ec1a471060f1dea092c8116e642e7a23e79d9388ea", size = 258794 }, + { url = "https://files.pythonhosted.org/packages/87/82/e600bbe78eb2cb0541751d03cef9314bcd0897e8eea156219c39b685f869/coverage-7.10.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:fc0e46d86905ddd16b85991f1f4919028092b4e511689bbdaff0876bd8aab3dd", size = 256869 }, + { url = "https://files.pythonhosted.org/packages/ce/5d/2fc9a9236c5268f68ac011d97cd3a5ad16cc420535369bedbda659fdd9b7/coverage-7.10.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80b9ccd82e30038b61fc9a692a8dc4801504689651b281ed9109f10cc9fe8b4d", size = 257765 }, + { url = "https://files.pythonhosted.org/packages/8a/05/b4e00b2bd48a2dc8e1c7d2aea7455f40af2e36484ab2ef06deb85883e9fe/coverage-7.10.1-cp314-cp314t-win32.whl", hash = "sha256:e58991a2b213417285ec866d3cd32db17a6a88061a985dbb7e8e8f13af429c47", size = 218420 }, + { url = "https://files.pythonhosted.org/packages/77/fb/d21d05f33ea27ece327422240e69654b5932b0b29e7fbc40fbab3cf199bf/coverage-7.10.1-cp314-cp314t-win_amd64.whl", hash = "sha256:e88dd71e4ecbc49d9d57d064117462c43f40a21a1383507811cf834a4a620651", size = 219536 }, + { url = "https://files.pythonhosted.org/packages/a6/68/7fea94b141281ed8be3d1d5c4319a97f2befc3e487ce33657fc64db2c45e/coverage-7.10.1-cp314-cp314t-win_arm64.whl", hash = "sha256:1aadfb06a30c62c2eb82322171fe1f7c288c80ca4156d46af0ca039052814bab", size = 217190 }, + { url = "https://files.pythonhosted.org/packages/0f/64/922899cff2c0fd3496be83fa8b81230f5a8d82a2ad30f98370b133c2c83b/coverage-7.10.1-py3-none-any.whl", hash = "sha256:fa2a258aa6bf188eb9a8948f7102a83da7c430a0dce918dbd8b60ef8fcb772d7", size = 206597 }, ] [[package]] name = "csscompressor" version = "0.9.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/2a/8c3ac3d8bc94e6de8d7ae270bb5bc437b210bb9d6d9e46630c98f4abd20c/csscompressor-0.9.5.tar.gz", hash = "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05", size = 237808, upload_time = "2017-11-26T21:13:08.238Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/2a/8c3ac3d8bc94e6de8d7ae270bb5bc437b210bb9d6d9e46630c98f4abd20c/csscompressor-0.9.5.tar.gz", hash = "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05", size = 237808 } [[package]] name = "debugpy" version = "1.8.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444, upload_time = "2025-04-10T19:46:10.981Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268, upload_time = "2025-04-10T19:46:26.044Z" }, - { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077, upload_time = "2025-04-10T19:46:27.464Z" }, - { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127, upload_time = "2025-04-10T19:46:29.467Z" }, - { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249, upload_time = "2025-04-10T19:46:31.538Z" }, - { url = "https://files.pythonhosted.org/packages/4d/e4/395c792b243f2367d84202dc33689aa3d910fb9826a7491ba20fc9e261f5/debugpy-1.8.14-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:329a15d0660ee09fec6786acdb6e0443d595f64f5d096fc3e3ccf09a4259033f", size = 2485676, upload_time = "2025-04-10T19:46:32.96Z" }, - { url = "https://files.pythonhosted.org/packages/ba/f1/6f2ee3f991327ad9e4c2f8b82611a467052a0fb0e247390192580e89f7ff/debugpy-1.8.14-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f920c7f9af409d90f5fd26e313e119d908b0dd2952c2393cd3247a462331f15", size = 4217514, upload_time = "2025-04-10T19:46:34.336Z" }, - { url = "https://files.pythonhosted.org/packages/79/28/b9d146f8f2dc535c236ee09ad3e5ac899adb39d7a19b49f03ac95d216beb/debugpy-1.8.14-cp313-cp313-win32.whl", hash = "sha256:3784ec6e8600c66cbdd4ca2726c72d8ca781e94bce2f396cc606d458146f8f4e", size = 5254756, upload_time = "2025-04-10T19:46:36.199Z" }, - { url = "https://files.pythonhosted.org/packages/e0/62/a7b4a57013eac4ccaef6977966e6bec5c63906dd25a86e35f155952e29a1/debugpy-1.8.14-cp313-cp313-win_amd64.whl", hash = "sha256:684eaf43c95a3ec39a96f1f5195a7ff3d4144e4a18d69bb66beeb1a6de605d6e", size = 5297119, upload_time = "2025-04-10T19:46:38.141Z" }, - { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230, upload_time = "2025-04-10T19:46:54.077Z" }, + { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268 }, + { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077 }, + { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127 }, + { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249 }, + { url = "https://files.pythonhosted.org/packages/4d/e4/395c792b243f2367d84202dc33689aa3d910fb9826a7491ba20fc9e261f5/debugpy-1.8.14-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:329a15d0660ee09fec6786acdb6e0443d595f64f5d096fc3e3ccf09a4259033f", size = 2485676 }, + { url = "https://files.pythonhosted.org/packages/ba/f1/6f2ee3f991327ad9e4c2f8b82611a467052a0fb0e247390192580e89f7ff/debugpy-1.8.14-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f920c7f9af409d90f5fd26e313e119d908b0dd2952c2393cd3247a462331f15", size = 4217514 }, + { url = "https://files.pythonhosted.org/packages/79/28/b9d146f8f2dc535c236ee09ad3e5ac899adb39d7a19b49f03ac95d216beb/debugpy-1.8.14-cp313-cp313-win32.whl", hash = "sha256:3784ec6e8600c66cbdd4ca2726c72d8ca781e94bce2f396cc606d458146f8f4e", size = 5254756 }, + { url = "https://files.pythonhosted.org/packages/e0/62/a7b4a57013eac4ccaef6977966e6bec5c63906dd25a86e35f155952e29a1/debugpy-1.8.14-cp313-cp313-win_amd64.whl", hash = "sha256:684eaf43c95a3ec39a96f1f5195a7ff3d4144e4a18d69bb66beeb1a6de605d6e", size = 5297119 }, + { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230 }, ] [[package]] name = "decorator" version = "5.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload_time = "2025-02-24T04:41:34.073Z" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload_time = "2025-02-24T04:41:32.565Z" }, + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 }, ] [[package]] name = "distlib" version = "0.3.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload_time = "2024-10-09T18:35:47.551Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923 } wheels = [ - { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload_time = "2024-10-09T18:35:44.272Z" }, + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973 }, ] [[package]] name = "et-xmlfile" version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234, upload_time = "2024-10-25T17:25:40.039Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059, upload_time = "2024-10-25T17:25:39.051Z" }, + { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059 }, ] [[package]] name = "execnet" version = "2.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/ff/b4c0dc78fbe20c3e59c0c7334de0c27eb4001a2b2017999af398bf730817/execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3", size = 166524, upload_time = "2024-04-08T09:04:19.245Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/ff/b4c0dc78fbe20c3e59c0c7334de0c27eb4001a2b2017999af398bf730817/execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3", size = 166524 } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/09/2aea36ff60d16dd8879bdb2f5b3ee0ba8d08cbbdcdfe870e695ce3784385/execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc", size = 40612, upload_time = "2024-04-08T09:04:17.414Z" }, + { url = "https://files.pythonhosted.org/packages/43/09/2aea36ff60d16dd8879bdb2f5b3ee0ba8d08cbbdcdfe870e695ce3784385/execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc", size = 40612 }, ] [[package]] name = "executing" version = "2.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload_time = "2025-01-22T15:41:29.403Z" } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload_time = "2025-01-22T15:41:25.929Z" }, + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 }, ] [[package]] name = "filelock" version = "3.18.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload_time = "2025-03-14T07:11:40.47Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload_time = "2025-03-14T07:11:39.145Z" }, + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, ] [[package]] @@ -371,9 +371,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/b0/8a21e330561c65653d010ef112bf38f60890051d244ede197ddaa08e50c1/flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656", size = 15816, upload_time = "2024-03-09T03:21:07.555Z" } +sdist = { url = "https://files.pythonhosted.org/packages/55/b0/8a21e330561c65653d010ef112bf38f60890051d244ede197ddaa08e50c1/flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656", size = 15816 } wheels = [ - { url = "https://files.pythonhosted.org/packages/27/cd/c883e1a7c447479d6e13985565080e3fea88ab5a107c21684c813dba1875/flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32", size = 13263, upload_time = "2024-03-09T03:21:05.635Z" }, + { url = "https://files.pythonhosted.org/packages/27/cd/c883e1a7c447479d6e13985565080e3fea88ab5a107c21684c813dba1875/flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32", size = 13263 }, ] [[package]] @@ -383,9 +383,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/82/99/b4de7e39e8eaf8207ba1a8fa2241dd98b2ba72ae6e16960d8351736d8702/flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2", size = 31799, upload_time = "2024-11-07T02:00:56.249Z" } +sdist = { url = "https://files.pythonhosted.org/packages/82/99/b4de7e39e8eaf8207ba1a8fa2241dd98b2ba72ae6e16960d8351736d8702/flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2", size = 31799 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/5e/3be305568fe5f34448807976dc82fc151d76c3e0e03958f34770286278c1/flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846", size = 27625, upload_time = "2024-11-07T02:00:54.523Z" }, + { url = "https://files.pythonhosted.org/packages/fe/5e/3be305568fe5f34448807976dc82fc151d76c3e0e03958f34770286278c1/flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846", size = 27625 }, ] [[package]] @@ -413,20 +413,20 @@ dependencies = [ { name = "typing-extensions" }, { name = "validators" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/11/d0/c94675a1c1b8c12fd68489e2b4a924f80a2b122199cd986c58a5136197d2/frictionless-5.18.1.tar.gz", hash = "sha256:daeaf55f896eeb52b43e62600466af9528fe0aeeebd28b1b917e13322f370a8b", size = 74372478, upload_time = "2025-03-25T21:32:50.081Z" } +sdist = { url = "https://files.pythonhosted.org/packages/11/d0/c94675a1c1b8c12fd68489e2b4a924f80a2b122199cd986c58a5136197d2/frictionless-5.18.1.tar.gz", hash = "sha256:daeaf55f896eeb52b43e62600466af9528fe0aeeebd28b1b917e13322f370a8b", size = 74372478 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/7a/dac76d31584bb4f874ae860490c9465f5b59bd8c110f68fbbb07aba48845/frictionless-5.18.1-py3-none-any.whl", hash = "sha256:3f4c87469a89bdb88e9cc318088553a26f3d14839098f95c183ea01fc89628dd", size = 531615, upload_time = "2025-03-25T21:32:45.534Z" }, + { url = "https://files.pythonhosted.org/packages/a9/7a/dac76d31584bb4f874ae860490c9465f5b59bd8c110f68fbbb07aba48845/frictionless-5.18.1-py3-none-any.whl", hash = "sha256:3f4c87469a89bdb88e9cc318088553a26f3d14839098f95c183ea01fc89628dd", size = 531615 }, ] [[package]] name = "frozendict" version = "2.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/59/19eb300ba28e7547538bdf603f1c6c34793240a90e1a7b61b65d8517e35e/frozendict-2.4.6.tar.gz", hash = "sha256:df7cd16470fbd26fc4969a208efadc46319334eb97def1ddf48919b351192b8e", size = 316416, upload_time = "2024-10-13T12:15:32.449Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/59/19eb300ba28e7547538bdf603f1c6c34793240a90e1a7b61b65d8517e35e/frozendict-2.4.6.tar.gz", hash = "sha256:df7cd16470fbd26fc4969a208efadc46319334eb97def1ddf48919b351192b8e", size = 316416 } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/13/d9839089b900fa7b479cce495d62110cddc4bd5630a04d8469916c0e79c5/frozendict-2.4.6-py311-none-any.whl", hash = "sha256:d065db6a44db2e2375c23eac816f1a022feb2fa98cbb50df44a9e83700accbea", size = 16148, upload_time = "2024-10-13T12:15:26.839Z" }, - { url = "https://files.pythonhosted.org/packages/ba/d0/d482c39cee2ab2978a892558cf130681d4574ea208e162da8958b31e9250/frozendict-2.4.6-py312-none-any.whl", hash = "sha256:49344abe90fb75f0f9fdefe6d4ef6d4894e640fadab71f11009d52ad97f370b9", size = 16146, upload_time = "2024-10-13T12:15:28.16Z" }, - { url = "https://files.pythonhosted.org/packages/a5/8e/b6bf6a0de482d7d7d7a2aaac8fdc4a4d0bb24a809f5ddd422aa7060eb3d2/frozendict-2.4.6-py313-none-any.whl", hash = "sha256:7134a2bb95d4a16556bb5f2b9736dceb6ea848fa5b6f3f6c2d6dba93b44b4757", size = 16146, upload_time = "2024-10-13T12:15:29.495Z" }, + { url = "https://files.pythonhosted.org/packages/04/13/d9839089b900fa7b479cce495d62110cddc4bd5630a04d8469916c0e79c5/frozendict-2.4.6-py311-none-any.whl", hash = "sha256:d065db6a44db2e2375c23eac816f1a022feb2fa98cbb50df44a9e83700accbea", size = 16148 }, + { url = "https://files.pythonhosted.org/packages/ba/d0/d482c39cee2ab2978a892558cf130681d4574ea208e162da8958b31e9250/frozendict-2.4.6-py312-none-any.whl", hash = "sha256:49344abe90fb75f0f9fdefe6d4ef6d4894e640fadab71f11009d52ad97f370b9", size = 16146 }, + { url = "https://files.pythonhosted.org/packages/a5/8e/b6bf6a0de482d7d7d7a2aaac8fdc4a4d0bb24a809f5ddd422aa7060eb3d2/frozendict-2.4.6-py313-none-any.whl", hash = "sha256:7134a2bb95d4a16556bb5f2b9736dceb6ea848fa5b6f3f6c2d6dba93b44b4757", size = 16146 }, ] [[package]] @@ -436,9 +436,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943, upload_time = "2022-05-02T15:47:16.11Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034, upload_time = "2022-05-02T15:47:14.552Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, ] [[package]] @@ -448,9 +448,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "smmap" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684, upload_time = "2025-01-02T07:20:46.413Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794, upload_time = "2025-01-02T07:20:43.624Z" }, + { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794 }, ] [[package]] @@ -460,9 +460,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "gitdb" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196, upload_time = "2025-01-02T07:32:43.59Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599, upload_time = "2025-01-02T07:32:40.731Z" }, + { url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599 }, ] [[package]] @@ -472,9 +472,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a9/3e/5aa9a61f7c3c47b0b52a1d930302992229d191bf4bc76447b324b731510a/griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b", size = 395137, upload_time = "2025-04-23T11:29:09.147Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/3e/5aa9a61f7c3c47b0b52a1d930302992229d191bf4bc76447b324b731510a/griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b", size = 395137 } wheels = [ - { url = "https://files.pythonhosted.org/packages/58/c6/5c20af38c2a57c15d87f7f38bee77d63c1d2a3689f74fefaf35915dd12b2/griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75", size = 129303, upload_time = "2025-04-23T11:29:07.145Z" }, + { url = "https://files.pythonhosted.org/packages/58/c6/5c20af38c2a57c15d87f7f38bee77d63c1d2a3689f74fefaf35915dd12b2/griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75", size = 129303 }, ] [[package]] @@ -486,9 +486,9 @@ dependencies = [ { name = "libhxl" }, { name = "tenacity" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/88/96/ac55b204699cd216a22a943f64aafac32bba818f624a5d44879d60368fad/hdx_python_country-3.9.6.tar.gz", hash = "sha256:7791f4b9c5ae3e62e82795c266a3ca6ee23c7bab706c91533844edf2ebd9bb18", size = 529232, upload_time = "2025-07-09T22:56:32.162Z" } +sdist = { url = "https://files.pythonhosted.org/packages/88/96/ac55b204699cd216a22a943f64aafac32bba818f624a5d44879d60368fad/hdx_python_country-3.9.6.tar.gz", hash = "sha256:7791f4b9c5ae3e62e82795c266a3ca6ee23c7bab706c91533844edf2ebd9bb18", size = 529232 } wheels = [ - { url = "https://files.pythonhosted.org/packages/45/90/646b56ec12df459799510d6d0869ada210ad9f765ad104e50dae4867eb50/hdx_python_country-3.9.6-py3-none-any.whl", hash = "sha256:4c1833bdf3cbd14dfff0146e0bdcae5763931d344fce5f1b42493dc8751e3d4a", size = 55554, upload_time = "2025-07-09T22:56:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/45/90/646b56ec12df459799510d6d0869ada210ad9f765ad104e50dae4867eb50/hdx_python_country-3.9.6-py3-none-any.whl", hash = "sha256:4c1833bdf3cbd14dfff0146e0bdcae5763931d344fce5f1b42493dc8751e3d4a", size = 55554 }, ] [[package]] @@ -511,9 +511,9 @@ dependencies = [ { name = "xlsx2csv" }, { name = "xlwt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/de/b812b6b242f47db98ed043b7f3211c81443f0e59959377e97a93915331c0/hdx_python_utilities-3.8.7.tar.gz", hash = "sha256:41212cd5b682777d393ee991b546f1b4326665d981714a829e5483101fd15a60", size = 656009, upload_time = "2025-05-14T02:31:28.578Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/de/b812b6b242f47db98ed043b7f3211c81443f0e59959377e97a93915331c0/hdx_python_utilities-3.8.7.tar.gz", hash = "sha256:41212cd5b682777d393ee991b546f1b4326665d981714a829e5483101fd15a60", size = 656009 } wheels = [ - { url = "https://files.pythonhosted.org/packages/db/38/44f2a0b83e103bb3d47dbc66dfaa4aaa65c34c60fd26d5445fb2bbd3c09a/hdx_python_utilities-3.8.7-py3-none-any.whl", hash = "sha256:47e67810e81a481504b8653c429b31b8c237da594dc27604075c8e79077c8640", size = 60787, upload_time = "2025-05-14T02:31:26.794Z" }, + { url = "https://files.pythonhosted.org/packages/db/38/44f2a0b83e103bb3d47dbc66dfaa4aaa65c34c60fd26d5445fb2bbd3c09a/hdx_python_utilities-3.8.7-py3-none-any.whl", hash = "sha256:47e67810e81a481504b8653c429b31b8c237da594dc27604075c8e79077c8640", size = 60787 }, ] [[package]] @@ -521,75 +521,75 @@ name = "htmlmin2" version = "0.1.13" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/be/31/a76f4bfa885f93b8167cb4c85cf32b54d1f64384d0b897d45bc6d19b7b45/htmlmin2-0.1.13-py3-none-any.whl", hash = "sha256:75609f2a42e64f7ce57dbff28a39890363bde9e7e5885db633317efbdf8c79a2", size = 34486, upload_time = "2023-03-14T21:28:30.388Z" }, + { url = "https://files.pythonhosted.org/packages/be/31/a76f4bfa885f93b8167cb4c85cf32b54d1f64384d0b897d45bc6d19b7b45/htmlmin2-0.1.13-py3-none-any.whl", hash = "sha256:75609f2a42e64f7ce57dbff28a39890363bde9e7e5885db633317efbdf8c79a2", size = 34486 }, ] [[package]] name = "humanize" version = "4.12.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/22/d1/bbc4d251187a43f69844f7fd8941426549bbe4723e8ff0a7441796b0789f/humanize-4.12.3.tar.gz", hash = "sha256:8430be3a615106fdfceb0b2c1b41c4c98c6b0fc5cc59663a5539b111dd325fb0", size = 80514, upload_time = "2025-04-30T11:51:07.98Z" } +sdist = { url = "https://files.pythonhosted.org/packages/22/d1/bbc4d251187a43f69844f7fd8941426549bbe4723e8ff0a7441796b0789f/humanize-4.12.3.tar.gz", hash = "sha256:8430be3a615106fdfceb0b2c1b41c4c98c6b0fc5cc59663a5539b111dd325fb0", size = 80514 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/1e/62a2ec3104394a2975a2629eec89276ede9dbe717092f6966fcf963e1bf0/humanize-4.12.3-py3-none-any.whl", hash = "sha256:2cbf6370af06568fa6d2da77c86edb7886f3160ecd19ee1ffef07979efc597f6", size = 128487, upload_time = "2025-04-30T11:51:06.468Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1e/62a2ec3104394a2975a2629eec89276ede9dbe717092f6966fcf963e1bf0/humanize-4.12.3-py3-none-any.whl", hash = "sha256:2cbf6370af06568fa6d2da77c86edb7886f3160ecd19ee1ffef07979efc597f6", size = 128487 }, ] [[package]] name = "identify" version = "2.6.12" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/88/d193a27416618628a5eea64e3223acd800b40749a96ffb322a9b55a49ed1/identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6", size = 99254, upload_time = "2025-05-23T20:37:53.3Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/88/d193a27416618628a5eea64e3223acd800b40749a96ffb322a9b55a49ed1/identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6", size = 99254 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/cd/18f8da995b658420625f7ef13f037be53ae04ec5ad33f9b718240dcfd48c/identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2", size = 99145, upload_time = "2025-05-23T20:37:51.495Z" }, + { url = "https://files.pythonhosted.org/packages/7a/cd/18f8da995b658420625f7ef13f037be53ae04ec5ad33f9b718240dcfd48c/identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2", size = 99145 }, ] [[package]] name = "idna" version = "3.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload_time = "2024-09-15T18:07:39.745Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload_time = "2024-09-15T18:07:37.964Z" }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, ] [[package]] name = "ijson" version = "3.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a3/4f/1cfeada63f5fce87536651268ddf5cca79b8b4bbb457aee4e45777964a0a/ijson-3.4.0.tar.gz", hash = "sha256:5f74dcbad9d592c428d3ca3957f7115a42689ee7ee941458860900236ae9bb13", size = 65782, upload_time = "2025-05-08T02:37:20.135Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/ec/317ee5b2d13e50448833ead3aa906659a32b376191f6abc2a7c6112d2b27/ijson-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:956b148f88259a80a9027ffbe2d91705fae0c004fbfba3e5a24028fbe72311a9", size = 87212, upload_time = "2025-05-08T02:35:51.835Z" }, - { url = "https://files.pythonhosted.org/packages/f8/43/b06c96ced30cacecc5d518f89b0fd1c98c294a30ff88848b70ed7b7f72a1/ijson-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:06b89960f5c721106394c7fba5760b3f67c515b8eb7d80f612388f5eca2f4621", size = 59175, upload_time = "2025-05-08T02:35:52.988Z" }, - { url = "https://files.pythonhosted.org/packages/e9/df/b4aeafb7ecde463130840ee9be36130823ec94a00525049bf700883378b8/ijson-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a0bb591cf250dd7e9dfab69d634745a7f3272d31cfe879f9156e0a081fd97ee", size = 59011, upload_time = "2025-05-08T02:35:54.394Z" }, - { url = "https://files.pythonhosted.org/packages/e3/7c/a80b8e361641609507f62022089626d4b8067f0826f51e1c09e4ba86eba8/ijson-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e92de999977f4c6b660ffcf2b8d59604ccd531edcbfde05b642baf283e0de8", size = 146094, upload_time = "2025-05-08T02:35:55.601Z" }, - { url = "https://files.pythonhosted.org/packages/01/44/fa416347b9a802e3646c6ff377fc3278bd7d6106e17beb339514b6a3184e/ijson-3.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e9602157a5b869d44b6896e64f502c712a312fcde044c2e586fccb85d3e316e", size = 137903, upload_time = "2025-05-08T02:35:56.814Z" }, - { url = "https://files.pythonhosted.org/packages/24/c6/41a9ad4d42df50ff6e70fdce79b034f09b914802737ebbdc141153d8d791/ijson-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e83660edb931a425b7ff662eb49db1f10d30ca6d4d350e5630edbed098bc01", size = 148339, upload_time = "2025-05-08T02:35:58.595Z" }, - { url = "https://files.pythonhosted.org/packages/5f/6f/7d01efda415b8502dce67e067ed9e8a124f53e763002c02207e542e1a2f1/ijson-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:49bf8eac1c7b7913073865a859c215488461f7591b4fa6a33c14b51cb73659d0", size = 149383, upload_time = "2025-05-08T02:36:00.197Z" }, - { url = "https://files.pythonhosted.org/packages/95/6c/0d67024b9ecb57916c5e5ab0350251c9fe2f86dc9c8ca2b605c194bdad6a/ijson-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:160b09273cb42019f1811469508b0a057d19f26434d44752bde6f281da6d3f32", size = 141580, upload_time = "2025-05-08T02:36:01.998Z" }, - { url = "https://files.pythonhosted.org/packages/06/43/e10edcc1c6a3b619294de835e7678bfb3a1b8a75955f3689fd66a1e9e7b4/ijson-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2019ff4e6f354aa00c76c8591bd450899111c61f2354ad55cc127e2ce2492c44", size = 150280, upload_time = "2025-05-08T02:36:03.926Z" }, - { url = "https://files.pythonhosted.org/packages/07/84/1cbeee8e8190a1ebe6926569a92cf1fa80ddb380c129beb6f86559e1bb24/ijson-3.4.0-cp312-cp312-win32.whl", hash = "sha256:931c007bf6bb8330705429989b2deed6838c22b63358a330bf362b6e458ba0bf", size = 51512, upload_time = "2025-05-08T02:36:05.595Z" }, - { url = "https://files.pythonhosted.org/packages/66/13/530802bc391c95be6fe9f96e9aa427d94067e7c0b7da7a9092344dc44c4b/ijson-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:71523f2b64cb856a820223e94d23e88369f193017ecc789bb4de198cc9d349eb", size = 54081, upload_time = "2025-05-08T02:36:07.099Z" }, - { url = "https://files.pythonhosted.org/packages/77/b3/b1d2eb2745e5204ec7a25365a6deb7868576214feb5e109bce368fb692c9/ijson-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e8d96f88d75196a61c9d9443de2b72c2d4a7ba9456ff117b57ae3bba23a54256", size = 87216, upload_time = "2025-05-08T02:36:08.414Z" }, - { url = "https://files.pythonhosted.org/packages/b1/cd/cd6d340087617f8cc9bedbb21d974542fe2f160ed0126b8288d3499a469b/ijson-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c45906ce2c1d3b62f15645476fc3a6ca279549127f01662a39ca5ed334a00cf9", size = 59170, upload_time = "2025-05-08T02:36:09.604Z" }, - { url = "https://files.pythonhosted.org/packages/3e/4d/32d3a9903b488d3306e3c8288f6ee4217d2eea82728261db03a1045eb5d1/ijson-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4ab4bc2119b35c4363ea49f29563612237cae9413d2fbe54b223be098b97bc9e", size = 59013, upload_time = "2025-05-08T02:36:10.696Z" }, - { url = "https://files.pythonhosted.org/packages/d5/c8/db15465ab4b0b477cee5964c8bfc94bf8c45af8e27a23e1ad78d1926e587/ijson-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97b0a9b5a15e61dfb1f14921ea4e0dba39f3a650df6d8f444ddbc2b19b479ff1", size = 146564, upload_time = "2025-05-08T02:36:11.916Z" }, - { url = "https://files.pythonhosted.org/packages/c4/d8/0755545bc122473a9a434ab90e0f378780e603d75495b1ca3872de757873/ijson-3.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3047bb994dabedf11de11076ed1147a307924b6e5e2df6784fb2599c4ad8c60", size = 137917, upload_time = "2025-05-08T02:36:13.532Z" }, - { url = "https://files.pythonhosted.org/packages/d0/c6/aeb89c8939ebe3f534af26c8c88000c5e870dbb6ae33644c21a4531f87d2/ijson-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68c83161b052e9f5dc8191acbc862bb1e63f8a35344cb5cd0db1afd3afd487a6", size = 148897, upload_time = "2025-05-08T02:36:14.813Z" }, - { url = "https://files.pythonhosted.org/packages/be/0e/7ef6e9b372106f2682a4a32b3c65bf86bb471a1670e4dac242faee4a7d3f/ijson-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1eebd9b6c20eb1dffde0ae1f0fbb4aeacec2eb7b89adb5c7c0449fc9fd742760", size = 149711, upload_time = "2025-05-08T02:36:16.476Z" }, - { url = "https://files.pythonhosted.org/packages/d1/5d/9841c3ed75bcdabf19b3202de5f862a9c9c86ce5c7c9d95fa32347fdbf5f/ijson-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:13fb6d5c35192c541421f3ee81239d91fc15a8d8f26c869250f941f4b346a86c", size = 141691, upload_time = "2025-05-08T02:36:18.044Z" }, - { url = "https://files.pythonhosted.org/packages/d5/d2/ce74e17218dba292e9be10a44ed0c75439f7958cdd263adb0b5b92d012d5/ijson-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:28b7196ff7b37c4897c547a28fa4876919696739fc91c1f347651c9736877c69", size = 150738, upload_time = "2025-05-08T02:36:19.483Z" }, - { url = "https://files.pythonhosted.org/packages/4e/43/dcc480f94453b1075c9911d4755b823f3ace275761bb37b40139f22109ca/ijson-3.4.0-cp313-cp313-win32.whl", hash = "sha256:3c2691d2da42629522140f77b99587d6f5010440d58d36616f33bc7bdc830cc3", size = 51512, upload_time = "2025-05-08T02:36:20.99Z" }, - { url = "https://files.pythonhosted.org/packages/35/dd/d8c5f15efd85ba51e6e11451ebe23d779361a9ec0d192064c2a8c3cdfcb8/ijson-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:c4554718c275a044c47eb3874f78f2c939f300215d9031e785a6711cc51b83fc", size = 54074, upload_time = "2025-05-08T02:36:22.075Z" }, - { url = "https://files.pythonhosted.org/packages/79/73/24ad8cd106203419c4d22bed627e02e281d66b83e91bc206a371893d0486/ijson-3.4.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:915a65e3f3c0eee2ea937bc62aaedb6c14cc1e8f0bb9f3f4fb5a9e2bbfa4b480", size = 91694, upload_time = "2025-05-08T02:36:23.289Z" }, - { url = "https://files.pythonhosted.org/packages/17/2d/f7f680984bcb7324a46a4c2df3bd73cf70faef0acfeb85a3f811abdfd590/ijson-3.4.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:afbe9748707684b6c5adc295c4fdcf27765b300aec4d484e14a13dca4e5c0afa", size = 61390, upload_time = "2025-05-08T02:36:24.42Z" }, - { url = "https://files.pythonhosted.org/packages/09/a1/f3ca7bab86f95bdb82494739e71d271410dfefce4590785d511669127145/ijson-3.4.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d823f8f321b4d8d5fa020d0a84f089fec5d52b7c0762430476d9f8bf95bbc1a9", size = 61140, upload_time = "2025-05-08T02:36:26.708Z" }, - { url = "https://files.pythonhosted.org/packages/51/79/dd340df3d4fc7771c95df29997956b92ed0570fe7b616d1792fea9ad93f2/ijson-3.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0a2c54f3becf76881188beefd98b484b1d3bd005769a740d5b433b089fa23", size = 214739, upload_time = "2025-05-08T02:36:27.973Z" }, - { url = "https://files.pythonhosted.org/packages/59/f0/85380b7f51d1f5fb7065d76a7b623e02feca920cc678d329b2eccc0011e0/ijson-3.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ced19a83ab09afa16257a0b15bc1aa888dbc555cb754be09d375c7f8d41051f2", size = 198338, upload_time = "2025-05-08T02:36:29.496Z" }, - { url = "https://files.pythonhosted.org/packages/a5/cd/313264cf2ec42e0f01d198c49deb7b6fadeb793b3685e20e738eb6b3fa13/ijson-3.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8100f9885eff1f38d35cef80ef759a1bbf5fc946349afa681bd7d0e681b7f1a0", size = 207515, upload_time = "2025-05-08T02:36:30.981Z" }, - { url = "https://files.pythonhosted.org/packages/12/94/bf14457aa87ea32641f2db577c9188ef4e4ae373478afef422b31fc7f309/ijson-3.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d7bcc3f7f21b0f703031ecd15209b1284ea51b2a329d66074b5261de3916c1eb", size = 210081, upload_time = "2025-05-08T02:36:32.403Z" }, - { url = "https://files.pythonhosted.org/packages/7d/b4/eaee39e290e40e52d665db9bd1492cfdce86bd1e47948e0440db209c6023/ijson-3.4.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2dcb190227b09dd171bdcbfe4720fddd574933c66314818dfb3960c8a6246a77", size = 199253, upload_time = "2025-05-08T02:36:33.861Z" }, - { url = "https://files.pythonhosted.org/packages/c5/9c/e09c7b9ac720a703ab115b221b819f149ed54c974edfff623c1e925e57da/ijson-3.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:eda4cfb1d49c6073a901735aaa62e39cb7ab47f3ad7bb184862562f776f1fa8a", size = 203816, upload_time = "2025-05-08T02:36:35.348Z" }, - { url = "https://files.pythonhosted.org/packages/7c/14/acd304f412e32d16a2c12182b9d78206bb0ae35354d35664f45db05c1b3b/ijson-3.4.0-cp313-cp313t-win32.whl", hash = "sha256:0772638efa1f3b72b51736833404f1cbd2f5beeb9c1a3d392e7d385b9160cba7", size = 53760, upload_time = "2025-05-08T02:36:36.608Z" }, - { url = "https://files.pythonhosted.org/packages/2f/24/93dd0a467191590a5ed1fc2b35842bca9d09900d001e00b0b497c0208ef6/ijson-3.4.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3d8a0d67f36e4fb97c61a724456ef0791504b16ce6f74917a31c2e92309bbeb9", size = 56948, upload_time = "2025-05-08T02:36:37.849Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/a3/4f/1cfeada63f5fce87536651268ddf5cca79b8b4bbb457aee4e45777964a0a/ijson-3.4.0.tar.gz", hash = "sha256:5f74dcbad9d592c428d3ca3957f7115a42689ee7ee941458860900236ae9bb13", size = 65782 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ec/317ee5b2d13e50448833ead3aa906659a32b376191f6abc2a7c6112d2b27/ijson-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:956b148f88259a80a9027ffbe2d91705fae0c004fbfba3e5a24028fbe72311a9", size = 87212 }, + { url = "https://files.pythonhosted.org/packages/f8/43/b06c96ced30cacecc5d518f89b0fd1c98c294a30ff88848b70ed7b7f72a1/ijson-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:06b89960f5c721106394c7fba5760b3f67c515b8eb7d80f612388f5eca2f4621", size = 59175 }, + { url = "https://files.pythonhosted.org/packages/e9/df/b4aeafb7ecde463130840ee9be36130823ec94a00525049bf700883378b8/ijson-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a0bb591cf250dd7e9dfab69d634745a7f3272d31cfe879f9156e0a081fd97ee", size = 59011 }, + { url = "https://files.pythonhosted.org/packages/e3/7c/a80b8e361641609507f62022089626d4b8067f0826f51e1c09e4ba86eba8/ijson-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e92de999977f4c6b660ffcf2b8d59604ccd531edcbfde05b642baf283e0de8", size = 146094 }, + { url = "https://files.pythonhosted.org/packages/01/44/fa416347b9a802e3646c6ff377fc3278bd7d6106e17beb339514b6a3184e/ijson-3.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e9602157a5b869d44b6896e64f502c712a312fcde044c2e586fccb85d3e316e", size = 137903 }, + { url = "https://files.pythonhosted.org/packages/24/c6/41a9ad4d42df50ff6e70fdce79b034f09b914802737ebbdc141153d8d791/ijson-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e83660edb931a425b7ff662eb49db1f10d30ca6d4d350e5630edbed098bc01", size = 148339 }, + { url = "https://files.pythonhosted.org/packages/5f/6f/7d01efda415b8502dce67e067ed9e8a124f53e763002c02207e542e1a2f1/ijson-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:49bf8eac1c7b7913073865a859c215488461f7591b4fa6a33c14b51cb73659d0", size = 149383 }, + { url = "https://files.pythonhosted.org/packages/95/6c/0d67024b9ecb57916c5e5ab0350251c9fe2f86dc9c8ca2b605c194bdad6a/ijson-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:160b09273cb42019f1811469508b0a057d19f26434d44752bde6f281da6d3f32", size = 141580 }, + { url = "https://files.pythonhosted.org/packages/06/43/e10edcc1c6a3b619294de835e7678bfb3a1b8a75955f3689fd66a1e9e7b4/ijson-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2019ff4e6f354aa00c76c8591bd450899111c61f2354ad55cc127e2ce2492c44", size = 150280 }, + { url = "https://files.pythonhosted.org/packages/07/84/1cbeee8e8190a1ebe6926569a92cf1fa80ddb380c129beb6f86559e1bb24/ijson-3.4.0-cp312-cp312-win32.whl", hash = "sha256:931c007bf6bb8330705429989b2deed6838c22b63358a330bf362b6e458ba0bf", size = 51512 }, + { url = "https://files.pythonhosted.org/packages/66/13/530802bc391c95be6fe9f96e9aa427d94067e7c0b7da7a9092344dc44c4b/ijson-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:71523f2b64cb856a820223e94d23e88369f193017ecc789bb4de198cc9d349eb", size = 54081 }, + { url = "https://files.pythonhosted.org/packages/77/b3/b1d2eb2745e5204ec7a25365a6deb7868576214feb5e109bce368fb692c9/ijson-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e8d96f88d75196a61c9d9443de2b72c2d4a7ba9456ff117b57ae3bba23a54256", size = 87216 }, + { url = "https://files.pythonhosted.org/packages/b1/cd/cd6d340087617f8cc9bedbb21d974542fe2f160ed0126b8288d3499a469b/ijson-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c45906ce2c1d3b62f15645476fc3a6ca279549127f01662a39ca5ed334a00cf9", size = 59170 }, + { url = "https://files.pythonhosted.org/packages/3e/4d/32d3a9903b488d3306e3c8288f6ee4217d2eea82728261db03a1045eb5d1/ijson-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4ab4bc2119b35c4363ea49f29563612237cae9413d2fbe54b223be098b97bc9e", size = 59013 }, + { url = "https://files.pythonhosted.org/packages/d5/c8/db15465ab4b0b477cee5964c8bfc94bf8c45af8e27a23e1ad78d1926e587/ijson-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97b0a9b5a15e61dfb1f14921ea4e0dba39f3a650df6d8f444ddbc2b19b479ff1", size = 146564 }, + { url = "https://files.pythonhosted.org/packages/c4/d8/0755545bc122473a9a434ab90e0f378780e603d75495b1ca3872de757873/ijson-3.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3047bb994dabedf11de11076ed1147a307924b6e5e2df6784fb2599c4ad8c60", size = 137917 }, + { url = "https://files.pythonhosted.org/packages/d0/c6/aeb89c8939ebe3f534af26c8c88000c5e870dbb6ae33644c21a4531f87d2/ijson-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68c83161b052e9f5dc8191acbc862bb1e63f8a35344cb5cd0db1afd3afd487a6", size = 148897 }, + { url = "https://files.pythonhosted.org/packages/be/0e/7ef6e9b372106f2682a4a32b3c65bf86bb471a1670e4dac242faee4a7d3f/ijson-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1eebd9b6c20eb1dffde0ae1f0fbb4aeacec2eb7b89adb5c7c0449fc9fd742760", size = 149711 }, + { url = "https://files.pythonhosted.org/packages/d1/5d/9841c3ed75bcdabf19b3202de5f862a9c9c86ce5c7c9d95fa32347fdbf5f/ijson-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:13fb6d5c35192c541421f3ee81239d91fc15a8d8f26c869250f941f4b346a86c", size = 141691 }, + { url = "https://files.pythonhosted.org/packages/d5/d2/ce74e17218dba292e9be10a44ed0c75439f7958cdd263adb0b5b92d012d5/ijson-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:28b7196ff7b37c4897c547a28fa4876919696739fc91c1f347651c9736877c69", size = 150738 }, + { url = "https://files.pythonhosted.org/packages/4e/43/dcc480f94453b1075c9911d4755b823f3ace275761bb37b40139f22109ca/ijson-3.4.0-cp313-cp313-win32.whl", hash = "sha256:3c2691d2da42629522140f77b99587d6f5010440d58d36616f33bc7bdc830cc3", size = 51512 }, + { url = "https://files.pythonhosted.org/packages/35/dd/d8c5f15efd85ba51e6e11451ebe23d779361a9ec0d192064c2a8c3cdfcb8/ijson-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:c4554718c275a044c47eb3874f78f2c939f300215d9031e785a6711cc51b83fc", size = 54074 }, + { url = "https://files.pythonhosted.org/packages/79/73/24ad8cd106203419c4d22bed627e02e281d66b83e91bc206a371893d0486/ijson-3.4.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:915a65e3f3c0eee2ea937bc62aaedb6c14cc1e8f0bb9f3f4fb5a9e2bbfa4b480", size = 91694 }, + { url = "https://files.pythonhosted.org/packages/17/2d/f7f680984bcb7324a46a4c2df3bd73cf70faef0acfeb85a3f811abdfd590/ijson-3.4.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:afbe9748707684b6c5adc295c4fdcf27765b300aec4d484e14a13dca4e5c0afa", size = 61390 }, + { url = "https://files.pythonhosted.org/packages/09/a1/f3ca7bab86f95bdb82494739e71d271410dfefce4590785d511669127145/ijson-3.4.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d823f8f321b4d8d5fa020d0a84f089fec5d52b7c0762430476d9f8bf95bbc1a9", size = 61140 }, + { url = "https://files.pythonhosted.org/packages/51/79/dd340df3d4fc7771c95df29997956b92ed0570fe7b616d1792fea9ad93f2/ijson-3.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0a2c54f3becf76881188beefd98b484b1d3bd005769a740d5b433b089fa23", size = 214739 }, + { url = "https://files.pythonhosted.org/packages/59/f0/85380b7f51d1f5fb7065d76a7b623e02feca920cc678d329b2eccc0011e0/ijson-3.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ced19a83ab09afa16257a0b15bc1aa888dbc555cb754be09d375c7f8d41051f2", size = 198338 }, + { url = "https://files.pythonhosted.org/packages/a5/cd/313264cf2ec42e0f01d198c49deb7b6fadeb793b3685e20e738eb6b3fa13/ijson-3.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8100f9885eff1f38d35cef80ef759a1bbf5fc946349afa681bd7d0e681b7f1a0", size = 207515 }, + { url = "https://files.pythonhosted.org/packages/12/94/bf14457aa87ea32641f2db577c9188ef4e4ae373478afef422b31fc7f309/ijson-3.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d7bcc3f7f21b0f703031ecd15209b1284ea51b2a329d66074b5261de3916c1eb", size = 210081 }, + { url = "https://files.pythonhosted.org/packages/7d/b4/eaee39e290e40e52d665db9bd1492cfdce86bd1e47948e0440db209c6023/ijson-3.4.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2dcb190227b09dd171bdcbfe4720fddd574933c66314818dfb3960c8a6246a77", size = 199253 }, + { url = "https://files.pythonhosted.org/packages/c5/9c/e09c7b9ac720a703ab115b221b819f149ed54c974edfff623c1e925e57da/ijson-3.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:eda4cfb1d49c6073a901735aaa62e39cb7ab47f3ad7bb184862562f776f1fa8a", size = 203816 }, + { url = "https://files.pythonhosted.org/packages/7c/14/acd304f412e32d16a2c12182b9d78206bb0ae35354d35664f45db05c1b3b/ijson-3.4.0-cp313-cp313t-win32.whl", hash = "sha256:0772638efa1f3b72b51736833404f1cbd2f5beeb9c1a3d392e7d385b9160cba7", size = 53760 }, + { url = "https://files.pythonhosted.org/packages/2f/24/93dd0a467191590a5ed1fc2b35842bca9d09900d001e00b0b497c0208ef6/ijson-3.4.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3d8a0d67f36e4fb97c61a724456ef0791504b16ce6f74917a31c2e92309bbeb9", size = 56948 }, ] [[package]] @@ -602,18 +602,18 @@ dependencies = [ { name = "pandas" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/af/45/24521d229aec5c058d998510794567788bc7b1b764dfaa02fb8e0aeda4b7/imf_reader-1.3.0.tar.gz", hash = "sha256:3f3130dd793a112fdd5913a7c7b733847a5a07fd70dee14d57624ae4e021a141", size = 12990, upload_time = "2025-02-06T09:16:10.723Z" } +sdist = { url = "https://files.pythonhosted.org/packages/af/45/24521d229aec5c058d998510794567788bc7b1b764dfaa02fb8e0aeda4b7/imf_reader-1.3.0.tar.gz", hash = "sha256:3f3130dd793a112fdd5913a7c7b733847a5a07fd70dee14d57624ae4e021a141", size = 12990 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/5b/3a063116950f2aa2b450120e78162bb5b87098dde3b75ae90210c6f2c099/imf_reader-1.3.0-py3-none-any.whl", hash = "sha256:3515c6644dfef44d5fda89f5bb3786b4f83da20f49184911f0df2386782106f1", size = 16520, upload_time = "2025-02-06T09:16:09.042Z" }, + { url = "https://files.pythonhosted.org/packages/fd/5b/3a063116950f2aa2b450120e78162bb5b87098dde3b75ae90210c6f2c099/imf_reader-1.3.0-py3-none-any.whl", hash = "sha256:3515c6644dfef44d5fda89f5bb3786b4f83da20f49184911f0df2386782106f1", size = 16520 }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload_time = "2025-03-19T20:09:59.721Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload_time = "2025-03-19T20:10:01.071Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, ] [[package]] @@ -635,9 +635,9 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367, upload_time = "2024-07-01T14:07:22.543Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367 } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173, upload_time = "2024-07-01T14:07:19.603Z" }, + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173 }, ] [[package]] @@ -656,9 +656,9 @@ dependencies = [ { name = "stack-data" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/80/406f9e3bde1c1fd9bf5a0be9d090f8ae623e401b7670d8f6fdf2ab679891/ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270", size = 4385338, upload_time = "2025-07-01T11:11:30.606Z" } +sdist = { url = "https://files.pythonhosted.org/packages/54/80/406f9e3bde1c1fd9bf5a0be9d090f8ae623e401b7670d8f6fdf2ab679891/ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270", size = 4385338 } wheels = [ - { url = "https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066", size = 611021, upload_time = "2025-07-01T11:11:27.85Z" }, + { url = "https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066", size = 611021 }, ] [[package]] @@ -668,18 +668,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload_time = "2025-01-17T11:24:34.505Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload_time = "2025-01-17T11:24:33.271Z" }, + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 }, ] [[package]] name = "isodate" version = "0.7.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload_time = "2024-10-08T23:04:11.5Z" } +sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705 } wheels = [ - { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload_time = "2024-10-08T23:04:09.501Z" }, + { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320 }, ] [[package]] @@ -689,9 +689,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "parso" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload_time = "2024-11-11T01:41:42.873Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload_time = "2024-11-11T01:41:40.175Z" }, + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 }, ] [[package]] @@ -701,25 +701,25 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload_time = "2025-03-05T20:05:02.478Z" } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload_time = "2025-03-05T20:05:00.369Z" }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, ] [[package]] name = "joblib" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475, upload_time = "2025-05-23T12:04:37.097Z" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746, upload_time = "2025-05-23T12:04:35.124Z" }, + { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746 }, ] [[package]] name = "jsmin" version = "3.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5e/73/e01e4c5e11ad0494f4407a3f623ad4d87714909f50b17a06ed121034ff6e/jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc", size = 13925, upload_time = "2022-01-16T20:35:59.13Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/73/e01e4c5e11ad0494f4407a3f623ad4d87714909f50b17a06ed121034ff6e/jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc", size = 13925 } [[package]] name = "jsonlines" @@ -728,9 +728,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/35/87/bcda8e46c88d0e34cad2f09ee2d0c7f5957bccdb9791b0b934ec84d84be4/jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74", size = 11359, upload_time = "2023-09-01T12:34:44.187Z" } +sdist = { url = "https://files.pythonhosted.org/packages/35/87/bcda8e46c88d0e34cad2f09ee2d0c7f5957bccdb9791b0b934ec84d84be4/jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74", size = 11359 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/62/d9ba6323b9202dd2fe166beab8a86d29465c41a0288cbe229fac60c1ab8d/jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55", size = 8701, upload_time = "2023-09-01T12:34:42.563Z" }, + { url = "https://files.pythonhosted.org/packages/f8/62/d9ba6323b9202dd2fe166beab8a86d29465c41a0288cbe229fac60c1ab8d/jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55", size = 8701 }, ] [[package]] @@ -740,9 +740,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ply" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838, upload_time = "2024-10-11T15:41:42.404Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838 } wheels = [ - { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105, upload_time = "2024-11-20T17:58:30.418Z" }, + { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105 }, ] [[package]] @@ -755,9 +755,9 @@ dependencies = [ { name = "referencing" }, { name = "rpds-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480, upload_time = "2025-05-26T18:48:10.459Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709, upload_time = "2025-05-26T18:48:08.417Z" }, + { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709 }, ] [[package]] @@ -767,9 +767,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "referencing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload_time = "2025-04-23T12:34:07.418Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513 } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload_time = "2025-04-23T12:34:05.422Z" }, + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437 }, ] [[package]] @@ -783,9 +783,9 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload_time = "2024-09-17T10:44:17.613Z" } +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019 } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload_time = "2024-09-17T10:44:15.218Z" }, + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105 }, ] [[package]] @@ -797,9 +797,9 @@ dependencies = [ { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload_time = "2025-05-27T07:38:16.655Z" } +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload_time = "2025-05-27T07:38:15.137Z" }, + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880 }, ] [[package]] @@ -818,7 +818,7 @@ dependencies = [ { name = "wheel" }, { name = "xlrd3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/ad/c1dafb7c59e685692a2eeafce83245b7c5f46e05881fdb77a0cbb7c19c74/libhxl-5.2.2.tar.gz", hash = "sha256:3a74d9f23561bfcefd20e5229c574bc68dfc114fdb6ba1ba684d9e9d7ea52483", size = 127736, upload_time = "2024-10-25T09:19:11.202Z" } +sdist = { url = "https://files.pythonhosted.org/packages/63/ad/c1dafb7c59e685692a2eeafce83245b7c5f46e05881fdb77a0cbb7c19c74/libhxl-5.2.2.tar.gz", hash = "sha256:3a74d9f23561bfcefd20e5229c574bc68dfc114fdb6ba1ba684d9e9d7ea52483", size = 127736 } [[package]] name = "license-expression" @@ -827,9 +827,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "boolean-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/40/71/d89bb0e71b1415453980fd32315f2a037aad9f7f70f695c7cec7035feb13/license_expression-30.4.4.tar.gz", hash = "sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd", size = 186402, upload_time = "2025-07-22T11:13:32.17Z" } +sdist = { url = "https://files.pythonhosted.org/packages/40/71/d89bb0e71b1415453980fd32315f2a037aad9f7f70f695c7cec7035feb13/license_expression-30.4.4.tar.gz", hash = "sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd", size = 186402 } wheels = [ - { url = "https://files.pythonhosted.org/packages/af/40/791891d4c0c4dab4c5e187c17261cedc26285fd41541577f900470a45a4d/license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4", size = 120615, upload_time = "2025-07-22T11:13:31.217Z" }, + { url = "https://files.pythonhosted.org/packages/af/40/791891d4c0c4dab4c5e187c17261cedc26285fd41541577f900470a45a4d/license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4", size = 120615 }, ] [[package]] @@ -840,18 +840,18 @@ dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "win32-setctime", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559, upload_time = "2024-12-06T11:20:56.608Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595, upload_time = "2024-12-06T11:20:54.538Z" }, + { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595 }, ] [[package]] name = "markdown" version = "3.8.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/c2/4ab49206c17f75cb08d6311171f2d65798988db4360c4d1485bd0eedd67c/markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45", size = 362071, upload_time = "2025-06-19T17:12:44.483Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/c2/4ab49206c17f75cb08d6311171f2d65798988db4360c4d1485bd0eedd67c/markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45", size = 362071 } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/2b/34cc11786bc00d0f04d0f5fdc3a2b1ae0b6239eef72d3d345805f9ad92a1/markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24", size = 106827, upload_time = "2025-06-19T17:12:42.994Z" }, + { url = "https://files.pythonhosted.org/packages/96/2b/34cc11786bc00d0f04d0f5fdc3a2b1ae0b6239eef72d3d345805f9ad92a1/markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24", size = 106827 }, ] [[package]] @@ -861,56 +861,56 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload_time = "2023-06-03T06:41:14.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 } wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload_time = "2023-06-03T06:41:11.019Z" }, + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, ] [[package]] name = "marko" version = "2.1.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/dc/c8cadbd83de1b38d95a48568b445a5553005ebdd32e00a333ca940113db4/marko-2.1.4.tar.gz", hash = "sha256:dd7d66f3706732bf8f994790e674649a4fd0a6c67f16b80246f30de8e16a1eac", size = 142795, upload_time = "2025-06-13T03:25:50.857Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/dc/c8cadbd83de1b38d95a48568b445a5553005ebdd32e00a333ca940113db4/marko-2.1.4.tar.gz", hash = "sha256:dd7d66f3706732bf8f994790e674649a4fd0a6c67f16b80246f30de8e16a1eac", size = 142795 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c3/66/49e3691d14898fb6e34ccb337c7677dfb7e18269ed170f12e4b85315eae6/marko-2.1.4-py3-none-any.whl", hash = "sha256:81c2b9f570ca485bc356678d9ba1a1b3eb78b4a315d01f3ded25442fdc796990", size = 42186, upload_time = "2025-06-13T03:25:49.858Z" }, + { url = "https://files.pythonhosted.org/packages/c3/66/49e3691d14898fb6e34ccb337c7677dfb7e18269ed170f12e4b85315eae6/marko-2.1.4-py3-none-any.whl", hash = "sha256:81c2b9f570ca485bc356678d9ba1a1b3eb78b4a315d01f3ded25442fdc796990", size = 42186 }, ] [[package]] name = "markupsafe" version = "3.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload_time = "2024-10-18T15:21:54.129Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload_time = "2024-10-18T15:21:13.777Z" }, - { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload_time = "2024-10-18T15:21:14.822Z" }, - { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload_time = "2024-10-18T15:21:15.642Z" }, - { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload_time = "2024-10-18T15:21:17.133Z" }, - { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload_time = "2024-10-18T15:21:18.064Z" }, - { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload_time = "2024-10-18T15:21:18.859Z" }, - { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload_time = "2024-10-18T15:21:19.671Z" }, - { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload_time = "2024-10-18T15:21:20.971Z" }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload_time = "2024-10-18T15:21:22.646Z" }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload_time = "2024-10-18T15:21:23.499Z" }, - { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload_time = "2024-10-18T15:21:24.577Z" }, - { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload_time = "2024-10-18T15:21:25.382Z" }, - { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload_time = "2024-10-18T15:21:26.199Z" }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload_time = "2024-10-18T15:21:27.029Z" }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload_time = "2024-10-18T15:21:27.846Z" }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload_time = "2024-10-18T15:21:28.744Z" }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload_time = "2024-10-18T15:21:29.545Z" }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload_time = "2024-10-18T15:21:30.366Z" }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload_time = "2024-10-18T15:21:31.207Z" }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload_time = "2024-10-18T15:21:32.032Z" }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload_time = "2024-10-18T15:21:33.625Z" }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload_time = "2024-10-18T15:21:34.611Z" }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload_time = "2024-10-18T15:21:35.398Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload_time = "2024-10-18T15:21:36.231Z" }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload_time = "2024-10-18T15:21:37.073Z" }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload_time = "2024-10-18T15:21:37.932Z" }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload_time = "2024-10-18T15:21:39.799Z" }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload_time = "2024-10-18T15:21:40.813Z" }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload_time = "2024-10-18T15:21:41.814Z" }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload_time = "2024-10-18T15:21:42.784Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, ] [[package]] @@ -920,27 +920,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload_time = "2024-04-15T13:44:44.803Z" } +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload_time = "2024-04-15T13:44:43.265Z" }, + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 }, ] [[package]] name = "mdurl" version = "0.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload_time = "2022-08-14T12:40:10.846Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload_time = "2022-08-14T12:40:09.779Z" }, + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, ] [[package]] name = "mergedeep" version = "1.3.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661, upload_time = "2021-02-05T18:55:30.623Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload_time = "2021-02-05T18:55:29.583Z" }, + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, ] [[package]] @@ -962,9 +962,9 @@ dependencies = [ { name = "pyyaml-env-tag" }, { name = "watchdog" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159, upload_time = "2024-08-30T12:24:06.899Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload_time = "2024-08-30T12:24:05.054Z" }, + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, ] [[package]] @@ -974,9 +974,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/b7/efc75b7870a4fecbc9a05ba94ce622462a40b5a13670d00036c5b47bf82f/mkdocs-autolinks-plugin-0.7.1.tar.gz", hash = "sha256:445ddb9b417b7795856c30801bb430773186c1daf210bdeecf8305f55a47d151", size = 4375, upload_time = "2023-08-04T14:42:25.67Z" } +sdist = { url = "https://files.pythonhosted.org/packages/63/b7/efc75b7870a4fecbc9a05ba94ce622462a40b5a13670d00036c5b47bf82f/mkdocs-autolinks-plugin-0.7.1.tar.gz", hash = "sha256:445ddb9b417b7795856c30801bb430773186c1daf210bdeecf8305f55a47d151", size = 4375 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/9c/ee3d81a799b8b0b73a89625bcbf3c58cd369c8a26a1b415413edea9bf259/mkdocs_autolinks_plugin-0.7.1-py3-none-any.whl", hash = "sha256:5c6c17f6649b68e79a9ef0b2648d59f3072e18002b90ee1586a64c505f11ab12", size = 4235, upload_time = "2023-08-04T14:42:23.955Z" }, + { url = "https://files.pythonhosted.org/packages/d4/9c/ee3d81a799b8b0b73a89625bcbf3c58cd369c8a26a1b415413edea9bf259/mkdocs_autolinks_plugin-0.7.1-py3-none-any.whl", hash = "sha256:5c6c17f6649b68e79a9ef0b2648d59f3072e18002b90ee1586a64c505f11ab12", size = 4235 }, ] [[package]] @@ -988,9 +988,9 @@ dependencies = [ { name = "markupsafe" }, { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/47/0c/c9826f35b99c67fa3a7cddfa094c1a6c43fafde558c309c6e4403e5b37dc/mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749", size = 54961, upload_time = "2025-05-20T13:09:09.886Z" } +sdist = { url = "https://files.pythonhosted.org/packages/47/0c/c9826f35b99c67fa3a7cddfa094c1a6c43fafde558c309c6e4403e5b37dc/mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749", size = 54961 } wheels = [ - { url = "https://files.pythonhosted.org/packages/87/dc/fc063b78f4b769d1956319351704e23ebeba1e9e1d6a41b4b602325fd7e4/mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13", size = 24969, upload_time = "2025-05-20T13:09:08.237Z" }, + { url = "https://files.pythonhosted.org/packages/87/dc/fc063b78f4b769d1956319351704e23ebeba1e9e1d6a41b4b602325fd7e4/mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13", size = 24969 }, ] [[package]] @@ -1002,9 +1002,9 @@ dependencies = [ { name = "platformdirs" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload_time = "2023-11-20T17:51:09.981Z" } +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521, upload_time = "2023-11-20T17:51:08.587Z" }, + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, ] [[package]] @@ -1017,9 +1017,9 @@ dependencies = [ { name = "mkdocs" }, { name = "pytz" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/f8/a17ec39a4fc314d40cc96afdc1d401e393ebd4f42309d454cc940a2cf38a/mkdocs_git_revision_date_localized_plugin-1.4.7.tar.gz", hash = "sha256:10a49eff1e1c3cb766e054b9d8360c904ce4fe8c33ac3f6cc083ac6459c91953", size = 450473, upload_time = "2025-05-28T18:26:20.697Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/f8/a17ec39a4fc314d40cc96afdc1d401e393ebd4f42309d454cc940a2cf38a/mkdocs_git_revision_date_localized_plugin-1.4.7.tar.gz", hash = "sha256:10a49eff1e1c3cb766e054b9d8360c904ce4fe8c33ac3f6cc083ac6459c91953", size = 450473 } wheels = [ - { url = "https://files.pythonhosted.org/packages/53/b6/106fcc15287e7228658fbd0ad9e8b0d775becced0a089cc39984641f4a0f/mkdocs_git_revision_date_localized_plugin-1.4.7-py3-none-any.whl", hash = "sha256:056c0a90242409148f1dc94d5c9d2c25b5b8ddd8de45489fa38f7fa7ccad2bc4", size = 25382, upload_time = "2025-05-28T18:26:18.907Z" }, + { url = "https://files.pythonhosted.org/packages/53/b6/106fcc15287e7228658fbd0ad9e8b0d775becced0a089cc39984641f4a0f/mkdocs_git_revision_date_localized_plugin-1.4.7-py3-none-any.whl", hash = "sha256:056c0a90242409148f1dc94d5c9d2c25b5b8ddd8de45489fa38f7fa7ccad2bc4", size = 25382 }, ] [[package]] @@ -1039,18 +1039,18 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/c1/f804ba2db2ddc2183e900befe7dad64339a34fa935034e1ab405289d0a97/mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5", size = 3951836, upload_time = "2025-07-01T10:14:15.671Z" } +sdist = { url = "https://files.pythonhosted.org/packages/95/c1/f804ba2db2ddc2183e900befe7dad64339a34fa935034e1ab405289d0a97/mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5", size = 3951836 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/30/dda19f0495a9096b64b6b3c07c4bfcff1c76ee0fc521086d53593f18b4c0/mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a", size = 8716840, upload_time = "2025-07-01T10:14:13.18Z" }, + { url = "https://files.pythonhosted.org/packages/1d/30/dda19f0495a9096b64b6b3c07c4bfcff1c76ee0fc521086d53593f18b4c0/mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a", size = 8716840 }, ] [[package]] name = "mkdocs-material-extensions" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847, upload_time = "2023-11-22T19:09:45.208Z" } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload_time = "2023-11-22T19:09:43.465Z" }, + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, ] [[package]] @@ -1063,9 +1063,9 @@ dependencies = [ { name = "jsmin" }, { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/52/67/fe4b77e7a8ae7628392e28b14122588beaf6078b53eb91c7ed000fd158ac/mkdocs-minify-plugin-0.8.0.tar.gz", hash = "sha256:bc11b78b8120d79e817308e2b11539d790d21445eb63df831e393f76e52e753d", size = 8366, upload_time = "2024-01-29T16:11:32.982Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/67/fe4b77e7a8ae7628392e28b14122588beaf6078b53eb91c7ed000fd158ac/mkdocs-minify-plugin-0.8.0.tar.gz", hash = "sha256:bc11b78b8120d79e817308e2b11539d790d21445eb63df831e393f76e52e753d", size = 8366 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1b/cd/2e8d0d92421916e2ea4ff97f10a544a9bd5588eb747556701c983581df13/mkdocs_minify_plugin-0.8.0-py3-none-any.whl", hash = "sha256:5fba1a3f7bd9a2142c9954a6559a57e946587b21f133165ece30ea145c66aee6", size = 6723, upload_time = "2024-01-29T16:11:31.851Z" }, + { url = "https://files.pythonhosted.org/packages/1b/cd/2e8d0d92421916e2ea4ff97f10a544a9bd5588eb747556701c983581df13/mkdocs_minify_plugin-0.8.0-py3-none-any.whl", hash = "sha256:5fba1a3f7bd9a2142c9954a6559a57e946587b21f133165ece30ea145c66aee6", size = 6723 }, ] [[package]] @@ -1075,9 +1075,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0a/0e/f72a506a21bdb27b807124e00c688226848a388d1fd3980b80ae3cc27203/mkdocs_open_in_new_tab-1.0.8.tar.gz", hash = "sha256:3e0dad08cc9938b0b13097be8e0aa435919de1eeb2d1a648e66b5dee8d57e048", size = 5791, upload_time = "2024-11-18T13:15:13.977Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/0e/f72a506a21bdb27b807124e00c688226848a388d1fd3980b80ae3cc27203/mkdocs_open_in_new_tab-1.0.8.tar.gz", hash = "sha256:3e0dad08cc9938b0b13097be8e0aa435919de1eeb2d1a648e66b5dee8d57e048", size = 5791 } wheels = [ - { url = "https://files.pythonhosted.org/packages/21/94/44f3c868495481c868d08eea065c82803f1affd8553d3383b782f497613c/mkdocs_open_in_new_tab-1.0.8-py3-none-any.whl", hash = "sha256:051d767a4467b12d89827e1fea0ec660b05b027c726317fe4fceee5456e36ad2", size = 7717, upload_time = "2024-11-18T13:15:12.286Z" }, + { url = "https://files.pythonhosted.org/packages/21/94/44f3c868495481c868d08eea065c82803f1affd8553d3383b782f497613c/mkdocs_open_in_new_tab-1.0.8-py3-none-any.whl", hash = "sha256:051d767a4467b12d89827e1fea0ec660b05b027c726317fe4fceee5456e36ad2", size = 7717 }, ] [[package]] @@ -1092,9 +1092,9 @@ dependencies = [ { name = "mkdocs-autorefs" }, { name = "pymdown-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/41/e8/d22922664a627a0d3d7ff4a6ca95800f5dde54f411982591b4621a76225d/mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42", size = 1212686, upload_time = "2025-03-31T08:33:11.997Z" } +sdist = { url = "https://files.pythonhosted.org/packages/41/e8/d22922664a627a0d3d7ff4a6ca95800f5dde54f411982591b4621a76225d/mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42", size = 1212686 } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/14/22533a578bf8b187e05d67e2c1721ce10e3f526610eebaf7a149d557ea7a/mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6", size = 1631075, upload_time = "2025-03-31T08:33:09.661Z" }, + { url = "https://files.pythonhosted.org/packages/98/14/22533a578bf8b187e05d67e2c1721ce10e3f526610eebaf7a149d557ea7a/mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6", size = 1631075 }, ] [[package]] @@ -1106,9 +1106,9 @@ dependencies = [ { name = "mkdocs-autorefs" }, { name = "mkdocstrings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ed/b886f8c714fd7cccc39b79646b627dbea84cd95c46be43459ef46852caf0/mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d", size = 206065, upload_time = "2025-06-03T12:52:49.276Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/ed/b886f8c714fd7cccc39b79646b627dbea84cd95c46be43459ef46852caf0/mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d", size = 206065 } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/dd/a24ee3de56954bfafb6ede7cd63c2413bb842cc48eb45e41c43a05a33074/mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374", size = 124287, upload_time = "2025-06-03T12:52:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/3b/dd/a24ee3de56954bfafb6ede7cd63c2413bb842cc48eb45e41c43a05a33074/mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374", size = 124287 }, ] [[package]] @@ -1120,89 +1120,89 @@ dependencies = [ { name = "pathspec" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/81/69/92c7fa98112e4d9eb075a239caa4ef4649ad7d441545ccffbd5e34607cbb/mypy-1.16.1.tar.gz", hash = "sha256:6bd00a0a2094841c5e47e7374bb42b83d64c527a502e3334e1173a0c24437bab", size = 3324747, upload_time = "2025-06-16T16:51:35.145Z" } +sdist = { url = "https://files.pythonhosted.org/packages/81/69/92c7fa98112e4d9eb075a239caa4ef4649ad7d441545ccffbd5e34607cbb/mypy-1.16.1.tar.gz", hash = "sha256:6bd00a0a2094841c5e47e7374bb42b83d64c527a502e3334e1173a0c24437bab", size = 3324747 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b4/d6/39482e5fcc724c15bf6280ff5806548c7185e0c090712a3736ed4d07e8b7/mypy-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:af4792433f09575d9eeca5c63d7d90ca4aeceda9d8355e136f80f8967639183d", size = 11066493, upload_time = "2025-06-16T16:47:01.683Z" }, - { url = "https://files.pythonhosted.org/packages/e6/e5/26c347890efc6b757f4d5bb83f4a0cf5958b8cf49c938ac99b8b72b420a6/mypy-1.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66df38405fd8466ce3517eda1f6640611a0b8e70895e2a9462d1d4323c5eb4b9", size = 10081687, upload_time = "2025-06-16T16:48:19.367Z" }, - { url = "https://files.pythonhosted.org/packages/44/c7/b5cb264c97b86914487d6a24bd8688c0172e37ec0f43e93b9691cae9468b/mypy-1.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44e7acddb3c48bd2713994d098729494117803616e116032af192871aed80b79", size = 11839723, upload_time = "2025-06-16T16:49:20.912Z" }, - { url = "https://files.pythonhosted.org/packages/15/f8/491997a9b8a554204f834ed4816bda813aefda31cf873bb099deee3c9a99/mypy-1.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ab5eca37b50188163fa7c1b73c685ac66c4e9bdee4a85c9adac0e91d8895e15", size = 12722980, upload_time = "2025-06-16T16:37:40.929Z" }, - { url = "https://files.pythonhosted.org/packages/df/f0/2bd41e174b5fd93bc9de9a28e4fb673113633b8a7f3a607fa4a73595e468/mypy-1.16.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb6229b2c9086247e21a83c309754b9058b438704ad2f6807f0d8227f6ebdd", size = 12903328, upload_time = "2025-06-16T16:34:35.099Z" }, - { url = "https://files.pythonhosted.org/packages/61/81/5572108a7bec2c46b8aff7e9b524f371fe6ab5efb534d38d6b37b5490da8/mypy-1.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:1f0435cf920e287ff68af3d10a118a73f212deb2ce087619eb4e648116d1fe9b", size = 9562321, upload_time = "2025-06-16T16:48:58.823Z" }, - { url = "https://files.pythonhosted.org/packages/28/e3/96964af4a75a949e67df4b95318fe2b7427ac8189bbc3ef28f92a1c5bc56/mypy-1.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ddc91eb318c8751c69ddb200a5937f1232ee8efb4e64e9f4bc475a33719de438", size = 11063480, upload_time = "2025-06-16T16:47:56.205Z" }, - { url = "https://files.pythonhosted.org/packages/f5/4d/cd1a42b8e5be278fab7010fb289d9307a63e07153f0ae1510a3d7b703193/mypy-1.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:87ff2c13d58bdc4bbe7dc0dedfe622c0f04e2cb2a492269f3b418df2de05c536", size = 10090538, upload_time = "2025-06-16T16:46:43.92Z" }, - { url = "https://files.pythonhosted.org/packages/c9/4f/c3c6b4b66374b5f68bab07c8cabd63a049ff69796b844bc759a0ca99bb2a/mypy-1.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a7cfb0fe29fe5a9841b7c8ee6dffb52382c45acdf68f032145b75620acfbd6f", size = 11836839, upload_time = "2025-06-16T16:36:28.039Z" }, - { url = "https://files.pythonhosted.org/packages/b4/7e/81ca3b074021ad9775e5cb97ebe0089c0f13684b066a750b7dc208438403/mypy-1.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:051e1677689c9d9578b9c7f4d206d763f9bbd95723cd1416fad50db49d52f359", size = 12715634, upload_time = "2025-06-16T16:50:34.441Z" }, - { url = "https://files.pythonhosted.org/packages/e9/95/bdd40c8be346fa4c70edb4081d727a54d0a05382d84966869738cfa8a497/mypy-1.16.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d5d2309511cc56c021b4b4e462907c2b12f669b2dbeb68300110ec27723971be", size = 12895584, upload_time = "2025-06-16T16:34:54.857Z" }, - { url = "https://files.pythonhosted.org/packages/5a/fd/d486a0827a1c597b3b48b1bdef47228a6e9ee8102ab8c28f944cb83b65dc/mypy-1.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:4f58ac32771341e38a853c5d0ec0dfe27e18e27da9cdb8bbc882d2249c71a3ee", size = 9573886, upload_time = "2025-06-16T16:36:43.589Z" }, - { url = "https://files.pythonhosted.org/packages/cf/d3/53e684e78e07c1a2bf7105715e5edd09ce951fc3f47cf9ed095ec1b7a037/mypy-1.16.1-py3-none-any.whl", hash = "sha256:5fc2ac4027d0ef28d6ba69a0343737a23c4d1b83672bf38d1fe237bdc0643b37", size = 2265923, upload_time = "2025-06-16T16:48:02.366Z" }, + { url = "https://files.pythonhosted.org/packages/b4/d6/39482e5fcc724c15bf6280ff5806548c7185e0c090712a3736ed4d07e8b7/mypy-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:af4792433f09575d9eeca5c63d7d90ca4aeceda9d8355e136f80f8967639183d", size = 11066493 }, + { url = "https://files.pythonhosted.org/packages/e6/e5/26c347890efc6b757f4d5bb83f4a0cf5958b8cf49c938ac99b8b72b420a6/mypy-1.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66df38405fd8466ce3517eda1f6640611a0b8e70895e2a9462d1d4323c5eb4b9", size = 10081687 }, + { url = "https://files.pythonhosted.org/packages/44/c7/b5cb264c97b86914487d6a24bd8688c0172e37ec0f43e93b9691cae9468b/mypy-1.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44e7acddb3c48bd2713994d098729494117803616e116032af192871aed80b79", size = 11839723 }, + { url = "https://files.pythonhosted.org/packages/15/f8/491997a9b8a554204f834ed4816bda813aefda31cf873bb099deee3c9a99/mypy-1.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ab5eca37b50188163fa7c1b73c685ac66c4e9bdee4a85c9adac0e91d8895e15", size = 12722980 }, + { url = "https://files.pythonhosted.org/packages/df/f0/2bd41e174b5fd93bc9de9a28e4fb673113633b8a7f3a607fa4a73595e468/mypy-1.16.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb6229b2c9086247e21a83c309754b9058b438704ad2f6807f0d8227f6ebdd", size = 12903328 }, + { url = "https://files.pythonhosted.org/packages/61/81/5572108a7bec2c46b8aff7e9b524f371fe6ab5efb534d38d6b37b5490da8/mypy-1.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:1f0435cf920e287ff68af3d10a118a73f212deb2ce087619eb4e648116d1fe9b", size = 9562321 }, + { url = "https://files.pythonhosted.org/packages/28/e3/96964af4a75a949e67df4b95318fe2b7427ac8189bbc3ef28f92a1c5bc56/mypy-1.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ddc91eb318c8751c69ddb200a5937f1232ee8efb4e64e9f4bc475a33719de438", size = 11063480 }, + { url = "https://files.pythonhosted.org/packages/f5/4d/cd1a42b8e5be278fab7010fb289d9307a63e07153f0ae1510a3d7b703193/mypy-1.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:87ff2c13d58bdc4bbe7dc0dedfe622c0f04e2cb2a492269f3b418df2de05c536", size = 10090538 }, + { url = "https://files.pythonhosted.org/packages/c9/4f/c3c6b4b66374b5f68bab07c8cabd63a049ff69796b844bc759a0ca99bb2a/mypy-1.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a7cfb0fe29fe5a9841b7c8ee6dffb52382c45acdf68f032145b75620acfbd6f", size = 11836839 }, + { url = "https://files.pythonhosted.org/packages/b4/7e/81ca3b074021ad9775e5cb97ebe0089c0f13684b066a750b7dc208438403/mypy-1.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:051e1677689c9d9578b9c7f4d206d763f9bbd95723cd1416fad50db49d52f359", size = 12715634 }, + { url = "https://files.pythonhosted.org/packages/e9/95/bdd40c8be346fa4c70edb4081d727a54d0a05382d84966869738cfa8a497/mypy-1.16.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d5d2309511cc56c021b4b4e462907c2b12f669b2dbeb68300110ec27723971be", size = 12895584 }, + { url = "https://files.pythonhosted.org/packages/5a/fd/d486a0827a1c597b3b48b1bdef47228a6e9ee8102ab8c28f944cb83b65dc/mypy-1.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:4f58ac32771341e38a853c5d0ec0dfe27e18e27da9cdb8bbc882d2249c71a3ee", size = 9573886 }, + { url = "https://files.pythonhosted.org/packages/cf/d3/53e684e78e07c1a2bf7105715e5edd09ce951fc3f47cf9ed095ec1b7a037/mypy-1.16.1-py3-none-any.whl", hash = "sha256:5fc2ac4027d0ef28d6ba69a0343737a23c4d1b83672bf38d1fe237bdc0643b37", size = 2265923 }, ] [[package]] name = "mypy-extensions" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload_time = "2025-04-22T14:54:24.164Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload_time = "2025-04-22T14:54:22.983Z" }, + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 }, ] [[package]] name = "nest-asyncio" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload_time = "2024-01-21T14:25:19.227Z" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload_time = "2024-01-21T14:25:17.223Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, ] [[package]] name = "nodeenv" version = "1.9.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload_time = "2024-06-04T18:44:11.171Z" } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload_time = "2024-06-04T18:44:08.352Z" }, + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, ] [[package]] name = "numpy" version = "2.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2e/19/d7c972dfe90a353dbd3efbbe1d14a5951de80c99c9dc1b93cd998d51dc0f/numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b", size = 20390372, upload_time = "2025-06-21T12:28:33.469Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/56/71ad5022e2f63cfe0ca93559403d0edef14aea70a841d640bd13cdba578e/numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d", size = 20896664, upload_time = "2025-06-21T12:15:30.845Z" }, - { url = "https://files.pythonhosted.org/packages/25/65/2db52ba049813670f7f987cc5db6dac9be7cd95e923cc6832b3d32d87cef/numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29", size = 14131078, upload_time = "2025-06-21T12:15:52.23Z" }, - { url = "https://files.pythonhosted.org/packages/57/dd/28fa3c17b0e751047ac928c1e1b6990238faad76e9b147e585b573d9d1bd/numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc", size = 5112554, upload_time = "2025-06-21T12:16:01.434Z" }, - { url = "https://files.pythonhosted.org/packages/c9/fc/84ea0cba8e760c4644b708b6819d91784c290288c27aca916115e3311d17/numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943", size = 6646560, upload_time = "2025-06-21T12:16:11.895Z" }, - { url = "https://files.pythonhosted.org/packages/61/b2/512b0c2ddec985ad1e496b0bd853eeb572315c0f07cd6997473ced8f15e2/numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25", size = 14260638, upload_time = "2025-06-21T12:16:32.611Z" }, - { url = "https://files.pythonhosted.org/packages/6e/45/c51cb248e679a6c6ab14b7a8e3ead3f4a3fe7425fc7a6f98b3f147bec532/numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660", size = 16632729, upload_time = "2025-06-21T12:16:57.439Z" }, - { url = "https://files.pythonhosted.org/packages/e4/ff/feb4be2e5c09a3da161b412019caf47183099cbea1132fd98061808c2df2/numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952", size = 15565330, upload_time = "2025-06-21T12:17:20.638Z" }, - { url = "https://files.pythonhosted.org/packages/bc/6d/ceafe87587101e9ab0d370e4f6e5f3f3a85b9a697f2318738e5e7e176ce3/numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77", size = 18361734, upload_time = "2025-06-21T12:17:47.938Z" }, - { url = "https://files.pythonhosted.org/packages/2b/19/0fb49a3ea088be691f040c9bf1817e4669a339d6e98579f91859b902c636/numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab", size = 6320411, upload_time = "2025-06-21T12:17:58.475Z" }, - { url = "https://files.pythonhosted.org/packages/b1/3e/e28f4c1dd9e042eb57a3eb652f200225e311b608632bc727ae378623d4f8/numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76", size = 12734973, upload_time = "2025-06-21T12:18:17.601Z" }, - { url = "https://files.pythonhosted.org/packages/04/a8/8a5e9079dc722acf53522b8f8842e79541ea81835e9b5483388701421073/numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30", size = 10191491, upload_time = "2025-06-21T12:18:33.585Z" }, - { url = "https://files.pythonhosted.org/packages/d4/bd/35ad97006d8abff8631293f8ea6adf07b0108ce6fec68da3c3fcca1197f2/numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8", size = 20889381, upload_time = "2025-06-21T12:19:04.103Z" }, - { url = "https://files.pythonhosted.org/packages/f1/4f/df5923874d8095b6062495b39729178eef4a922119cee32a12ee1bd4664c/numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e", size = 14152726, upload_time = "2025-06-21T12:19:25.599Z" }, - { url = "https://files.pythonhosted.org/packages/8c/0f/a1f269b125806212a876f7efb049b06c6f8772cf0121139f97774cd95626/numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0", size = 5105145, upload_time = "2025-06-21T12:19:34.782Z" }, - { url = "https://files.pythonhosted.org/packages/6d/63/a7f7fd5f375b0361682f6ffbf686787e82b7bbd561268e4f30afad2bb3c0/numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d", size = 6639409, upload_time = "2025-06-21T12:19:45.228Z" }, - { url = "https://files.pythonhosted.org/packages/bf/0d/1854a4121af895aab383f4aa233748f1df4671ef331d898e32426756a8a6/numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1", size = 14257630, upload_time = "2025-06-21T12:20:06.544Z" }, - { url = "https://files.pythonhosted.org/packages/50/30/af1b277b443f2fb08acf1c55ce9d68ee540043f158630d62cef012750f9f/numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1", size = 16627546, upload_time = "2025-06-21T12:20:31.002Z" }, - { url = "https://files.pythonhosted.org/packages/6e/ec/3b68220c277e463095342d254c61be8144c31208db18d3fd8ef02712bcd6/numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0", size = 15562538, upload_time = "2025-06-21T12:20:54.322Z" }, - { url = "https://files.pythonhosted.org/packages/77/2b/4014f2bcc4404484021c74d4c5ee8eb3de7e3f7ac75f06672f8dcf85140a/numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8", size = 18360327, upload_time = "2025-06-21T12:21:21.053Z" }, - { url = "https://files.pythonhosted.org/packages/40/8d/2ddd6c9b30fcf920837b8672f6c65590c7d92e43084c25fc65edc22e93ca/numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8", size = 6312330, upload_time = "2025-06-21T12:25:07.447Z" }, - { url = "https://files.pythonhosted.org/packages/dd/c8/beaba449925988d415efccb45bf977ff8327a02f655090627318f6398c7b/numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42", size = 12731565, upload_time = "2025-06-21T12:25:26.444Z" }, - { url = "https://files.pythonhosted.org/packages/0b/c3/5c0c575d7ec78c1126998071f58facfc124006635da75b090805e642c62e/numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e", size = 10190262, upload_time = "2025-06-21T12:25:42.196Z" }, - { url = "https://files.pythonhosted.org/packages/ea/19/a029cd335cf72f79d2644dcfc22d90f09caa86265cbbde3b5702ccef6890/numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8", size = 20987593, upload_time = "2025-06-21T12:21:51.664Z" }, - { url = "https://files.pythonhosted.org/packages/25/91/8ea8894406209107d9ce19b66314194675d31761fe2cb3c84fe2eeae2f37/numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb", size = 14300523, upload_time = "2025-06-21T12:22:13.583Z" }, - { url = "https://files.pythonhosted.org/packages/a6/7f/06187b0066eefc9e7ce77d5f2ddb4e314a55220ad62dd0bfc9f2c44bac14/numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee", size = 5227993, upload_time = "2025-06-21T12:22:22.53Z" }, - { url = "https://files.pythonhosted.org/packages/e8/ec/a926c293c605fa75e9cfb09f1e4840098ed46d2edaa6e2152ee35dc01ed3/numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992", size = 6736652, upload_time = "2025-06-21T12:22:33.629Z" }, - { url = "https://files.pythonhosted.org/packages/e3/62/d68e52fb6fde5586650d4c0ce0b05ff3a48ad4df4ffd1b8866479d1d671d/numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c", size = 14331561, upload_time = "2025-06-21T12:22:55.056Z" }, - { url = "https://files.pythonhosted.org/packages/fc/ec/b74d3f2430960044bdad6900d9f5edc2dc0fb8bf5a0be0f65287bf2cbe27/numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48", size = 16693349, upload_time = "2025-06-21T12:23:20.53Z" }, - { url = "https://files.pythonhosted.org/packages/0d/15/def96774b9d7eb198ddadfcbd20281b20ebb510580419197e225f5c55c3e/numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee", size = 15642053, upload_time = "2025-06-21T12:23:43.697Z" }, - { url = "https://files.pythonhosted.org/packages/2b/57/c3203974762a759540c6ae71d0ea2341c1fa41d84e4971a8e76d7141678a/numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280", size = 18434184, upload_time = "2025-06-21T12:24:10.708Z" }, - { url = "https://files.pythonhosted.org/packages/22/8a/ccdf201457ed8ac6245187850aff4ca56a79edbea4829f4e9f14d46fa9a5/numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e", size = 6440678, upload_time = "2025-06-21T12:24:21.596Z" }, - { url = "https://files.pythonhosted.org/packages/f1/7e/7f431d8bd8eb7e03d79294aed238b1b0b174b3148570d03a8a8a8f6a0da9/numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc", size = 12870697, upload_time = "2025-06-21T12:24:40.644Z" }, - { url = "https://files.pythonhosted.org/packages/d4/ca/af82bf0fad4c3e573c6930ed743b5308492ff19917c7caaf2f9b6f9e2e98/numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244", size = 10260376, upload_time = "2025-06-21T12:24:56.884Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/2e/19/d7c972dfe90a353dbd3efbbe1d14a5951de80c99c9dc1b93cd998d51dc0f/numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b", size = 20390372 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/56/71ad5022e2f63cfe0ca93559403d0edef14aea70a841d640bd13cdba578e/numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d", size = 20896664 }, + { url = "https://files.pythonhosted.org/packages/25/65/2db52ba049813670f7f987cc5db6dac9be7cd95e923cc6832b3d32d87cef/numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29", size = 14131078 }, + { url = "https://files.pythonhosted.org/packages/57/dd/28fa3c17b0e751047ac928c1e1b6990238faad76e9b147e585b573d9d1bd/numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc", size = 5112554 }, + { url = "https://files.pythonhosted.org/packages/c9/fc/84ea0cba8e760c4644b708b6819d91784c290288c27aca916115e3311d17/numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943", size = 6646560 }, + { url = "https://files.pythonhosted.org/packages/61/b2/512b0c2ddec985ad1e496b0bd853eeb572315c0f07cd6997473ced8f15e2/numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25", size = 14260638 }, + { url = "https://files.pythonhosted.org/packages/6e/45/c51cb248e679a6c6ab14b7a8e3ead3f4a3fe7425fc7a6f98b3f147bec532/numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660", size = 16632729 }, + { url = "https://files.pythonhosted.org/packages/e4/ff/feb4be2e5c09a3da161b412019caf47183099cbea1132fd98061808c2df2/numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952", size = 15565330 }, + { url = "https://files.pythonhosted.org/packages/bc/6d/ceafe87587101e9ab0d370e4f6e5f3f3a85b9a697f2318738e5e7e176ce3/numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77", size = 18361734 }, + { url = "https://files.pythonhosted.org/packages/2b/19/0fb49a3ea088be691f040c9bf1817e4669a339d6e98579f91859b902c636/numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab", size = 6320411 }, + { url = "https://files.pythonhosted.org/packages/b1/3e/e28f4c1dd9e042eb57a3eb652f200225e311b608632bc727ae378623d4f8/numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76", size = 12734973 }, + { url = "https://files.pythonhosted.org/packages/04/a8/8a5e9079dc722acf53522b8f8842e79541ea81835e9b5483388701421073/numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30", size = 10191491 }, + { url = "https://files.pythonhosted.org/packages/d4/bd/35ad97006d8abff8631293f8ea6adf07b0108ce6fec68da3c3fcca1197f2/numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8", size = 20889381 }, + { url = "https://files.pythonhosted.org/packages/f1/4f/df5923874d8095b6062495b39729178eef4a922119cee32a12ee1bd4664c/numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e", size = 14152726 }, + { url = "https://files.pythonhosted.org/packages/8c/0f/a1f269b125806212a876f7efb049b06c6f8772cf0121139f97774cd95626/numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0", size = 5105145 }, + { url = "https://files.pythonhosted.org/packages/6d/63/a7f7fd5f375b0361682f6ffbf686787e82b7bbd561268e4f30afad2bb3c0/numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d", size = 6639409 }, + { url = "https://files.pythonhosted.org/packages/bf/0d/1854a4121af895aab383f4aa233748f1df4671ef331d898e32426756a8a6/numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1", size = 14257630 }, + { url = "https://files.pythonhosted.org/packages/50/30/af1b277b443f2fb08acf1c55ce9d68ee540043f158630d62cef012750f9f/numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1", size = 16627546 }, + { url = "https://files.pythonhosted.org/packages/6e/ec/3b68220c277e463095342d254c61be8144c31208db18d3fd8ef02712bcd6/numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0", size = 15562538 }, + { url = "https://files.pythonhosted.org/packages/77/2b/4014f2bcc4404484021c74d4c5ee8eb3de7e3f7ac75f06672f8dcf85140a/numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8", size = 18360327 }, + { url = "https://files.pythonhosted.org/packages/40/8d/2ddd6c9b30fcf920837b8672f6c65590c7d92e43084c25fc65edc22e93ca/numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8", size = 6312330 }, + { url = "https://files.pythonhosted.org/packages/dd/c8/beaba449925988d415efccb45bf977ff8327a02f655090627318f6398c7b/numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42", size = 12731565 }, + { url = "https://files.pythonhosted.org/packages/0b/c3/5c0c575d7ec78c1126998071f58facfc124006635da75b090805e642c62e/numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e", size = 10190262 }, + { url = "https://files.pythonhosted.org/packages/ea/19/a029cd335cf72f79d2644dcfc22d90f09caa86265cbbde3b5702ccef6890/numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8", size = 20987593 }, + { url = "https://files.pythonhosted.org/packages/25/91/8ea8894406209107d9ce19b66314194675d31761fe2cb3c84fe2eeae2f37/numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb", size = 14300523 }, + { url = "https://files.pythonhosted.org/packages/a6/7f/06187b0066eefc9e7ce77d5f2ddb4e314a55220ad62dd0bfc9f2c44bac14/numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee", size = 5227993 }, + { url = "https://files.pythonhosted.org/packages/e8/ec/a926c293c605fa75e9cfb09f1e4840098ed46d2edaa6e2152ee35dc01ed3/numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992", size = 6736652 }, + { url = "https://files.pythonhosted.org/packages/e3/62/d68e52fb6fde5586650d4c0ce0b05ff3a48ad4df4ffd1b8866479d1d671d/numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c", size = 14331561 }, + { url = "https://files.pythonhosted.org/packages/fc/ec/b74d3f2430960044bdad6900d9f5edc2dc0fb8bf5a0be0f65287bf2cbe27/numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48", size = 16693349 }, + { url = "https://files.pythonhosted.org/packages/0d/15/def96774b9d7eb198ddadfcbd20281b20ebb510580419197e225f5c55c3e/numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee", size = 15642053 }, + { url = "https://files.pythonhosted.org/packages/2b/57/c3203974762a759540c6ae71d0ea2341c1fa41d84e4971a8e76d7141678a/numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280", size = 18434184 }, + { url = "https://files.pythonhosted.org/packages/22/8a/ccdf201457ed8ac6245187850aff4ca56a79edbea4829f4e9f14d46fa9a5/numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e", size = 6440678 }, + { url = "https://files.pythonhosted.org/packages/f1/7e/7f431d8bd8eb7e03d79294aed238b1b0b174b3148570d03a8a8a8f6a0da9/numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc", size = 12870697 }, + { url = "https://files.pythonhosted.org/packages/d4/ca/af82bf0fad4c3e573c6930ed743b5308492ff19917c7caaf2f9b6f9e2e98/numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244", size = 10260376 }, ] [[package]] @@ -1216,9 +1216,9 @@ dependencies = [ { name = "pyarrow" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1a/d1/5c0bb2a714ebea7df131b8e87010eab39d0df75878f6785f2a214ff66bb2/oda_reader-1.2.2.tar.gz", hash = "sha256:55be081e1744e75184eca3d09e794fad71958201d08b48fb497aac97a95f3685", size = 35630, upload_time = "2025-06-16T16:15:05.49Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1a/d1/5c0bb2a714ebea7df131b8e87010eab39d0df75878f6785f2a214ff66bb2/oda_reader-1.2.2.tar.gz", hash = "sha256:55be081e1744e75184eca3d09e794fad71958201d08b48fb497aac97a95f3685", size = 35630 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d8/ec/59338ec9108848dc53f50e7381b9817595bf98f414f4a732100a06828a3b/oda_reader-1.2.2-py3-none-any.whl", hash = "sha256:7f7b854ab1e9bc2cf64b6c63bd56a2ac64cb90ec054518fd01b741fd518cf007", size = 45314, upload_time = "2025-06-16T16:15:04.328Z" }, + { url = "https://files.pythonhosted.org/packages/d8/ec/59338ec9108848dc53f50e7381b9817595bf98f414f4a732100a06828a3b/oda_reader-1.2.2-py3-none-any.whl", hash = "sha256:7f7b854ab1e9bc2cf64b6c63bd56a2ac64cb90ec054518fd01b741fd518cf007", size = 45314 }, ] [[package]] @@ -1228,27 +1228,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "et-xmlfile" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload_time = "2024-06-28T14:03:44.161Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload_time = "2024-06-28T14:03:41.161Z" }, + { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910 }, ] [[package]] name = "packaging" version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload_time = "2025-04-19T11:48:59.673Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload_time = "2025-04-19T11:48:57.875Z" }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, ] [[package]] name = "paginate" version = "0.5.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload_time = "2024-08-25T14:17:24.139Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload_time = "2024-08-25T14:17:22.55Z" }, + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, ] [[package]] @@ -1261,53 +1261,53 @@ dependencies = [ { name = "pytz" }, { name = "tzdata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d1/6f/75aa71f8a14267117adeeed5d21b204770189c0a0025acbdc03c337b28fc/pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2", size = 4487493, upload_time = "2025-07-07T19:20:04.079Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/de/b8445e0f5d217a99fe0eeb2f4988070908979bec3587c0633e5428ab596c/pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3", size = 11588172, upload_time = "2025-07-07T19:18:52.054Z" }, - { url = "https://files.pythonhosted.org/packages/1e/e0/801cdb3564e65a5ac041ab99ea6f1d802a6c325bb6e58c79c06a3f1cd010/pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232", size = 10717365, upload_time = "2025-07-07T19:18:54.785Z" }, - { url = "https://files.pythonhosted.org/packages/51/a5/c76a8311833c24ae61a376dbf360eb1b1c9247a5d9c1e8b356563b31b80c/pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e", size = 11280411, upload_time = "2025-07-07T19:18:57.045Z" }, - { url = "https://files.pythonhosted.org/packages/da/01/e383018feba0a1ead6cf5fe8728e5d767fee02f06a3d800e82c489e5daaf/pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4", size = 11988013, upload_time = "2025-07-07T19:18:59.771Z" }, - { url = "https://files.pythonhosted.org/packages/5b/14/cec7760d7c9507f11c97d64f29022e12a6cc4fc03ac694535e89f88ad2ec/pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8", size = 12767210, upload_time = "2025-07-07T19:19:02.944Z" }, - { url = "https://files.pythonhosted.org/packages/50/b9/6e2d2c6728ed29fb3d4d4d302504fb66f1a543e37eb2e43f352a86365cdf/pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679", size = 13440571, upload_time = "2025-07-07T19:19:06.82Z" }, - { url = "https://files.pythonhosted.org/packages/80/a5/3a92893e7399a691bad7664d977cb5e7c81cf666c81f89ea76ba2bff483d/pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8", size = 10987601, upload_time = "2025-07-07T19:19:09.589Z" }, - { url = "https://files.pythonhosted.org/packages/32/ed/ff0a67a2c5505e1854e6715586ac6693dd860fbf52ef9f81edee200266e7/pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22", size = 11531393, upload_time = "2025-07-07T19:19:12.245Z" }, - { url = "https://files.pythonhosted.org/packages/c7/db/d8f24a7cc9fb0972adab0cc80b6817e8bef888cfd0024eeb5a21c0bb5c4a/pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a", size = 10668750, upload_time = "2025-07-07T19:19:14.612Z" }, - { url = "https://files.pythonhosted.org/packages/0f/b0/80f6ec783313f1e2356b28b4fd8d2148c378370045da918c73145e6aab50/pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928", size = 11342004, upload_time = "2025-07-07T19:19:16.857Z" }, - { url = "https://files.pythonhosted.org/packages/e9/e2/20a317688435470872885e7fc8f95109ae9683dec7c50be29b56911515a5/pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9", size = 12050869, upload_time = "2025-07-07T19:19:19.265Z" }, - { url = "https://files.pythonhosted.org/packages/55/79/20d746b0a96c67203a5bee5fb4e00ac49c3e8009a39e1f78de264ecc5729/pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12", size = 12750218, upload_time = "2025-07-07T19:19:21.547Z" }, - { url = "https://files.pythonhosted.org/packages/7c/0f/145c8b41e48dbf03dd18fdd7f24f8ba95b8254a97a3379048378f33e7838/pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb", size = 13416763, upload_time = "2025-07-07T19:19:23.939Z" }, - { url = "https://files.pythonhosted.org/packages/b2/c0/54415af59db5cdd86a3d3bf79863e8cc3fa9ed265f0745254061ac09d5f2/pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956", size = 10987482, upload_time = "2025-07-07T19:19:42.699Z" }, - { url = "https://files.pythonhosted.org/packages/48/64/2fd2e400073a1230e13b8cd604c9bc95d9e3b962e5d44088ead2e8f0cfec/pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a", size = 12029159, upload_time = "2025-07-07T19:19:26.362Z" }, - { url = "https://files.pythonhosted.org/packages/d8/0a/d84fd79b0293b7ef88c760d7dca69828d867c89b6d9bc52d6a27e4d87316/pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9", size = 11393287, upload_time = "2025-07-07T19:19:29.157Z" }, - { url = "https://files.pythonhosted.org/packages/50/ae/ff885d2b6e88f3c7520bb74ba319268b42f05d7e583b5dded9837da2723f/pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275", size = 11309381, upload_time = "2025-07-07T19:19:31.436Z" }, - { url = "https://files.pythonhosted.org/packages/85/86/1fa345fc17caf5d7780d2699985c03dbe186c68fee00b526813939062bb0/pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab", size = 11883998, upload_time = "2025-07-07T19:19:34.267Z" }, - { url = "https://files.pythonhosted.org/packages/81/aa/e58541a49b5e6310d89474333e994ee57fea97c8aaa8fc7f00b873059bbf/pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96", size = 12704705, upload_time = "2025-07-07T19:19:36.856Z" }, - { url = "https://files.pythonhosted.org/packages/d5/f9/07086f5b0f2a19872554abeea7658200824f5835c58a106fa8f2ae96a46c/pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444", size = 13189044, upload_time = "2025-07-07T19:19:39.999Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/d1/6f/75aa71f8a14267117adeeed5d21b204770189c0a0025acbdc03c337b28fc/pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2", size = 4487493 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/de/b8445e0f5d217a99fe0eeb2f4988070908979bec3587c0633e5428ab596c/pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3", size = 11588172 }, + { url = "https://files.pythonhosted.org/packages/1e/e0/801cdb3564e65a5ac041ab99ea6f1d802a6c325bb6e58c79c06a3f1cd010/pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232", size = 10717365 }, + { url = "https://files.pythonhosted.org/packages/51/a5/c76a8311833c24ae61a376dbf360eb1b1c9247a5d9c1e8b356563b31b80c/pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e", size = 11280411 }, + { url = "https://files.pythonhosted.org/packages/da/01/e383018feba0a1ead6cf5fe8728e5d767fee02f06a3d800e82c489e5daaf/pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4", size = 11988013 }, + { url = "https://files.pythonhosted.org/packages/5b/14/cec7760d7c9507f11c97d64f29022e12a6cc4fc03ac694535e89f88ad2ec/pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8", size = 12767210 }, + { url = "https://files.pythonhosted.org/packages/50/b9/6e2d2c6728ed29fb3d4d4d302504fb66f1a543e37eb2e43f352a86365cdf/pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679", size = 13440571 }, + { url = "https://files.pythonhosted.org/packages/80/a5/3a92893e7399a691bad7664d977cb5e7c81cf666c81f89ea76ba2bff483d/pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8", size = 10987601 }, + { url = "https://files.pythonhosted.org/packages/32/ed/ff0a67a2c5505e1854e6715586ac6693dd860fbf52ef9f81edee200266e7/pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22", size = 11531393 }, + { url = "https://files.pythonhosted.org/packages/c7/db/d8f24a7cc9fb0972adab0cc80b6817e8bef888cfd0024eeb5a21c0bb5c4a/pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a", size = 10668750 }, + { url = "https://files.pythonhosted.org/packages/0f/b0/80f6ec783313f1e2356b28b4fd8d2148c378370045da918c73145e6aab50/pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928", size = 11342004 }, + { url = "https://files.pythonhosted.org/packages/e9/e2/20a317688435470872885e7fc8f95109ae9683dec7c50be29b56911515a5/pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9", size = 12050869 }, + { url = "https://files.pythonhosted.org/packages/55/79/20d746b0a96c67203a5bee5fb4e00ac49c3e8009a39e1f78de264ecc5729/pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12", size = 12750218 }, + { url = "https://files.pythonhosted.org/packages/7c/0f/145c8b41e48dbf03dd18fdd7f24f8ba95b8254a97a3379048378f33e7838/pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb", size = 13416763 }, + { url = "https://files.pythonhosted.org/packages/b2/c0/54415af59db5cdd86a3d3bf79863e8cc3fa9ed265f0745254061ac09d5f2/pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956", size = 10987482 }, + { url = "https://files.pythonhosted.org/packages/48/64/2fd2e400073a1230e13b8cd604c9bc95d9e3b962e5d44088ead2e8f0cfec/pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a", size = 12029159 }, + { url = "https://files.pythonhosted.org/packages/d8/0a/d84fd79b0293b7ef88c760d7dca69828d867c89b6d9bc52d6a27e4d87316/pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9", size = 11393287 }, + { url = "https://files.pythonhosted.org/packages/50/ae/ff885d2b6e88f3c7520bb74ba319268b42f05d7e583b5dded9837da2723f/pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275", size = 11309381 }, + { url = "https://files.pythonhosted.org/packages/85/86/1fa345fc17caf5d7780d2699985c03dbe186c68fee00b526813939062bb0/pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab", size = 11883998 }, + { url = "https://files.pythonhosted.org/packages/81/aa/e58541a49b5e6310d89474333e994ee57fea97c8aaa8fc7f00b873059bbf/pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96", size = 12704705 }, + { url = "https://files.pythonhosted.org/packages/d5/f9/07086f5b0f2a19872554abeea7658200824f5835c58a106fa8f2ae96a46c/pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444", size = 13189044 }, ] [[package]] name = "parso" version = "0.8.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609, upload_time = "2024-04-05T09:43:55.897Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650, upload_time = "2024-04-05T09:43:53.299Z" }, + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 }, ] [[package]] name = "pathspec" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload_time = "2023-12-10T22:30:45Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload_time = "2023-12-10T22:30:43.14Z" }, + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, ] [[package]] name = "petl" version = "1.7.16" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/99/28/ce7321fbd3b981fd9c212adf7455e0e4e42babebd83b92e24f8265d13dd3/petl-1.7.16.tar.gz", hash = "sha256:9c2fea64d859da45e120fd86d471e5387396cc45d5d4986efa79679f18eb8752", size = 420780, upload_time = "2025-04-04T23:54:50.921Z" } +sdist = { url = "https://files.pythonhosted.org/packages/99/28/ce7321fbd3b981fd9c212adf7455e0e4e42babebd83b92e24f8265d13dd3/petl-1.7.16.tar.gz", hash = "sha256:9c2fea64d859da45e120fd86d471e5387396cc45d5d4986efa79679f18eb8752", size = 420780 } [[package]] name = "pexpect" @@ -1316,9 +1316,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ptyprocess" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload_time = "2023-11-25T09:07:26.339Z" } +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload_time = "2023-11-25T06:56:14.81Z" }, + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 }, ] [[package]] @@ -1331,36 +1331,36 @@ dependencies = [ { name = "platformdirs" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/20/bb/52b15ddf7b7706ed591134a895dbf6e41c8348171fb635e655e0a4bbb0ea/pint-0.24.4.tar.gz", hash = "sha256:35275439b574837a6cd3020a5a4a73645eb125ce4152a73a2f126bf164b91b80", size = 342225, upload_time = "2024-11-07T16:29:46.061Z" } +sdist = { url = "https://files.pythonhosted.org/packages/20/bb/52b15ddf7b7706ed591134a895dbf6e41c8348171fb635e655e0a4bbb0ea/pint-0.24.4.tar.gz", hash = "sha256:35275439b574837a6cd3020a5a4a73645eb125ce4152a73a2f126bf164b91b80", size = 342225 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/16/bd2f5904557265882108dc2e04f18abc05ab0c2b7082ae9430091daf1d5c/Pint-0.24.4-py3-none-any.whl", hash = "sha256:aa54926c8772159fcf65f82cc0d34de6768c151b32ad1deb0331291c38fe7659", size = 302029, upload_time = "2024-11-07T16:29:43.976Z" }, + { url = "https://files.pythonhosted.org/packages/b7/16/bd2f5904557265882108dc2e04f18abc05ab0c2b7082ae9430091daf1d5c/Pint-0.24.4-py3-none-any.whl", hash = "sha256:aa54926c8772159fcf65f82cc0d34de6768c151b32ad1deb0331291c38fe7659", size = 302029 }, ] [[package]] name = "platformdirs" version = "4.3.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload_time = "2025-05-07T22:47:42.121Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload_time = "2025-05-07T22:47:40.376Z" }, + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567 }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload_time = "2025-05-15T12:30:07.975Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload_time = "2025-05-15T12:30:06.134Z" }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, ] [[package]] name = "ply" version = "3.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130, upload_time = "2018-02-15T19:01:31.097Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567, upload_time = "2018-02-15T19:01:27.172Z" }, + { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567 }, ] [[package]] @@ -1374,9 +1374,9 @@ dependencies = [ { name = "pyyaml" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload_time = "2025-03-18T21:35:20.987Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424 } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload_time = "2025-03-18T21:35:19.343Z" }, + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707 }, ] [[package]] @@ -1386,86 +1386,86 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wcwidth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload_time = "2025-04-15T09:18:47.731Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload_time = "2025-04-15T09:18:44.753Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810 }, ] [[package]] name = "psutil" version = "7.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload_time = "2025-02-13T21:54:07.946Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload_time = "2025-02-13T21:54:12.36Z" }, - { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload_time = "2025-02-13T21:54:16.07Z" }, - { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload_time = "2025-02-13T21:54:18.662Z" }, - { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload_time = "2025-02-13T21:54:21.811Z" }, - { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload_time = "2025-02-13T21:54:24.68Z" }, - { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload_time = "2025-02-13T21:54:34.31Z" }, - { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload_time = "2025-02-13T21:54:37.486Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051 }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535 }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004 }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986 }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544 }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053 }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885 }, ] [[package]] name = "ptyprocess" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload_time = "2020-12-28T15:15:30.155Z" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762 } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload_time = "2020-12-28T15:15:28.35Z" }, + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993 }, ] [[package]] name = "pure-eval" version = "0.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload_time = "2024-07-21T12:58:21.801Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload_time = "2024-07-21T12:58:20.04Z" }, + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842 }, ] [[package]] name = "pyarrow" version = "20.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187, upload_time = "2025-04-27T12:34:23.264Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067, upload_time = "2025-04-27T12:29:44.384Z" }, - { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128, upload_time = "2025-04-27T12:29:52.038Z" }, - { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890, upload_time = "2025-04-27T12:29:59.452Z" }, - { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775, upload_time = "2025-04-27T12:30:06.875Z" }, - { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231, upload_time = "2025-04-27T12:30:13.954Z" }, - { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639, upload_time = "2025-04-27T12:30:21.949Z" }, - { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549, upload_time = "2025-04-27T12:30:29.551Z" }, - { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216, upload_time = "2025-04-27T12:30:36.977Z" }, - { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496, upload_time = "2025-04-27T12:30:42.809Z" }, - { url = "https://files.pythonhosted.org/packages/9b/aa/daa413b81446d20d4dad2944110dcf4cf4f4179ef7f685dd5a6d7570dc8e/pyarrow-20.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a15532e77b94c61efadde86d10957950392999503b3616b2ffcef7621a002893", size = 30798501, upload_time = "2025-04-27T12:30:48.351Z" }, - { url = "https://files.pythonhosted.org/packages/ff/75/2303d1caa410925de902d32ac215dc80a7ce7dd8dfe95358c165f2adf107/pyarrow-20.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:dd43f58037443af715f34f1322c782ec463a3c8a94a85fdb2d987ceb5658e061", size = 32277895, upload_time = "2025-04-27T12:30:55.238Z" }, - { url = "https://files.pythonhosted.org/packages/92/41/fe18c7c0b38b20811b73d1bdd54b1fccba0dab0e51d2048878042d84afa8/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa0d288143a8585806e3cc7c39566407aab646fb9ece164609dac1cfff45f6ae", size = 41327322, upload_time = "2025-04-27T12:31:05.587Z" }, - { url = "https://files.pythonhosted.org/packages/da/ab/7dbf3d11db67c72dbf36ae63dcbc9f30b866c153b3a22ef728523943eee6/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6953f0114f8d6f3d905d98e987d0924dabce59c3cda380bdfaa25a6201563b4", size = 42411441, upload_time = "2025-04-27T12:31:15.675Z" }, - { url = "https://files.pythonhosted.org/packages/90/c3/0c7da7b6dac863af75b64e2f827e4742161128c350bfe7955b426484e226/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:991f85b48a8a5e839b2128590ce07611fae48a904cae6cab1f089c5955b57eb5", size = 40677027, upload_time = "2025-04-27T12:31:24.631Z" }, - { url = "https://files.pythonhosted.org/packages/be/27/43a47fa0ff9053ab5203bb3faeec435d43c0d8bfa40179bfd076cdbd4e1c/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:97c8dc984ed09cb07d618d57d8d4b67a5100a30c3818c2fb0b04599f0da2de7b", size = 42281473, upload_time = "2025-04-27T12:31:31.311Z" }, - { url = "https://files.pythonhosted.org/packages/bc/0b/d56c63b078876da81bbb9ba695a596eabee9b085555ed12bf6eb3b7cab0e/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9b71daf534f4745818f96c214dbc1e6124d7daf059167330b610fc69b6f3d3e3", size = 42893897, upload_time = "2025-04-27T12:31:39.406Z" }, - { url = "https://files.pythonhosted.org/packages/92/ac/7d4bd020ba9145f354012838692d48300c1b8fe5634bfda886abcada67ed/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e8b88758f9303fa5a83d6c90e176714b2fd3852e776fc2d7e42a22dd6c2fb368", size = 44543847, upload_time = "2025-04-27T12:31:45.997Z" }, - { url = "https://files.pythonhosted.org/packages/9d/07/290f4abf9ca702c5df7b47739c1b2c83588641ddfa2cc75e34a301d42e55/pyarrow-20.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:30b3051b7975801c1e1d387e17c588d8ab05ced9b1e14eec57915f79869b5031", size = 25653219, upload_time = "2025-04-27T12:31:54.11Z" }, - { url = "https://files.pythonhosted.org/packages/95/df/720bb17704b10bd69dde086e1400b8eefb8f58df3f8ac9cff6c425bf57f1/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:ca151afa4f9b7bc45bcc791eb9a89e90a9eb2772767d0b1e5389609c7d03db63", size = 30853957, upload_time = "2025-04-27T12:31:59.215Z" }, - { url = "https://files.pythonhosted.org/packages/d9/72/0d5f875efc31baef742ba55a00a25213a19ea64d7176e0fe001c5d8b6e9a/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:4680f01ecd86e0dd63e39eb5cd59ef9ff24a9d166db328679e36c108dc993d4c", size = 32247972, upload_time = "2025-04-27T12:32:05.369Z" }, - { url = "https://files.pythonhosted.org/packages/d5/bc/e48b4fa544d2eea72f7844180eb77f83f2030b84c8dad860f199f94307ed/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f4c8534e2ff059765647aa69b75d6543f9fef59e2cd4c6d18015192565d2b70", size = 41256434, upload_time = "2025-04-27T12:32:11.814Z" }, - { url = "https://files.pythonhosted.org/packages/c3/01/974043a29874aa2cf4f87fb07fd108828fc7362300265a2a64a94965e35b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e1f8a47f4b4ae4c69c4d702cfbdfe4d41e18e5c7ef6f1bb1c50918c1e81c57b", size = 42353648, upload_time = "2025-04-27T12:32:20.766Z" }, - { url = "https://files.pythonhosted.org/packages/68/95/cc0d3634cde9ca69b0e51cbe830d8915ea32dda2157560dda27ff3b3337b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:a1f60dc14658efaa927f8214734f6a01a806d7690be4b3232ba526836d216122", size = 40619853, upload_time = "2025-04-27T12:32:28.1Z" }, - { url = "https://files.pythonhosted.org/packages/29/c2/3ad40e07e96a3e74e7ed7cc8285aadfa84eb848a798c98ec0ad009eb6bcc/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:204a846dca751428991346976b914d6d2a82ae5b8316a6ed99789ebf976551e6", size = 42241743, upload_time = "2025-04-27T12:32:35.792Z" }, - { url = "https://files.pythonhosted.org/packages/eb/cb/65fa110b483339add6a9bc7b6373614166b14e20375d4daa73483755f830/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f3b117b922af5e4c6b9a9115825726cac7d8b1421c37c2b5e24fbacc8930612c", size = 42839441, upload_time = "2025-04-27T12:32:46.64Z" }, - { url = "https://files.pythonhosted.org/packages/98/7b/f30b1954589243207d7a0fbc9997401044bf9a033eec78f6cb50da3f304a/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e724a3fd23ae5b9c010e7be857f4405ed5e679db5c93e66204db1a69f733936a", size = 44503279, upload_time = "2025-04-27T12:32:56.503Z" }, - { url = "https://files.pythonhosted.org/packages/37/40/ad395740cd641869a13bcf60851296c89624662575621968dcfafabaa7f6/pyarrow-20.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:82f1ee5133bd8f49d31be1299dc07f585136679666b502540db854968576faf9", size = 25944982, upload_time = "2025-04-27T12:33:04.72Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067 }, + { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128 }, + { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890 }, + { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775 }, + { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231 }, + { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639 }, + { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549 }, + { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216 }, + { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496 }, + { url = "https://files.pythonhosted.org/packages/9b/aa/daa413b81446d20d4dad2944110dcf4cf4f4179ef7f685dd5a6d7570dc8e/pyarrow-20.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a15532e77b94c61efadde86d10957950392999503b3616b2ffcef7621a002893", size = 30798501 }, + { url = "https://files.pythonhosted.org/packages/ff/75/2303d1caa410925de902d32ac215dc80a7ce7dd8dfe95358c165f2adf107/pyarrow-20.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:dd43f58037443af715f34f1322c782ec463a3c8a94a85fdb2d987ceb5658e061", size = 32277895 }, + { url = "https://files.pythonhosted.org/packages/92/41/fe18c7c0b38b20811b73d1bdd54b1fccba0dab0e51d2048878042d84afa8/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa0d288143a8585806e3cc7c39566407aab646fb9ece164609dac1cfff45f6ae", size = 41327322 }, + { url = "https://files.pythonhosted.org/packages/da/ab/7dbf3d11db67c72dbf36ae63dcbc9f30b866c153b3a22ef728523943eee6/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6953f0114f8d6f3d905d98e987d0924dabce59c3cda380bdfaa25a6201563b4", size = 42411441 }, + { url = "https://files.pythonhosted.org/packages/90/c3/0c7da7b6dac863af75b64e2f827e4742161128c350bfe7955b426484e226/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:991f85b48a8a5e839b2128590ce07611fae48a904cae6cab1f089c5955b57eb5", size = 40677027 }, + { url = "https://files.pythonhosted.org/packages/be/27/43a47fa0ff9053ab5203bb3faeec435d43c0d8bfa40179bfd076cdbd4e1c/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:97c8dc984ed09cb07d618d57d8d4b67a5100a30c3818c2fb0b04599f0da2de7b", size = 42281473 }, + { url = "https://files.pythonhosted.org/packages/bc/0b/d56c63b078876da81bbb9ba695a596eabee9b085555ed12bf6eb3b7cab0e/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9b71daf534f4745818f96c214dbc1e6124d7daf059167330b610fc69b6f3d3e3", size = 42893897 }, + { url = "https://files.pythonhosted.org/packages/92/ac/7d4bd020ba9145f354012838692d48300c1b8fe5634bfda886abcada67ed/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e8b88758f9303fa5a83d6c90e176714b2fd3852e776fc2d7e42a22dd6c2fb368", size = 44543847 }, + { url = "https://files.pythonhosted.org/packages/9d/07/290f4abf9ca702c5df7b47739c1b2c83588641ddfa2cc75e34a301d42e55/pyarrow-20.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:30b3051b7975801c1e1d387e17c588d8ab05ced9b1e14eec57915f79869b5031", size = 25653219 }, + { url = "https://files.pythonhosted.org/packages/95/df/720bb17704b10bd69dde086e1400b8eefb8f58df3f8ac9cff6c425bf57f1/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:ca151afa4f9b7bc45bcc791eb9a89e90a9eb2772767d0b1e5389609c7d03db63", size = 30853957 }, + { url = "https://files.pythonhosted.org/packages/d9/72/0d5f875efc31baef742ba55a00a25213a19ea64d7176e0fe001c5d8b6e9a/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:4680f01ecd86e0dd63e39eb5cd59ef9ff24a9d166db328679e36c108dc993d4c", size = 32247972 }, + { url = "https://files.pythonhosted.org/packages/d5/bc/e48b4fa544d2eea72f7844180eb77f83f2030b84c8dad860f199f94307ed/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f4c8534e2ff059765647aa69b75d6543f9fef59e2cd4c6d18015192565d2b70", size = 41256434 }, + { url = "https://files.pythonhosted.org/packages/c3/01/974043a29874aa2cf4f87fb07fd108828fc7362300265a2a64a94965e35b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e1f8a47f4b4ae4c69c4d702cfbdfe4d41e18e5c7ef6f1bb1c50918c1e81c57b", size = 42353648 }, + { url = "https://files.pythonhosted.org/packages/68/95/cc0d3634cde9ca69b0e51cbe830d8915ea32dda2157560dda27ff3b3337b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:a1f60dc14658efaa927f8214734f6a01a806d7690be4b3232ba526836d216122", size = 40619853 }, + { url = "https://files.pythonhosted.org/packages/29/c2/3ad40e07e96a3e74e7ed7cc8285aadfa84eb848a798c98ec0ad009eb6bcc/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:204a846dca751428991346976b914d6d2a82ae5b8316a6ed99789ebf976551e6", size = 42241743 }, + { url = "https://files.pythonhosted.org/packages/eb/cb/65fa110b483339add6a9bc7b6373614166b14e20375d4daa73483755f830/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f3b117b922af5e4c6b9a9115825726cac7d8b1421c37c2b5e24fbacc8930612c", size = 42839441 }, + { url = "https://files.pythonhosted.org/packages/98/7b/f30b1954589243207d7a0fbc9997401044bf9a033eec78f6cb50da3f304a/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e724a3fd23ae5b9c010e7be857f4405ed5e679db5c93e66204db1a69f733936a", size = 44503279 }, + { url = "https://files.pythonhosted.org/packages/37/40/ad395740cd641869a13bcf60851296c89624662575621968dcfafabaa7f6/pyarrow-20.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:82f1ee5133bd8f49d31be1299dc07f585136679666b502540db854968576faf9", size = 25944982 }, ] [[package]] name = "pycparser" version = "2.22" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload_time = "2024-03-30T13:22:22.564Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload_time = "2024-03-30T13:22:20.476Z" }, + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, ] [[package]] @@ -1478,9 +1478,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload_time = "2025-06-14T08:33:17.137Z" } +sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload_time = "2025-06-14T08:33:14.905Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782 }, ] [[package]] @@ -1490,39 +1490,39 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload_time = "2025-04-23T18:33:52.104Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload_time = "2025-04-23T18:31:25.863Z" }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload_time = "2025-04-23T18:31:27.341Z" }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload_time = "2025-04-23T18:31:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload_time = "2025-04-23T18:31:31.025Z" }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload_time = "2025-04-23T18:31:32.514Z" }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload_time = "2025-04-23T18:31:33.958Z" }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload_time = "2025-04-23T18:31:39.095Z" }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload_time = "2025-04-23T18:31:41.034Z" }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload_time = "2025-04-23T18:31:42.757Z" }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload_time = "2025-04-23T18:31:44.304Z" }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload_time = "2025-04-23T18:31:45.891Z" }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload_time = "2025-04-23T18:31:47.819Z" }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload_time = "2025-04-23T18:31:49.635Z" }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload_time = "2025-04-23T18:31:51.609Z" }, - { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload_time = "2025-04-23T18:31:53.175Z" }, - { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload_time = "2025-04-23T18:31:54.79Z" }, - { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload_time = "2025-04-23T18:31:57.393Z" }, - { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload_time = "2025-04-23T18:31:59.065Z" }, - { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload_time = "2025-04-23T18:32:00.78Z" }, - { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload_time = "2025-04-23T18:32:02.418Z" }, - { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload_time = "2025-04-23T18:32:04.152Z" }, - { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload_time = "2025-04-23T18:32:06.129Z" }, - { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload_time = "2025-04-23T18:32:08.178Z" }, - { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload_time = "2025-04-23T18:32:10.242Z" }, - { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload_time = "2025-04-23T18:32:12.382Z" }, - { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload_time = "2025-04-23T18:32:14.034Z" }, - { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload_time = "2025-04-23T18:32:15.783Z" }, - { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload_time = "2025-04-23T18:32:18.473Z" }, - { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload_time = "2025-04-23T18:32:20.188Z" }, - { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload_time = "2025-04-23T18:32:22.354Z" }, - { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload_time = "2025-04-23T18:32:25.088Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688 }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808 }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580 }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859 }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810 }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498 }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611 }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924 }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196 }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389 }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223 }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473 }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269 }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921 }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162 }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560 }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777 }, ] [[package]] @@ -1538,18 +1538,18 @@ dependencies = [ { name = "requests" }, { name = "wbgapi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/72/3e56d8166ca4b366a4e37c85711a706bba66768f70ba690bdb279f728d8d/pydeflate-2.1.3.tar.gz", hash = "sha256:48a2b74ad900dd8c50dfb1e4cdfcea8ca11cbd2d3a713bf9208f2028fea4cf4f", size = 26586, upload_time = "2025-06-03T09:38:12.25Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/72/3e56d8166ca4b366a4e37c85711a706bba66768f70ba690bdb279f728d8d/pydeflate-2.1.3.tar.gz", hash = "sha256:48a2b74ad900dd8c50dfb1e4cdfcea8ca11cbd2d3a713bf9208f2028fea4cf4f", size = 26586 } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/31/e703ab5bc311c58e4dc00759d7a48a850877b8bbcd64c9778e2315e06bd5/pydeflate-2.1.3-py3-none-any.whl", hash = "sha256:09ebdde04eb2fea1c4b6712889cb2a9d4c2dd22ce0204aaeae64f4335667354f", size = 32540, upload_time = "2025-06-03T09:38:10.858Z" }, + { url = "https://files.pythonhosted.org/packages/31/31/e703ab5bc311c58e4dc00759d7a48a850877b8bbcd64c9778e2315e06bd5/pydeflate-2.1.3-py3-none-any.whl", hash = "sha256:09ebdde04eb2fea1c4b6712889cb2a9d4c2dd22ce0204aaeae64f4335667354f", size = 32540 }, ] [[package]] name = "pygments" version = "2.19.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload_time = "2025-06-21T13:39:12.283Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload_time = "2025-06-21T13:39:07.939Z" }, + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217 }, ] [[package]] @@ -1560,9 +1560,9 @@ dependencies = [ { name = "markdown" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1a/0a/c06b542ac108bfc73200677309cd9188a3a01b127a63f20cadc18d873d88/pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de", size = 853197, upload_time = "2025-06-21T17:56:36.974Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1a/0a/c06b542ac108bfc73200677309cd9188a3a01b127a63f20cadc18d873d88/pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de", size = 853197 } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/d4/10bb14004d3c792811e05e21b5e5dcae805aacb739bd12a0540967b99592/pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2", size = 266143, upload_time = "2025-06-21T17:56:35.356Z" }, + { url = "https://files.pythonhosted.org/packages/98/d4/10bb14004d3c792811e05e21b5e5dcae805aacb739bd12a0540967b99592/pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2", size = 266143 }, ] [[package]] @@ -1572,9 +1572,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "unidecode" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d6/7c/7c45a9e9bf6ddb57b67e66cf4e8076a7baf3a790a3411daac1a7a2df0c5b/pyphonetics-0.5.3.tar.gz", hash = "sha256:2d3c2e359fde91a3c57914f0b5468bba7a5daf38e7927fd999992ea68990fbe4", size = 10314, upload_time = "2020-02-25T12:08:31.049Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/7c/7c45a9e9bf6ddb57b67e66cf4e8076a7baf3a790a3411daac1a7a2df0c5b/pyphonetics-0.5.3.tar.gz", hash = "sha256:2d3c2e359fde91a3c57914f0b5468bba7a5daf38e7927fd999992ea68990fbe4", size = 10314 } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/dd/a7d0a860efd3d4335d538b4361b8e9af8311f2aba2e8c7e4c7a47d623b6e/pyphonetics-0.5.3-py2.py3-none-any.whl", hash = "sha256:e6b29671d0d624dda1cac59c0c5a8a7216d8db504bae4941bfc482e04a0621d1", size = 10729, upload_time = "2020-02-25T12:08:25.368Z" }, + { url = "https://files.pythonhosted.org/packages/bd/dd/a7d0a860efd3d4335d538b4361b8e9af8311f2aba2e8c7e4c7a47d623b6e/pyphonetics-0.5.3-py2.py3-none-any.whl", hash = "sha256:e6b29671d0d624dda1cac59c0c5a8a7216d8db504bae4941bfc482e04a0621d1", size = 10729 }, ] [[package]] @@ -1588,9 +1588,9 @@ dependencies = [ { name = "pluggy" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload_time = "2025-06-18T05:48:06.109Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714 } wheels = [ - { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload_time = "2025-06-18T05:48:03.955Z" }, + { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474 }, ] [[package]] @@ -1602,9 +1602,9 @@ dependencies = [ { name = "pluggy" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/18/99/668cade231f434aaa59bbfbf49469068d2ddd945000621d3d165d2e7dd7b/pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2", size = 69432, upload_time = "2025-06-12T10:47:47.684Z" } +sdist = { url = "https://files.pythonhosted.org/packages/18/99/668cade231f434aaa59bbfbf49469068d2ddd945000621d3d165d2e7dd7b/pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2", size = 69432 } wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/16/4ea354101abb1287856baa4af2732be351c7bee728065aed451b678153fd/pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5", size = 24644, upload_time = "2025-06-12T10:47:45.932Z" }, + { url = "https://files.pythonhosted.org/packages/bc/16/4ea354101abb1287856baa4af2732be351c7bee728065aed451b678153fd/pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5", size = 24644 }, ] [[package]] @@ -1615,9 +1615,9 @@ dependencies = [ { name = "execnet" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/78/b4/439b179d1ff526791eb921115fca8e44e596a13efeda518b9d845a619450/pytest_xdist-3.8.0.tar.gz", hash = "sha256:7e578125ec9bc6050861aa93f2d59f1d8d085595d6551c2c90b6f4fad8d3a9f1", size = 88069, upload_time = "2025-07-01T13:30:59.346Z" } +sdist = { url = "https://files.pythonhosted.org/packages/78/b4/439b179d1ff526791eb921115fca8e44e596a13efeda518b9d845a619450/pytest_xdist-3.8.0.tar.gz", hash = "sha256:7e578125ec9bc6050861aa93f2d59f1d8d085595d6551c2c90b6f4fad8d3a9f1", size = 88069 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ca/31/d4e37e9e550c2b92a9cbc2e4d0b7420a27224968580b5a447f420847c975/pytest_xdist-3.8.0-py3-none-any.whl", hash = "sha256:202ca578cfeb7370784a8c33d6d05bc6e13b4f25b5053c30a152269fd10f0b88", size = 46396, upload_time = "2025-07-01T13:30:56.632Z" }, + { url = "https://files.pythonhosted.org/packages/ca/31/d4e37e9e550c2b92a9cbc2e4d0b7420a27224968580b5a447f420847c975/pytest_xdist-3.8.0-py3-none-any.whl", hash = "sha256:202ca578cfeb7370784a8c33d6d05bc6e13b4f25b5053c30a152269fd10f0b88", size = 46396 }, ] [[package]] @@ -1627,9 +1627,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload_time = "2024-03-01T18:36:20.211Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload_time = "2024-03-01T18:36:18.57Z" }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, ] [[package]] @@ -1639,16 +1639,16 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "charset-normalizer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/4b/3c4cf635311b6203f17c2d693dc15e898969983dd3f729bee3c428aa60d4/python-debian-1.0.1.tar.gz", hash = "sha256:3ada9b83a3d671b58081782c0969cffa0102f6ce433fbbc7cf21275b8b5cc771", size = 127249, upload_time = "2025-03-11T12:27:27.245Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/4b/3c4cf635311b6203f17c2d693dc15e898969983dd3f729bee3c428aa60d4/python-debian-1.0.1.tar.gz", hash = "sha256:3ada9b83a3d671b58081782c0969cffa0102f6ce433fbbc7cf21275b8b5cc771", size = 127249 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/15/e8096189b18dda72e4923622abc10b021ecff723b397e22eff29fb86637b/python_debian-1.0.1-py3-none-any.whl", hash = "sha256:8f137c230c1d9279c2ac892b35915068b2aca090c9fd3da5671ff87af32af12c", size = 137453, upload_time = "2025-03-11T12:27:25.014Z" }, + { url = "https://files.pythonhosted.org/packages/ba/15/e8096189b18dda72e4923622abc10b021ecff723b397e22eff29fb86637b/python_debian-1.0.1-py3-none-any.whl", hash = "sha256:8f137c230c1d9279c2ac892b35915068b2aca090c9fd3da5671ff87af32af12c", size = 137453 }, ] [[package]] name = "python-io-wrapper" version = "0.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/74/8dc5f7d0b7cc1a0ca9e5c320abf11adee2094998c93ae8c9c80d9a8323ff/python-io-wrapper-0.3.1.tar.gz", hash = "sha256:e3391787ff0d9870e739294c6392437915502153e695a017450aa46b6d091762", size = 3271, upload_time = "2022-11-14T15:00:10.932Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/74/8dc5f7d0b7cc1a0ca9e5c320abf11adee2094998c93ae8c9c80d9a8323ff/python-io-wrapper-0.3.1.tar.gz", hash = "sha256:e3391787ff0d9870e739294c6392437915502153e695a017450aa46b6d091762", size = 3271 } [[package]] name = "python-slugify" @@ -1657,18 +1657,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "text-unidecode" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921, upload_time = "2024-02-08T18:32:45.488Z" } +sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051, upload_time = "2024-02-08T18:32:43.911Z" }, + { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051 }, ] [[package]] name = "pytz" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload_time = "2025-03-25T02:25:00.538Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload_time = "2025-03-25T02:24:58.468Z" }, + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, ] [[package]] @@ -1676,38 +1676,38 @@ name = "pywin32" version = "310" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload_time = "2025-03-17T00:55:58.807Z" }, - { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload_time = "2025-03-17T00:56:00.8Z" }, - { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload_time = "2025-03-17T00:56:02.601Z" }, - { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384, upload_time = "2025-03-17T00:56:04.383Z" }, - { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039, upload_time = "2025-03-17T00:56:06.207Z" }, - { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152, upload_time = "2025-03-17T00:56:07.819Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, + { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384 }, + { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039 }, + { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152 }, ] [[package]] name = "pyyaml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload_time = "2024-08-06T20:33:50.674Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload_time = "2024-08-06T20:32:25.131Z" }, - { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload_time = "2024-08-06T20:32:26.511Z" }, - { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload_time = "2024-08-06T20:32:28.363Z" }, - { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload_time = "2024-08-06T20:32:30.058Z" }, - { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload_time = "2024-08-06T20:32:31.881Z" }, - { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload_time = "2024-08-06T20:32:37.083Z" }, - { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload_time = "2024-08-06T20:32:38.898Z" }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload_time = "2024-08-06T20:32:40.241Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload_time = "2024-08-06T20:32:41.93Z" }, - { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload_time = "2024-08-06T20:32:43.4Z" }, - { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload_time = "2024-08-06T20:32:44.801Z" }, - { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload_time = "2024-08-06T20:32:46.432Z" }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload_time = "2024-08-06T20:32:51.188Z" }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload_time = "2024-08-06T20:32:53.019Z" }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload_time = "2024-08-06T20:32:54.708Z" }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload_time = "2024-08-06T20:32:56.985Z" }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload_time = "2024-08-06T20:33:03.001Z" }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload_time = "2024-08-06T20:33:04.33Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, ] [[package]] @@ -1717,9 +1717,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737, upload_time = "2025-05-13T15:24:01.64Z" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737 } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722, upload_time = "2025-05-13T15:23:59.629Z" }, + { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722 }, ] [[package]] @@ -1729,34 +1729,34 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "implementation_name == 'pypy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f1/06/50a4e9648b3e8b992bef8eb632e457307553a89d294103213cfd47b3da69/pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf", size = 280478, upload_time = "2025-06-13T14:09:07.087Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/93/a7/9ad68f55b8834ede477842214feba6a4c786d936c022a67625497aacf61d/pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52", size = 1305438, upload_time = "2025-06-13T14:07:31.676Z" }, - { url = "https://files.pythonhosted.org/packages/ba/ee/26aa0f98665a22bc90ebe12dced1de5f3eaca05363b717f6fb229b3421b3/pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3", size = 895095, upload_time = "2025-06-13T14:07:33.104Z" }, - { url = "https://files.pythonhosted.org/packages/cf/85/c57e7ab216ecd8aa4cc7e3b83b06cc4e9cf45c87b0afc095f10cd5ce87c1/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152", size = 651826, upload_time = "2025-06-13T14:07:34.831Z" }, - { url = "https://files.pythonhosted.org/packages/69/9a/9ea7e230feda9400fb0ae0d61d7d6ddda635e718d941c44eeab22a179d34/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22", size = 839750, upload_time = "2025-06-13T14:07:36.553Z" }, - { url = "https://files.pythonhosted.org/packages/08/66/4cebfbe71f3dfbd417011daca267539f62ed0fbc68105357b68bbb1a25b7/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371", size = 1641357, upload_time = "2025-06-13T14:07:38.21Z" }, - { url = "https://files.pythonhosted.org/packages/ac/f6/b0f62578c08d2471c791287149cb8c2aaea414ae98c6e995c7dbe008adfb/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d", size = 2020281, upload_time = "2025-06-13T14:07:39.599Z" }, - { url = "https://files.pythonhosted.org/packages/37/b9/4f670b15c7498495da9159edc374ec09c88a86d9cd5a47d892f69df23450/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be", size = 1877110, upload_time = "2025-06-13T14:07:41.027Z" }, - { url = "https://files.pythonhosted.org/packages/66/31/9dee25c226295b740609f0d46db2fe972b23b6f5cf786360980524a3ba92/pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4", size = 559297, upload_time = "2025-06-13T14:07:42.533Z" }, - { url = "https://files.pythonhosted.org/packages/9b/12/52da5509800f7ff2d287b2f2b4e636e7ea0f001181cba6964ff6c1537778/pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371", size = 619203, upload_time = "2025-06-13T14:07:43.843Z" }, - { url = "https://files.pythonhosted.org/packages/93/6d/7f2e53b19d1edb1eb4f09ec7c3a1f945ca0aac272099eab757d15699202b/pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e", size = 551927, upload_time = "2025-06-13T14:07:45.51Z" }, - { url = "https://files.pythonhosted.org/packages/19/62/876b27c4ff777db4ceba1c69ea90d3c825bb4f8d5e7cd987ce5802e33c55/pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688", size = 1340826, upload_time = "2025-06-13T14:07:46.881Z" }, - { url = "https://files.pythonhosted.org/packages/43/69/58ef8f4f59d3bcd505260c73bee87b008850f45edca40ddaba54273c35f4/pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38", size = 897283, upload_time = "2025-06-13T14:07:49.562Z" }, - { url = "https://files.pythonhosted.org/packages/43/15/93a0d0396700a60475ad3c5d42c5f1c308d3570bc94626b86c71ef9953e0/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a", size = 660567, upload_time = "2025-06-13T14:07:51.364Z" }, - { url = "https://files.pythonhosted.org/packages/0e/b3/fe055513e498ca32f64509abae19b9c9eb4d7c829e02bd8997dd51b029eb/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9", size = 847681, upload_time = "2025-06-13T14:07:52.77Z" }, - { url = "https://files.pythonhosted.org/packages/b6/4f/ff15300b00b5b602191f3df06bbc8dd4164e805fdd65bb77ffbb9c5facdc/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d", size = 1650148, upload_time = "2025-06-13T14:07:54.178Z" }, - { url = "https://files.pythonhosted.org/packages/c4/6f/84bdfff2a224a6f26a24249a342e5906993c50b0761e311e81b39aef52a7/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44", size = 2023768, upload_time = "2025-06-13T14:07:55.714Z" }, - { url = "https://files.pythonhosted.org/packages/64/39/dc2db178c26a42228c5ac94a9cc595030458aa64c8d796a7727947afbf55/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef", size = 1885199, upload_time = "2025-06-13T14:07:57.166Z" }, - { url = "https://files.pythonhosted.org/packages/c7/21/dae7b06a1f8cdee5d8e7a63d99c5d129c401acc40410bef2cbf42025e26f/pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad", size = 575439, upload_time = "2025-06-13T14:07:58.959Z" }, - { url = "https://files.pythonhosted.org/packages/eb/bc/1709dc55f0970cf4cb8259e435e6773f9946f41a045c2cb90e870b7072da/pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f", size = 639933, upload_time = "2025-06-13T14:08:00.777Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/f1/06/50a4e9648b3e8b992bef8eb632e457307553a89d294103213cfd47b3da69/pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf", size = 280478 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/a7/9ad68f55b8834ede477842214feba6a4c786d936c022a67625497aacf61d/pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52", size = 1305438 }, + { url = "https://files.pythonhosted.org/packages/ba/ee/26aa0f98665a22bc90ebe12dced1de5f3eaca05363b717f6fb229b3421b3/pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3", size = 895095 }, + { url = "https://files.pythonhosted.org/packages/cf/85/c57e7ab216ecd8aa4cc7e3b83b06cc4e9cf45c87b0afc095f10cd5ce87c1/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152", size = 651826 }, + { url = "https://files.pythonhosted.org/packages/69/9a/9ea7e230feda9400fb0ae0d61d7d6ddda635e718d941c44eeab22a179d34/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22", size = 839750 }, + { url = "https://files.pythonhosted.org/packages/08/66/4cebfbe71f3dfbd417011daca267539f62ed0fbc68105357b68bbb1a25b7/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371", size = 1641357 }, + { url = "https://files.pythonhosted.org/packages/ac/f6/b0f62578c08d2471c791287149cb8c2aaea414ae98c6e995c7dbe008adfb/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d", size = 2020281 }, + { url = "https://files.pythonhosted.org/packages/37/b9/4f670b15c7498495da9159edc374ec09c88a86d9cd5a47d892f69df23450/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be", size = 1877110 }, + { url = "https://files.pythonhosted.org/packages/66/31/9dee25c226295b740609f0d46db2fe972b23b6f5cf786360980524a3ba92/pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4", size = 559297 }, + { url = "https://files.pythonhosted.org/packages/9b/12/52da5509800f7ff2d287b2f2b4e636e7ea0f001181cba6964ff6c1537778/pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371", size = 619203 }, + { url = "https://files.pythonhosted.org/packages/93/6d/7f2e53b19d1edb1eb4f09ec7c3a1f945ca0aac272099eab757d15699202b/pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e", size = 551927 }, + { url = "https://files.pythonhosted.org/packages/19/62/876b27c4ff777db4ceba1c69ea90d3c825bb4f8d5e7cd987ce5802e33c55/pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688", size = 1340826 }, + { url = "https://files.pythonhosted.org/packages/43/69/58ef8f4f59d3bcd505260c73bee87b008850f45edca40ddaba54273c35f4/pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38", size = 897283 }, + { url = "https://files.pythonhosted.org/packages/43/15/93a0d0396700a60475ad3c5d42c5f1c308d3570bc94626b86c71ef9953e0/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a", size = 660567 }, + { url = "https://files.pythonhosted.org/packages/0e/b3/fe055513e498ca32f64509abae19b9c9eb4d7c829e02bd8997dd51b029eb/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9", size = 847681 }, + { url = "https://files.pythonhosted.org/packages/b6/4f/ff15300b00b5b602191f3df06bbc8dd4164e805fdd65bb77ffbb9c5facdc/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d", size = 1650148 }, + { url = "https://files.pythonhosted.org/packages/c4/6f/84bdfff2a224a6f26a24249a342e5906993c50b0761e311e81b39aef52a7/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44", size = 2023768 }, + { url = "https://files.pythonhosted.org/packages/64/39/dc2db178c26a42228c5ac94a9cc595030458aa64c8d796a7727947afbf55/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef", size = 1885199 }, + { url = "https://files.pythonhosted.org/packages/c7/21/dae7b06a1f8cdee5d8e7a63d99c5d129c401acc40410bef2cbf42025e26f/pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad", size = 575439 }, + { url = "https://files.pythonhosted.org/packages/eb/bc/1709dc55f0970cf4cb8259e435e6773f9946f41a045c2cb90e870b7072da/pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f", size = 639933 }, ] [[package]] name = "ratelimit" version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ab/38/ff60c8fc9e002d50d48822cc5095deb8ebbc5f91a6b8fdd9731c87a147c9/ratelimit-2.2.1.tar.gz", hash = "sha256:af8a9b64b821529aca09ebaf6d8d279100d766f19e90b5059ac6a718ca6dee42", size = 5251, upload_time = "2018-12-17T18:55:49.675Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/38/ff60c8fc9e002d50d48822cc5095deb8ebbc5f91a6b8fdd9731c87a147c9/ratelimit-2.2.1.tar.gz", hash = "sha256:af8a9b64b821529aca09ebaf6d8d279100d766f19e90b5059ac6a718ca6dee42", size = 5251 } [[package]] name = "referencing" @@ -1767,9 +1767,9 @@ dependencies = [ { name = "rpds-py" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload_time = "2025-01-25T08:48:16.138Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload_time = "2025-01-25T08:48:14.241Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 }, ] [[package]] @@ -1782,9 +1782,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload_time = "2025-06-09T16:43:07.34Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload_time = "2025-06-09T16:43:05.728Z" }, + { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847 }, ] [[package]] @@ -1794,9 +1794,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/97/bf44e6c6bd8ddbb99943baf7ba8b1a8485bcd2fe0e55e5708d7fee4ff1ae/requests_file-2.1.0.tar.gz", hash = "sha256:0f549a3f3b0699415ac04d167e9cb39bccfb730cb832b4d20be3d9867356e658", size = 6891, upload_time = "2024-05-21T16:28:00.24Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/97/bf44e6c6bd8ddbb99943baf7ba8b1a8485bcd2fe0e55e5708d7fee4ff1ae/requests_file-2.1.0.tar.gz", hash = "sha256:0f549a3f3b0699415ac04d167e9cb39bccfb730cb832b4d20be3d9867356e658", size = 6891 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/25/dd878a121fcfdf38f52850f11c512e13ec87c2ea72385933818e5b6c15ce/requests_file-2.1.0-py2.py3-none-any.whl", hash = "sha256:cf270de5a4c5874e84599fc5778303d496c10ae5e870bfa378818f35d21bda5c", size = 4244, upload_time = "2024-05-21T16:27:57.733Z" }, + { url = "https://files.pythonhosted.org/packages/d7/25/dd878a121fcfdf38f52850f11c512e13ec87c2ea72385933818e5b6c15ce/requests_file-2.1.0-py2.py3-none-any.whl", hash = "sha256:cf270de5a4c5874e84599fc5778303d496c10ae5e870bfa378818f35d21bda5c", size = 4244 }, ] [[package]] @@ -1813,18 +1813,18 @@ dependencies = [ { name = "python-debian" }, { name = "tomlkit" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/43/35421efe0e69823787b331362e11cc16bb697cd6f19cbed284d421615f14/reuse-5.0.2.tar.gz", hash = "sha256:878016ae5dd29c10bad4606d6676c12a268c12aa9fcfea66403598e16eed085c", size = 358798, upload_time = "2024-11-14T09:33:17.512Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/43/35421efe0e69823787b331362e11cc16bb697cd6f19cbed284d421615f14/reuse-5.0.2.tar.gz", hash = "sha256:878016ae5dd29c10bad4606d6676c12a268c12aa9fcfea66403598e16eed085c", size = 358798 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0a/2f/73de654df9e7e5f67d742c1d949b5c0c7c1203e84b2272d9e34a91faaf5c/reuse-5.0.2-cp313-cp313-manylinux_2_40_x86_64.whl", hash = "sha256:7a680f00324e87a72061677a892d8cbabfddf7adcf7a5376aeeed2d78995bbbb", size = 184309, upload_time = "2024-11-14T09:33:15.047Z" }, + { url = "https://files.pythonhosted.org/packages/0a/2f/73de654df9e7e5f67d742c1d949b5c0c7c1203e84b2272d9e34a91faaf5c/reuse-5.0.2-cp313-cp313-manylinux_2_40_x86_64.whl", hash = "sha256:7a680f00324e87a72061677a892d8cbabfddf7adcf7a5376aeeed2d78995bbbb", size = 184309 }, ] [[package]] name = "rfc3986" version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026, upload_time = "2022-01-10T00:52:30.832Z" } +sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326, upload_time = "2022-01-10T00:52:29.594Z" }, + { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326 }, ] [[package]] @@ -1835,85 +1835,85 @@ dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078, upload_time = "2025-03-30T14:15:14.23Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229, upload_time = "2025-03-30T14:15:12.283Z" }, + { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229 }, ] [[package]] name = "rpds-py" version = "0.26.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/aa/4456d84bbb54adc6a916fb10c9b374f78ac840337644e4a5eda229c81275/rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0", size = 27385, upload_time = "2025-07-01T15:57:13.958Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ea/86/90eb87c6f87085868bd077c7a9938006eb1ce19ed4d06944a90d3560fce2/rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d", size = 363933, upload_time = "2025-07-01T15:54:15.734Z" }, - { url = "https://files.pythonhosted.org/packages/63/78/4469f24d34636242c924626082b9586f064ada0b5dbb1e9d096ee7a8e0c6/rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136", size = 350447, upload_time = "2025-07-01T15:54:16.922Z" }, - { url = "https://files.pythonhosted.org/packages/ad/91/c448ed45efdfdade82348d5e7995e15612754826ea640afc20915119734f/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582", size = 384711, upload_time = "2025-07-01T15:54:18.101Z" }, - { url = "https://files.pythonhosted.org/packages/ec/43/e5c86fef4be7f49828bdd4ecc8931f0287b1152c0bb0163049b3218740e7/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e", size = 400865, upload_time = "2025-07-01T15:54:19.295Z" }, - { url = "https://files.pythonhosted.org/packages/55/34/e00f726a4d44f22d5c5fe2e5ddd3ac3d7fd3f74a175607781fbdd06fe375/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15", size = 517763, upload_time = "2025-07-01T15:54:20.858Z" }, - { url = "https://files.pythonhosted.org/packages/52/1c/52dc20c31b147af724b16104500fba13e60123ea0334beba7b40e33354b4/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8", size = 406651, upload_time = "2025-07-01T15:54:22.508Z" }, - { url = "https://files.pythonhosted.org/packages/2e/77/87d7bfabfc4e821caa35481a2ff6ae0b73e6a391bb6b343db2c91c2b9844/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a", size = 386079, upload_time = "2025-07-01T15:54:23.987Z" }, - { url = "https://files.pythonhosted.org/packages/e3/d4/7f2200c2d3ee145b65b3cddc4310d51f7da6a26634f3ac87125fd789152a/rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323", size = 421379, upload_time = "2025-07-01T15:54:25.073Z" }, - { url = "https://files.pythonhosted.org/packages/ae/13/9fdd428b9c820869924ab62236b8688b122baa22d23efdd1c566938a39ba/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158", size = 562033, upload_time = "2025-07-01T15:54:26.225Z" }, - { url = "https://files.pythonhosted.org/packages/f3/e1/b69686c3bcbe775abac3a4c1c30a164a2076d28df7926041f6c0eb5e8d28/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3", size = 591639, upload_time = "2025-07-01T15:54:27.424Z" }, - { url = "https://files.pythonhosted.org/packages/5c/c9/1e3d8c8863c84a90197ac577bbc3d796a92502124c27092413426f670990/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2", size = 557105, upload_time = "2025-07-01T15:54:29.93Z" }, - { url = "https://files.pythonhosted.org/packages/9f/c5/90c569649057622959f6dcc40f7b516539608a414dfd54b8d77e3b201ac0/rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44", size = 223272, upload_time = "2025-07-01T15:54:31.128Z" }, - { url = "https://files.pythonhosted.org/packages/7d/16/19f5d9f2a556cfed454eebe4d354c38d51c20f3db69e7b4ce6cff904905d/rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c", size = 234995, upload_time = "2025-07-01T15:54:32.195Z" }, - { url = "https://files.pythonhosted.org/packages/83/f0/7935e40b529c0e752dfaa7880224771b51175fce08b41ab4a92eb2fbdc7f/rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8", size = 223198, upload_time = "2025-07-01T15:54:33.271Z" }, - { url = "https://files.pythonhosted.org/packages/6a/67/bb62d0109493b12b1c6ab00de7a5566aa84c0e44217c2d94bee1bd370da9/rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d", size = 363917, upload_time = "2025-07-01T15:54:34.755Z" }, - { url = "https://files.pythonhosted.org/packages/4b/f3/34e6ae1925a5706c0f002a8d2d7f172373b855768149796af87bd65dcdb9/rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1", size = 350073, upload_time = "2025-07-01T15:54:36.292Z" }, - { url = "https://files.pythonhosted.org/packages/75/83/1953a9d4f4e4de7fd0533733e041c28135f3c21485faaef56a8aadbd96b5/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e", size = 384214, upload_time = "2025-07-01T15:54:37.469Z" }, - { url = "https://files.pythonhosted.org/packages/48/0e/983ed1b792b3322ea1d065e67f4b230f3b96025f5ce3878cc40af09b7533/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1", size = 400113, upload_time = "2025-07-01T15:54:38.954Z" }, - { url = "https://files.pythonhosted.org/packages/69/7f/36c0925fff6f660a80be259c5b4f5e53a16851f946eb080351d057698528/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9", size = 515189, upload_time = "2025-07-01T15:54:40.57Z" }, - { url = "https://files.pythonhosted.org/packages/13/45/cbf07fc03ba7a9b54662c9badb58294ecfb24f828b9732970bd1a431ed5c/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7", size = 406998, upload_time = "2025-07-01T15:54:43.025Z" }, - { url = "https://files.pythonhosted.org/packages/6c/b0/8fa5e36e58657997873fd6a1cf621285ca822ca75b4b3434ead047daa307/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04", size = 385903, upload_time = "2025-07-01T15:54:44.752Z" }, - { url = "https://files.pythonhosted.org/packages/4b/f7/b25437772f9f57d7a9fbd73ed86d0dcd76b4c7c6998348c070d90f23e315/rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1", size = 419785, upload_time = "2025-07-01T15:54:46.043Z" }, - { url = "https://files.pythonhosted.org/packages/a7/6b/63ffa55743dfcb4baf2e9e77a0b11f7f97ed96a54558fcb5717a4b2cd732/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9", size = 561329, upload_time = "2025-07-01T15:54:47.64Z" }, - { url = "https://files.pythonhosted.org/packages/2f/07/1f4f5e2886c480a2346b1e6759c00278b8a69e697ae952d82ae2e6ee5db0/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9", size = 590875, upload_time = "2025-07-01T15:54:48.9Z" }, - { url = "https://files.pythonhosted.org/packages/cc/bc/e6639f1b91c3a55f8c41b47d73e6307051b6e246254a827ede730624c0f8/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba", size = 556636, upload_time = "2025-07-01T15:54:50.619Z" }, - { url = "https://files.pythonhosted.org/packages/05/4c/b3917c45566f9f9a209d38d9b54a1833f2bb1032a3e04c66f75726f28876/rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b", size = 222663, upload_time = "2025-07-01T15:54:52.023Z" }, - { url = "https://files.pythonhosted.org/packages/e0/0b/0851bdd6025775aaa2365bb8de0697ee2558184c800bfef8d7aef5ccde58/rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5", size = 234428, upload_time = "2025-07-01T15:54:53.692Z" }, - { url = "https://files.pythonhosted.org/packages/ed/e8/a47c64ed53149c75fb581e14a237b7b7cd18217e969c30d474d335105622/rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256", size = 222571, upload_time = "2025-07-01T15:54:54.822Z" }, - { url = "https://files.pythonhosted.org/packages/89/bf/3d970ba2e2bcd17d2912cb42874107390f72873e38e79267224110de5e61/rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618", size = 360475, upload_time = "2025-07-01T15:54:56.228Z" }, - { url = "https://files.pythonhosted.org/packages/82/9f/283e7e2979fc4ec2d8ecee506d5a3675fce5ed9b4b7cb387ea5d37c2f18d/rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35", size = 346692, upload_time = "2025-07-01T15:54:58.561Z" }, - { url = "https://files.pythonhosted.org/packages/e3/03/7e50423c04d78daf391da3cc4330bdb97042fc192a58b186f2d5deb7befd/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f", size = 379415, upload_time = "2025-07-01T15:54:59.751Z" }, - { url = "https://files.pythonhosted.org/packages/57/00/d11ee60d4d3b16808432417951c63df803afb0e0fc672b5e8d07e9edaaae/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83", size = 391783, upload_time = "2025-07-01T15:55:00.898Z" }, - { url = "https://files.pythonhosted.org/packages/08/b3/1069c394d9c0d6d23c5b522e1f6546b65793a22950f6e0210adcc6f97c3e/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1", size = 512844, upload_time = "2025-07-01T15:55:02.201Z" }, - { url = "https://files.pythonhosted.org/packages/08/3b/c4fbf0926800ed70b2c245ceca99c49f066456755f5d6eb8863c2c51e6d0/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8", size = 402105, upload_time = "2025-07-01T15:55:03.698Z" }, - { url = "https://files.pythonhosted.org/packages/1c/b0/db69b52ca07413e568dae9dc674627a22297abb144c4d6022c6d78f1e5cc/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f", size = 383440, upload_time = "2025-07-01T15:55:05.398Z" }, - { url = "https://files.pythonhosted.org/packages/4c/e1/c65255ad5b63903e56b3bb3ff9dcc3f4f5c3badde5d08c741ee03903e951/rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed", size = 412759, upload_time = "2025-07-01T15:55:08.316Z" }, - { url = "https://files.pythonhosted.org/packages/e4/22/bb731077872377a93c6e93b8a9487d0406c70208985831034ccdeed39c8e/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632", size = 556032, upload_time = "2025-07-01T15:55:09.52Z" }, - { url = "https://files.pythonhosted.org/packages/e0/8b/393322ce7bac5c4530fb96fc79cc9ea2f83e968ff5f6e873f905c493e1c4/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c", size = 585416, upload_time = "2025-07-01T15:55:11.216Z" }, - { url = "https://files.pythonhosted.org/packages/49/ae/769dc372211835bf759319a7aae70525c6eb523e3371842c65b7ef41c9c6/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0", size = 554049, upload_time = "2025-07-01T15:55:13.004Z" }, - { url = "https://files.pythonhosted.org/packages/6b/f9/4c43f9cc203d6ba44ce3146246cdc38619d92c7bd7bad4946a3491bd5b70/rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9", size = 218428, upload_time = "2025-07-01T15:55:14.486Z" }, - { url = "https://files.pythonhosted.org/packages/7e/8b/9286b7e822036a4a977f2f1e851c7345c20528dbd56b687bb67ed68a8ede/rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9", size = 231524, upload_time = "2025-07-01T15:55:15.745Z" }, - { url = "https://files.pythonhosted.org/packages/55/07/029b7c45db910c74e182de626dfdae0ad489a949d84a468465cd0ca36355/rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a", size = 364292, upload_time = "2025-07-01T15:55:17.001Z" }, - { url = "https://files.pythonhosted.org/packages/13/d1/9b3d3f986216b4d1f584878dca15ce4797aaf5d372d738974ba737bf68d6/rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf", size = 350334, upload_time = "2025-07-01T15:55:18.922Z" }, - { url = "https://files.pythonhosted.org/packages/18/98/16d5e7bc9ec715fa9668731d0cf97f6b032724e61696e2db3d47aeb89214/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12", size = 384875, upload_time = "2025-07-01T15:55:20.399Z" }, - { url = "https://files.pythonhosted.org/packages/f9/13/aa5e2b1ec5ab0e86a5c464d53514c0467bec6ba2507027d35fc81818358e/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20", size = 399993, upload_time = "2025-07-01T15:55:21.729Z" }, - { url = "https://files.pythonhosted.org/packages/17/03/8021810b0e97923abdbab6474c8b77c69bcb4b2c58330777df9ff69dc559/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331", size = 516683, upload_time = "2025-07-01T15:55:22.918Z" }, - { url = "https://files.pythonhosted.org/packages/dc/b1/da8e61c87c2f3d836954239fdbbfb477bb7b54d74974d8f6fcb34342d166/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f", size = 408825, upload_time = "2025-07-01T15:55:24.207Z" }, - { url = "https://files.pythonhosted.org/packages/38/bc/1fc173edaaa0e52c94b02a655db20697cb5fa954ad5a8e15a2c784c5cbdd/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246", size = 387292, upload_time = "2025-07-01T15:55:25.554Z" }, - { url = "https://files.pythonhosted.org/packages/7c/eb/3a9bb4bd90867d21916f253caf4f0d0be7098671b6715ad1cead9fe7bab9/rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387", size = 420435, upload_time = "2025-07-01T15:55:27.798Z" }, - { url = "https://files.pythonhosted.org/packages/cd/16/e066dcdb56f5632713445271a3f8d3d0b426d51ae9c0cca387799df58b02/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af", size = 562410, upload_time = "2025-07-01T15:55:29.057Z" }, - { url = "https://files.pythonhosted.org/packages/60/22/ddbdec7eb82a0dc2e455be44c97c71c232983e21349836ce9f272e8a3c29/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33", size = 590724, upload_time = "2025-07-01T15:55:30.719Z" }, - { url = "https://files.pythonhosted.org/packages/2c/b4/95744085e65b7187d83f2fcb0bef70716a1ea0a9e5d8f7f39a86e5d83424/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953", size = 558285, upload_time = "2025-07-01T15:55:31.981Z" }, - { url = "https://files.pythonhosted.org/packages/37/37/6309a75e464d1da2559446f9c811aa4d16343cebe3dbb73701e63f760caa/rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9", size = 223459, upload_time = "2025-07-01T15:55:33.312Z" }, - { url = "https://files.pythonhosted.org/packages/d9/6f/8e9c11214c46098b1d1391b7e02b70bb689ab963db3b19540cba17315291/rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37", size = 236083, upload_time = "2025-07-01T15:55:34.933Z" }, - { url = "https://files.pythonhosted.org/packages/47/af/9c4638994dd623d51c39892edd9d08e8be8220a4b7e874fa02c2d6e91955/rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867", size = 223291, upload_time = "2025-07-01T15:55:36.202Z" }, - { url = "https://files.pythonhosted.org/packages/4d/db/669a241144460474aab03e254326b32c42def83eb23458a10d163cb9b5ce/rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da", size = 361445, upload_time = "2025-07-01T15:55:37.483Z" }, - { url = "https://files.pythonhosted.org/packages/3b/2d/133f61cc5807c6c2fd086a46df0eb8f63a23f5df8306ff9f6d0fd168fecc/rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7", size = 347206, upload_time = "2025-07-01T15:55:38.828Z" }, - { url = "https://files.pythonhosted.org/packages/05/bf/0e8fb4c05f70273469eecf82f6ccf37248558526a45321644826555db31b/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad", size = 380330, upload_time = "2025-07-01T15:55:40.175Z" }, - { url = "https://files.pythonhosted.org/packages/d4/a8/060d24185d8b24d3923322f8d0ede16df4ade226a74e747b8c7c978e3dd3/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d", size = 392254, upload_time = "2025-07-01T15:55:42.015Z" }, - { url = "https://files.pythonhosted.org/packages/b9/7b/7c2e8a9ee3e6bc0bae26bf29f5219955ca2fbb761dca996a83f5d2f773fe/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca", size = 516094, upload_time = "2025-07-01T15:55:43.603Z" }, - { url = "https://files.pythonhosted.org/packages/75/d6/f61cafbed8ba1499b9af9f1777a2a199cd888f74a96133d8833ce5eaa9c5/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19", size = 402889, upload_time = "2025-07-01T15:55:45.275Z" }, - { url = "https://files.pythonhosted.org/packages/92/19/c8ac0a8a8df2dd30cdec27f69298a5c13e9029500d6d76718130f5e5be10/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8", size = 384301, upload_time = "2025-07-01T15:55:47.098Z" }, - { url = "https://files.pythonhosted.org/packages/41/e1/6b1859898bc292a9ce5776016c7312b672da00e25cec74d7beced1027286/rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b", size = 412891, upload_time = "2025-07-01T15:55:48.412Z" }, - { url = "https://files.pythonhosted.org/packages/ef/b9/ceb39af29913c07966a61367b3c08b4f71fad841e32c6b59a129d5974698/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a", size = 557044, upload_time = "2025-07-01T15:55:49.816Z" }, - { url = "https://files.pythonhosted.org/packages/2f/27/35637b98380731a521f8ec4f3fd94e477964f04f6b2f8f7af8a2d889a4af/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170", size = 585774, upload_time = "2025-07-01T15:55:51.192Z" }, - { url = "https://files.pythonhosted.org/packages/52/d9/3f0f105420fecd18551b678c9a6ce60bd23986098b252a56d35781b3e7e9/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e", size = 554886, upload_time = "2025-07-01T15:55:52.541Z" }, - { url = "https://files.pythonhosted.org/packages/6b/c5/347c056a90dc8dd9bc240a08c527315008e1b5042e7a4cf4ac027be9d38a/rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f", size = 219027, upload_time = "2025-07-01T15:55:53.874Z" }, - { url = "https://files.pythonhosted.org/packages/75/04/5302cea1aa26d886d34cadbf2dc77d90d7737e576c0065f357b96dc7a1a6/rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7", size = 232821, upload_time = "2025-07-01T15:55:55.167Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/a5/aa/4456d84bbb54adc6a916fb10c9b374f78ac840337644e4a5eda229c81275/rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0", size = 27385 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/86/90eb87c6f87085868bd077c7a9938006eb1ce19ed4d06944a90d3560fce2/rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d", size = 363933 }, + { url = "https://files.pythonhosted.org/packages/63/78/4469f24d34636242c924626082b9586f064ada0b5dbb1e9d096ee7a8e0c6/rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136", size = 350447 }, + { url = "https://files.pythonhosted.org/packages/ad/91/c448ed45efdfdade82348d5e7995e15612754826ea640afc20915119734f/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582", size = 384711 }, + { url = "https://files.pythonhosted.org/packages/ec/43/e5c86fef4be7f49828bdd4ecc8931f0287b1152c0bb0163049b3218740e7/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e", size = 400865 }, + { url = "https://files.pythonhosted.org/packages/55/34/e00f726a4d44f22d5c5fe2e5ddd3ac3d7fd3f74a175607781fbdd06fe375/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15", size = 517763 }, + { url = "https://files.pythonhosted.org/packages/52/1c/52dc20c31b147af724b16104500fba13e60123ea0334beba7b40e33354b4/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8", size = 406651 }, + { url = "https://files.pythonhosted.org/packages/2e/77/87d7bfabfc4e821caa35481a2ff6ae0b73e6a391bb6b343db2c91c2b9844/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a", size = 386079 }, + { url = "https://files.pythonhosted.org/packages/e3/d4/7f2200c2d3ee145b65b3cddc4310d51f7da6a26634f3ac87125fd789152a/rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323", size = 421379 }, + { url = "https://files.pythonhosted.org/packages/ae/13/9fdd428b9c820869924ab62236b8688b122baa22d23efdd1c566938a39ba/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158", size = 562033 }, + { url = "https://files.pythonhosted.org/packages/f3/e1/b69686c3bcbe775abac3a4c1c30a164a2076d28df7926041f6c0eb5e8d28/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3", size = 591639 }, + { url = "https://files.pythonhosted.org/packages/5c/c9/1e3d8c8863c84a90197ac577bbc3d796a92502124c27092413426f670990/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2", size = 557105 }, + { url = "https://files.pythonhosted.org/packages/9f/c5/90c569649057622959f6dcc40f7b516539608a414dfd54b8d77e3b201ac0/rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44", size = 223272 }, + { url = "https://files.pythonhosted.org/packages/7d/16/19f5d9f2a556cfed454eebe4d354c38d51c20f3db69e7b4ce6cff904905d/rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c", size = 234995 }, + { url = "https://files.pythonhosted.org/packages/83/f0/7935e40b529c0e752dfaa7880224771b51175fce08b41ab4a92eb2fbdc7f/rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8", size = 223198 }, + { url = "https://files.pythonhosted.org/packages/6a/67/bb62d0109493b12b1c6ab00de7a5566aa84c0e44217c2d94bee1bd370da9/rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d", size = 363917 }, + { url = "https://files.pythonhosted.org/packages/4b/f3/34e6ae1925a5706c0f002a8d2d7f172373b855768149796af87bd65dcdb9/rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1", size = 350073 }, + { url = "https://files.pythonhosted.org/packages/75/83/1953a9d4f4e4de7fd0533733e041c28135f3c21485faaef56a8aadbd96b5/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e", size = 384214 }, + { url = "https://files.pythonhosted.org/packages/48/0e/983ed1b792b3322ea1d065e67f4b230f3b96025f5ce3878cc40af09b7533/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1", size = 400113 }, + { url = "https://files.pythonhosted.org/packages/69/7f/36c0925fff6f660a80be259c5b4f5e53a16851f946eb080351d057698528/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9", size = 515189 }, + { url = "https://files.pythonhosted.org/packages/13/45/cbf07fc03ba7a9b54662c9badb58294ecfb24f828b9732970bd1a431ed5c/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7", size = 406998 }, + { url = "https://files.pythonhosted.org/packages/6c/b0/8fa5e36e58657997873fd6a1cf621285ca822ca75b4b3434ead047daa307/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04", size = 385903 }, + { url = "https://files.pythonhosted.org/packages/4b/f7/b25437772f9f57d7a9fbd73ed86d0dcd76b4c7c6998348c070d90f23e315/rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1", size = 419785 }, + { url = "https://files.pythonhosted.org/packages/a7/6b/63ffa55743dfcb4baf2e9e77a0b11f7f97ed96a54558fcb5717a4b2cd732/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9", size = 561329 }, + { url = "https://files.pythonhosted.org/packages/2f/07/1f4f5e2886c480a2346b1e6759c00278b8a69e697ae952d82ae2e6ee5db0/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9", size = 590875 }, + { url = "https://files.pythonhosted.org/packages/cc/bc/e6639f1b91c3a55f8c41b47d73e6307051b6e246254a827ede730624c0f8/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba", size = 556636 }, + { url = "https://files.pythonhosted.org/packages/05/4c/b3917c45566f9f9a209d38d9b54a1833f2bb1032a3e04c66f75726f28876/rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b", size = 222663 }, + { url = "https://files.pythonhosted.org/packages/e0/0b/0851bdd6025775aaa2365bb8de0697ee2558184c800bfef8d7aef5ccde58/rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5", size = 234428 }, + { url = "https://files.pythonhosted.org/packages/ed/e8/a47c64ed53149c75fb581e14a237b7b7cd18217e969c30d474d335105622/rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256", size = 222571 }, + { url = "https://files.pythonhosted.org/packages/89/bf/3d970ba2e2bcd17d2912cb42874107390f72873e38e79267224110de5e61/rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618", size = 360475 }, + { url = "https://files.pythonhosted.org/packages/82/9f/283e7e2979fc4ec2d8ecee506d5a3675fce5ed9b4b7cb387ea5d37c2f18d/rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35", size = 346692 }, + { url = "https://files.pythonhosted.org/packages/e3/03/7e50423c04d78daf391da3cc4330bdb97042fc192a58b186f2d5deb7befd/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f", size = 379415 }, + { url = "https://files.pythonhosted.org/packages/57/00/d11ee60d4d3b16808432417951c63df803afb0e0fc672b5e8d07e9edaaae/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83", size = 391783 }, + { url = "https://files.pythonhosted.org/packages/08/b3/1069c394d9c0d6d23c5b522e1f6546b65793a22950f6e0210adcc6f97c3e/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1", size = 512844 }, + { url = "https://files.pythonhosted.org/packages/08/3b/c4fbf0926800ed70b2c245ceca99c49f066456755f5d6eb8863c2c51e6d0/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8", size = 402105 }, + { url = "https://files.pythonhosted.org/packages/1c/b0/db69b52ca07413e568dae9dc674627a22297abb144c4d6022c6d78f1e5cc/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f", size = 383440 }, + { url = "https://files.pythonhosted.org/packages/4c/e1/c65255ad5b63903e56b3bb3ff9dcc3f4f5c3badde5d08c741ee03903e951/rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed", size = 412759 }, + { url = "https://files.pythonhosted.org/packages/e4/22/bb731077872377a93c6e93b8a9487d0406c70208985831034ccdeed39c8e/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632", size = 556032 }, + { url = "https://files.pythonhosted.org/packages/e0/8b/393322ce7bac5c4530fb96fc79cc9ea2f83e968ff5f6e873f905c493e1c4/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c", size = 585416 }, + { url = "https://files.pythonhosted.org/packages/49/ae/769dc372211835bf759319a7aae70525c6eb523e3371842c65b7ef41c9c6/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0", size = 554049 }, + { url = "https://files.pythonhosted.org/packages/6b/f9/4c43f9cc203d6ba44ce3146246cdc38619d92c7bd7bad4946a3491bd5b70/rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9", size = 218428 }, + { url = "https://files.pythonhosted.org/packages/7e/8b/9286b7e822036a4a977f2f1e851c7345c20528dbd56b687bb67ed68a8ede/rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9", size = 231524 }, + { url = "https://files.pythonhosted.org/packages/55/07/029b7c45db910c74e182de626dfdae0ad489a949d84a468465cd0ca36355/rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a", size = 364292 }, + { url = "https://files.pythonhosted.org/packages/13/d1/9b3d3f986216b4d1f584878dca15ce4797aaf5d372d738974ba737bf68d6/rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf", size = 350334 }, + { url = "https://files.pythonhosted.org/packages/18/98/16d5e7bc9ec715fa9668731d0cf97f6b032724e61696e2db3d47aeb89214/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12", size = 384875 }, + { url = "https://files.pythonhosted.org/packages/f9/13/aa5e2b1ec5ab0e86a5c464d53514c0467bec6ba2507027d35fc81818358e/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20", size = 399993 }, + { url = "https://files.pythonhosted.org/packages/17/03/8021810b0e97923abdbab6474c8b77c69bcb4b2c58330777df9ff69dc559/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331", size = 516683 }, + { url = "https://files.pythonhosted.org/packages/dc/b1/da8e61c87c2f3d836954239fdbbfb477bb7b54d74974d8f6fcb34342d166/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f", size = 408825 }, + { url = "https://files.pythonhosted.org/packages/38/bc/1fc173edaaa0e52c94b02a655db20697cb5fa954ad5a8e15a2c784c5cbdd/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246", size = 387292 }, + { url = "https://files.pythonhosted.org/packages/7c/eb/3a9bb4bd90867d21916f253caf4f0d0be7098671b6715ad1cead9fe7bab9/rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387", size = 420435 }, + { url = "https://files.pythonhosted.org/packages/cd/16/e066dcdb56f5632713445271a3f8d3d0b426d51ae9c0cca387799df58b02/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af", size = 562410 }, + { url = "https://files.pythonhosted.org/packages/60/22/ddbdec7eb82a0dc2e455be44c97c71c232983e21349836ce9f272e8a3c29/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33", size = 590724 }, + { url = "https://files.pythonhosted.org/packages/2c/b4/95744085e65b7187d83f2fcb0bef70716a1ea0a9e5d8f7f39a86e5d83424/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953", size = 558285 }, + { url = "https://files.pythonhosted.org/packages/37/37/6309a75e464d1da2559446f9c811aa4d16343cebe3dbb73701e63f760caa/rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9", size = 223459 }, + { url = "https://files.pythonhosted.org/packages/d9/6f/8e9c11214c46098b1d1391b7e02b70bb689ab963db3b19540cba17315291/rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37", size = 236083 }, + { url = "https://files.pythonhosted.org/packages/47/af/9c4638994dd623d51c39892edd9d08e8be8220a4b7e874fa02c2d6e91955/rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867", size = 223291 }, + { url = "https://files.pythonhosted.org/packages/4d/db/669a241144460474aab03e254326b32c42def83eb23458a10d163cb9b5ce/rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da", size = 361445 }, + { url = "https://files.pythonhosted.org/packages/3b/2d/133f61cc5807c6c2fd086a46df0eb8f63a23f5df8306ff9f6d0fd168fecc/rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7", size = 347206 }, + { url = "https://files.pythonhosted.org/packages/05/bf/0e8fb4c05f70273469eecf82f6ccf37248558526a45321644826555db31b/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad", size = 380330 }, + { url = "https://files.pythonhosted.org/packages/d4/a8/060d24185d8b24d3923322f8d0ede16df4ade226a74e747b8c7c978e3dd3/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d", size = 392254 }, + { url = "https://files.pythonhosted.org/packages/b9/7b/7c2e8a9ee3e6bc0bae26bf29f5219955ca2fbb761dca996a83f5d2f773fe/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca", size = 516094 }, + { url = "https://files.pythonhosted.org/packages/75/d6/f61cafbed8ba1499b9af9f1777a2a199cd888f74a96133d8833ce5eaa9c5/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19", size = 402889 }, + { url = "https://files.pythonhosted.org/packages/92/19/c8ac0a8a8df2dd30cdec27f69298a5c13e9029500d6d76718130f5e5be10/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8", size = 384301 }, + { url = "https://files.pythonhosted.org/packages/41/e1/6b1859898bc292a9ce5776016c7312b672da00e25cec74d7beced1027286/rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b", size = 412891 }, + { url = "https://files.pythonhosted.org/packages/ef/b9/ceb39af29913c07966a61367b3c08b4f71fad841e32c6b59a129d5974698/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a", size = 557044 }, + { url = "https://files.pythonhosted.org/packages/2f/27/35637b98380731a521f8ec4f3fd94e477964f04f6b2f8f7af8a2d889a4af/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170", size = 585774 }, + { url = "https://files.pythonhosted.org/packages/52/d9/3f0f105420fecd18551b678c9a6ce60bd23986098b252a56d35781b3e7e9/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e", size = 554886 }, + { url = "https://files.pythonhosted.org/packages/6b/c5/347c056a90dc8dd9bc240a08c527315008e1b5042e7a4cf4ac027be9d38a/rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f", size = 219027 }, + { url = "https://files.pythonhosted.org/packages/75/04/5302cea1aa26d886d34cadbf2dc77d90d7737e576c0065f357b96dc7a1a6/rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7", size = 232821 }, ] [[package]] @@ -1923,35 +1923,35 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ruamel-yaml-clib", marker = "python_full_version < '3.14' and platform_python_implementation == 'CPython'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/87/6da0df742a4684263261c253f00edd5829e6aca970fff69e75028cccc547/ruamel.yaml-0.18.14.tar.gz", hash = "sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7", size = 145511, upload_time = "2025-06-09T08:51:09.828Z" } +sdist = { url = "https://files.pythonhosted.org/packages/39/87/6da0df742a4684263261c253f00edd5829e6aca970fff69e75028cccc547/ruamel.yaml-0.18.14.tar.gz", hash = "sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7", size = 145511 } wheels = [ - { url = "https://files.pythonhosted.org/packages/af/6d/6fe4805235e193aad4aaf979160dd1f3c487c57d48b810c816e6e842171b/ruamel.yaml-0.18.14-py3-none-any.whl", hash = "sha256:710ff198bb53da66718c7db27eec4fbcc9aa6ca7204e4c1df2f282b6fe5eb6b2", size = 118570, upload_time = "2025-06-09T08:51:06.348Z" }, + { url = "https://files.pythonhosted.org/packages/af/6d/6fe4805235e193aad4aaf979160dd1f3c487c57d48b810c816e6e842171b/ruamel.yaml-0.18.14-py3-none-any.whl", hash = "sha256:710ff198bb53da66718c7db27eec4fbcc9aa6ca7204e4c1df2f282b6fe5eb6b2", size = 118570 }, ] [[package]] name = "ruamel-yaml-clib" version = "0.2.12" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315, upload_time = "2024-10-20T10:10:56.22Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433, upload_time = "2024-10-20T10:12:55.657Z" }, - { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362, upload_time = "2024-10-20T10:12:57.155Z" }, - { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118, upload_time = "2024-10-20T10:12:58.501Z" }, - { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497, upload_time = "2024-10-20T10:13:00.211Z" }, - { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042, upload_time = "2024-10-21T11:26:46.038Z" }, - { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831, upload_time = "2024-10-21T11:26:47.487Z" }, - { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692, upload_time = "2024-12-11T19:58:17.252Z" }, - { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777, upload_time = "2024-10-20T10:13:01.395Z" }, - { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523, upload_time = "2024-10-20T10:13:02.768Z" }, - { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011, upload_time = "2024-10-20T10:13:04.377Z" }, - { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488, upload_time = "2024-10-20T10:13:05.906Z" }, - { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066, upload_time = "2024-10-20T10:13:07.26Z" }, - { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785, upload_time = "2024-10-20T10:13:08.504Z" }, - { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017, upload_time = "2024-10-21T11:26:48.866Z" }, - { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270, upload_time = "2024-10-21T11:26:50.213Z" }, - { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059, upload_time = "2024-12-11T19:58:18.846Z" }, - { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583, upload_time = "2024-10-20T10:13:09.658Z" }, - { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190, upload_time = "2024-10-20T10:13:10.66Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433 }, + { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362 }, + { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118 }, + { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497 }, + { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042 }, + { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831 }, + { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692 }, + { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777 }, + { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523 }, + { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011 }, + { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488 }, + { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066 }, + { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785 }, + { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017 }, + { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270 }, + { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059 }, + { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583 }, + { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190 }, ] [[package]] @@ -1962,54 +1962,54 @@ dependencies = [ { name = "click" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/84/a4/b61c6e7a13b848fd985c9ed9acd525ccb1c2675e6cfa0d62292ae8015792/savepagenow-1.3.0.tar.gz", hash = "sha256:d0bc6bbe4606c700315015c3defcfab3c329208002b2b8cdc59f9b52996c6d3f", size = 42927, upload_time = "2023-07-01T13:31:49.607Z" } +sdist = { url = "https://files.pythonhosted.org/packages/84/a4/b61c6e7a13b848fd985c9ed9acd525ccb1c2675e6cfa0d62292ae8015792/savepagenow-1.3.0.tar.gz", hash = "sha256:d0bc6bbe4606c700315015c3defcfab3c329208002b2b8cdc59f9b52996c6d3f", size = 42927 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/8f/aea39979f8a7091ad2242a038a0e4c2b463593923ce598a914255dfba9ef/savepagenow-1.3.0-py2.py3-none-any.whl", hash = "sha256:4b0a4fff47254c160a37a20868ab53bb90da3d3f9f96086a9255b2375e39fcbf", size = 5649, upload_time = "2023-07-01T13:31:48.005Z" }, + { url = "https://files.pythonhosted.org/packages/a6/8f/aea39979f8a7091ad2242a038a0e4c2b463593923ce598a914255dfba9ef/savepagenow-1.3.0-py2.py3-none-any.whl", hash = "sha256:4b0a4fff47254c160a37a20868ab53bb90da3d3f9f96086a9255b2375e39fcbf", size = 5649 }, ] [[package]] name = "shellingham" version = "1.5.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload_time = "2023-10-24T04:13:40.426Z" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload_time = "2023-10-24T04:13:38.866Z" }, + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 }, ] [[package]] name = "simpleeval" version = "1.0.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ff/6f/15be211749430f52f2c8f0c69158a6fc961c03aac93fa28d44d1a6f5ebc7/simpleeval-1.0.3.tar.gz", hash = "sha256:67bbf246040ac3b57c29cf048657b9cf31d4e7b9d6659684daa08ca8f1e45829", size = 24358, upload_time = "2024-11-02T10:29:46.912Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/6f/15be211749430f52f2c8f0c69158a6fc961c03aac93fa28d44d1a6f5ebc7/simpleeval-1.0.3.tar.gz", hash = "sha256:67bbf246040ac3b57c29cf048657b9cf31d4e7b9d6659684daa08ca8f1e45829", size = 24358 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/e9/e58082fbb8cecbb6fb4133033c40cc50c248b1a331582be3a0f39138d65b/simpleeval-1.0.3-py3-none-any.whl", hash = "sha256:e3bdbb8c82c26297c9a153902d0fd1858a6c3774bf53ff4f134788c3f2035c38", size = 15762, upload_time = "2024-11-02T10:29:45.706Z" }, + { url = "https://files.pythonhosted.org/packages/a0/e9/e58082fbb8cecbb6fb4133033c40cc50c248b1a331582be3a0f39138d65b/simpleeval-1.0.3-py3-none-any.whl", hash = "sha256:e3bdbb8c82c26297c9a153902d0fd1858a6c3774bf53ff4f134788c3f2035c38", size = 15762 }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload_time = "2024-12-04T17:35:28.174Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload_time = "2024-12-04T17:35:26.475Z" }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, ] [[package]] name = "smmap" version = "5.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329, upload_time = "2025-01-02T07:14:40.909Z" } +sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329 } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303, upload_time = "2025-01-02T07:14:38.724Z" }, + { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303 }, ] [[package]] name = "soupsieve" version = "2.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload_time = "2025-04-20T18:50:08.518Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload_time = "2025-04-20T18:50:07.196Z" }, + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677 }, ] [[package]] @@ -2021,18 +2021,18 @@ dependencies = [ { name = "executing" }, { name = "pure-eval" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload_time = "2023-09-30T13:58:05.479Z" } +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload_time = "2023-09-30T13:58:03.53Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, ] [[package]] name = "structlog" version = "25.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/b9/6e672db4fec07349e7a8a8172c1a6ae235c58679ca29c3f86a61b5e59ff3/structlog-25.4.0.tar.gz", hash = "sha256:186cd1b0a8ae762e29417095664adf1d6a31702160a46dacb7796ea82f7409e4", size = 1369138, upload_time = "2025-06-02T08:21:12.971Z" } +sdist = { url = "https://files.pythonhosted.org/packages/79/b9/6e672db4fec07349e7a8a8172c1a6ae235c58679ca29c3f86a61b5e59ff3/structlog-25.4.0.tar.gz", hash = "sha256:186cd1b0a8ae762e29417095664adf1d6a31702160a46dacb7796ea82f7409e4", size = 1369138 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/4a/97ee6973e3a73c74c8120d59829c3861ea52210667ec3e7a16045c62b64d/structlog-25.4.0-py3-none-any.whl", hash = "sha256:fe809ff5c27e557d14e613f45ca441aabda051d119ee5a0102aaba6ce40eed2c", size = 68720, upload_time = "2025-06-02T08:21:11.43Z" }, + { url = "https://files.pythonhosted.org/packages/a0/4a/97ee6973e3a73c74c8120d59829c3861ea52210667ec3e7a16045c62b64d/structlog-25.4.0-py3-none-any.whl", hash = "sha256:fe809ff5c27e557d14e613f45ca441aabda051d119ee5a0102aaba6ce40eed2c", size = 68720 }, ] [[package]] @@ -2044,18 +2044,18 @@ dependencies = [ { name = "pyyaml" }, { name = "xlsxwriter" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/23/2d/5b5c0127e959a715c5365b3b491846fba5bc1fb7f94370cc3a4fb3f51f68/tableschema-to-template-0.0.13.tar.gz", hash = "sha256:2d8d2250efb840e0ecb9012c5e879a82ef68f65dd86bdff574200fdfc978ff1c", size = 13564, upload_time = "2023-02-01T21:53:17.238Z" } +sdist = { url = "https://files.pythonhosted.org/packages/23/2d/5b5c0127e959a715c5365b3b491846fba5bc1fb7f94370cc3a4fb3f51f68/tableschema-to-template-0.0.13.tar.gz", hash = "sha256:2d8d2250efb840e0ecb9012c5e879a82ef68f65dd86bdff574200fdfc978ff1c", size = 13564 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/7f/3c129377d9b815c0bb92b8c24bbecabe5e6b13b831f38924f80d2e5b40b2/tableschema_to_template-0.0.13-py3-none-any.whl", hash = "sha256:4905500a4235740654230c3223629d26fdccb7a0457ec1d0110ea102c4f1146c", size = 14860, upload_time = "2023-02-01T21:53:16.02Z" }, + { url = "https://files.pythonhosted.org/packages/9f/7f/3c129377d9b815c0bb92b8c24bbecabe5e6b13b831f38924f80d2e5b40b2/tableschema_to_template-0.0.13-py3-none-any.whl", hash = "sha256:4905500a4235740654230c3223629d26fdccb7a0457ec1d0110ea102c4f1146c", size = 14860 }, ] [[package]] name = "tabulate" version = "0.9.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload_time = "2022-10-06T17:21:48.54Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090 } wheels = [ - { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload_time = "2022-10-06T17:21:44.262Z" }, + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252 }, ] [[package]] @@ -2064,22 +2064,25 @@ source = { editable = "." } dependencies = [ { name = "frozendict" }, { name = "hdx-python-country" }, - { name = "ipykernel" }, { name = "mypy" }, { name = "pandas" }, { name = "pint" }, - { name = "pre-commit" }, { name = "pydantic" }, { name = "pydeflate" }, + { name = "requests" }, + { name = "savepagenow" }, +] + +[package.dev-dependencies] +dev = [ + { name = "ipykernel" }, + { name = "pre-commit" }, { name = "pytest" }, { name = "pytest-cov" }, { name = "pytest-xdist" }, - { name = "requests" }, { name = "reuse" }, - { name = "savepagenow" }, + { name = "technologydata" }, ] - -[package.optional-dependencies] docs = [ { name = "mkdocs-autolinks-plugin" }, { name = "mkdocs-git-revision-date-localized-plugin" }, @@ -2094,82 +2097,88 @@ docs = [ requires-dist = [ { name = "frozendict", specifier = ">=2.4.6" }, { name = "hdx-python-country", specifier = ">=3.9.6" }, - { name = "ipykernel", specifier = ">=6.29.5" }, - { name = "mkdocs-autolinks-plugin", marker = "extra == 'docs'", specifier = ">=0.7.1" }, - { name = "mkdocs-git-revision-date-localized-plugin", marker = "extra == 'docs'", specifier = ">=1.4.7" }, - { name = "mkdocs-material", marker = "extra == 'docs'", specifier = ">=9.6.14" }, - { name = "mkdocs-minify-plugin", marker = "extra == 'docs'", specifier = ">=0.8.0" }, - { name = "mkdocs-open-in-new-tab", marker = "extra == 'docs'", specifier = ">=1.0.8" }, - { name = "mkdocstrings", marker = "extra == 'docs'", specifier = ">=0.29.1" }, - { name = "mkdocstrings-python", marker = "extra == 'docs'", specifier = ">=1.16.11" }, { name = "mypy", specifier = ">=1.15.0" }, { name = "pandas", specifier = ">=2.2.3" }, { name = "pint", specifier = ">=0.24.4" }, - { name = "pre-commit", specifier = ">=4.2.0" }, { name = "pydantic", specifier = ">=2.11.7" }, { name = "pydeflate", specifier = ">=2.1.3" }, - { name = "pytest", specifier = ">=8.3.5" }, + { name = "requests", specifier = ">=2.32.3" }, + { name = "savepagenow", specifier = ">=1.3.0" }, +] + +[package.metadata.requires-dev] +dev = [ + { name = "ipykernel", specifier = ">=6.29.5" }, + { name = "pre-commit", specifier = ">=4.2.0" }, + { name = "pytest", specifier = ">=8.4.1" }, { name = "pytest-cov", specifier = ">=6.2.1" }, { name = "pytest-xdist", specifier = ">=3.8.0" }, - { name = "requests", specifier = ">=2.32.3" }, { name = "reuse", specifier = ">=5.0.2" }, - { name = "savepagenow", specifier = ">=1.3.0" }, + { name = "technologydata", editable = "." }, +] +docs = [ + { name = "mkdocs-autolinks-plugin", specifier = ">=0.7.1" }, + { name = "mkdocs-git-revision-date-localized-plugin", specifier = ">=1.4.7" }, + { name = "mkdocs-material", specifier = ">=9.6.14" }, + { name = "mkdocs-minify-plugin", specifier = ">=0.8.0" }, + { name = "mkdocs-open-in-new-tab", specifier = ">=1.0.8" }, + { name = "mkdocstrings", specifier = ">=0.29.1" }, + { name = "mkdocstrings-python", specifier = ">=1.16.11" }, ] -provides-extras = ["docs"] [[package]] name = "tenacity" version = "9.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload_time = "2025-04-02T08:25:09.966Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload_time = "2025-04-02T08:25:07.678Z" }, + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 }, ] [[package]] name = "text-unidecode" version = "1.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload_time = "2019-08-30T21:36:45.405Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload_time = "2019-08-30T21:37:03.543Z" }, + { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154 }, ] [[package]] name = "tomlkit" version = "0.13.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207, upload_time = "2025-06-05T07:13:44.947Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207 } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload_time = "2025-06-05T07:13:43.546Z" }, + { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901 }, ] [[package]] name = "tornado" version = "6.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934, upload_time = "2025-05-22T18:15:38.788Z" } +sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934 } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948, upload_time = "2025-05-22T18:15:20.862Z" }, - { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112, upload_time = "2025-05-22T18:15:22.591Z" }, - { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672, upload_time = "2025-05-22T18:15:24.027Z" }, - { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019, upload_time = "2025-05-22T18:15:25.735Z" }, - { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252, upload_time = "2025-05-22T18:15:27.499Z" }, - { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930, upload_time = "2025-05-22T18:15:29.299Z" }, - { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351, upload_time = "2025-05-22T18:15:31.038Z" }, - { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328, upload_time = "2025-05-22T18:15:32.426Z" }, - { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396, upload_time = "2025-05-22T18:15:34.205Z" }, - { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840, upload_time = "2025-05-22T18:15:36.1Z" }, - { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596, upload_time = "2025-05-22T18:15:37.433Z" }, + { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948 }, + { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112 }, + { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672 }, + { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019 }, + { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252 }, + { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930 }, + { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351 }, + { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328 }, + { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396 }, + { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840 }, + { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596 }, ] [[package]] name = "traitlets" version = "5.14.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload_time = "2024-04-19T11:11:49.746Z" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621 } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload_time = "2024-04-19T11:11:46.763Z" }, + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, ] [[package]] @@ -2182,18 +2191,18 @@ dependencies = [ { name = "shellingham" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c5/8c/7d682431efca5fd290017663ea4588bf6f2c6aad085c7f108c5dbc316e70/typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b", size = 102625, upload_time = "2025-05-26T14:30:31.824Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c5/8c/7d682431efca5fd290017663ea4588bf6f2c6aad085c7f108c5dbc316e70/typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b", size = 102625 } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/42/3efaf858001d2c2913de7f354563e3a3a2f0decae3efe98427125a8f441e/typer-0.16.0-py3-none-any.whl", hash = "sha256:1f79bed11d4d02d4310e3c1b7ba594183bcedb0ac73b27a9e5f28f6fb5b98855", size = 46317, upload_time = "2025-05-26T14:30:30.523Z" }, + { url = "https://files.pythonhosted.org/packages/76/42/3efaf858001d2c2913de7f354563e3a3a2f0decae3efe98427125a8f441e/typer-0.16.0-py3-none-any.whl", hash = "sha256:1f79bed11d4d02d4310e3c1b7ba594183bcedb0ac73b27a9e5f28f6fb5b98855", size = 46317 }, ] [[package]] name = "typing-extensions" version = "4.14.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload_time = "2025-07-04T13:28:34.16Z" } +sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload_time = "2025-07-04T13:28:32.743Z" }, + { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906 }, ] [[package]] @@ -2203,45 +2212,45 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload_time = "2025-05-21T18:55:23.885Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload_time = "2025-05-21T18:55:22.152Z" }, + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, ] [[package]] name = "tzdata" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload_time = "2025-03-23T13:54:43.652Z" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload_time = "2025-03-23T13:54:41.845Z" }, + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, ] [[package]] name = "unidecode" version = "1.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/7d/a8a765761bbc0c836e397a2e48d498305a865b70a8600fd7a942e85dcf63/Unidecode-1.4.0.tar.gz", hash = "sha256:ce35985008338b676573023acc382d62c264f307c8f7963733405add37ea2b23", size = 200149, upload_time = "2025-04-24T08:45:03.798Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/7d/a8a765761bbc0c836e397a2e48d498305a865b70a8600fd7a942e85dcf63/Unidecode-1.4.0.tar.gz", hash = "sha256:ce35985008338b676573023acc382d62c264f307c8f7963733405add37ea2b23", size = 200149 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/b7/559f59d57d18b44c6d1250d2eeaa676e028b9c527431f5d0736478a73ba1/Unidecode-1.4.0-py3-none-any.whl", hash = "sha256:c3c7606c27503ad8d501270406e345ddb480a7b5f38827eafe4fa82a137f0021", size = 235837, upload_time = "2025-04-24T08:45:01.609Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b7/559f59d57d18b44c6d1250d2eeaa676e028b9c527431f5d0736478a73ba1/Unidecode-1.4.0-py3-none-any.whl", hash = "sha256:c3c7606c27503ad8d501270406e345ddb480a7b5f38827eafe4fa82a137f0021", size = 235837 }, ] [[package]] name = "urllib3" version = "2.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload_time = "2025-06-18T14:07:41.644Z" } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload_time = "2025-06-18T14:07:40.39Z" }, + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795 }, ] [[package]] name = "validators" version = "0.35.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/53/66/a435d9ae49850b2f071f7ebd8119dd4e84872b01630d6736761e6e7fd847/validators-0.35.0.tar.gz", hash = "sha256:992d6c48a4e77c81f1b4daba10d16c3a9bb0dbb79b3a19ea847ff0928e70497a", size = 73399, upload_time = "2025-05-01T05:42:06.7Z" } +sdist = { url = "https://files.pythonhosted.org/packages/53/66/a435d9ae49850b2f071f7ebd8119dd4e84872b01630d6736761e6e7fd847/validators-0.35.0.tar.gz", hash = "sha256:992d6c48a4e77c81f1b4daba10d16c3a9bb0dbb79b3a19ea847ff0928e70497a", size = 73399 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/6e/3e955517e22cbdd565f2f8b2e73d52528b14b8bcfdb04f62466b071de847/validators-0.35.0-py3-none-any.whl", hash = "sha256:e8c947097eae7892cb3d26868d637f79f47b4a0554bc6b80065dfe5aac3705dd", size = 44712, upload_time = "2025-05-01T05:42:04.203Z" }, + { url = "https://files.pythonhosted.org/packages/fa/6e/3e955517e22cbdd565f2f8b2e73d52528b14b8bcfdb04f62466b071de847/validators-0.35.0-py3-none-any.whl", hash = "sha256:e8c947097eae7892cb3d26868d637f79f47b4a0554bc6b80065dfe5aac3705dd", size = 44712 }, ] [[package]] @@ -2253,33 +2262,33 @@ dependencies = [ { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload_time = "2025-05-08T17:58:23.811Z" } +sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload_time = "2025-05-08T17:58:21.15Z" }, + { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982 }, ] [[package]] name = "watchdog" version = "6.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload_time = "2024-11-01T14:07:13.037Z" } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471, upload_time = "2024-11-01T14:06:37.745Z" }, - { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449, upload_time = "2024-11-01T14:06:39.748Z" }, - { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054, upload_time = "2024-11-01T14:06:41.009Z" }, - { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480, upload_time = "2024-11-01T14:06:42.952Z" }, - { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451, upload_time = "2024-11-01T14:06:45.084Z" }, - { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057, upload_time = "2024-11-01T14:06:47.324Z" }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload_time = "2024-11-01T14:06:59.472Z" }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload_time = "2024-11-01T14:07:01.431Z" }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload_time = "2024-11-01T14:07:02.568Z" }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload_time = "2024-11-01T14:07:03.893Z" }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload_time = "2024-11-01T14:07:05.189Z" }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload_time = "2024-11-01T14:07:06.376Z" }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload_time = "2024-11-01T14:07:07.547Z" }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload_time = "2024-11-01T14:07:09.525Z" }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload_time = "2024-11-01T14:07:10.686Z" }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload_time = "2024-11-01T14:07:11.845Z" }, + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, + { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 }, + { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 }, + { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, ] [[package]] @@ -2291,79 +2300,79 @@ dependencies = [ { name = "requests" }, { name = "tabulate" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d7/4a/f55695bd1c9f1996b675b6e9e980eef40ebdb5e4bf8774c059c31af6ade1/wbgapi-1.0.12.tar.gz", hash = "sha256:338c3c768bd120b80596b48fa0449ecabc93513ac989c55671dce579dbb3a5be", size = 33590, upload_time = "2022-07-05T15:07:22.772Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/4a/f55695bd1c9f1996b675b6e9e980eef40ebdb5e4bf8774c059c31af6ade1/wbgapi-1.0.12.tar.gz", hash = "sha256:338c3c768bd120b80596b48fa0449ecabc93513ac989c55671dce579dbb3a5be", size = 33590 } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/12/224030af4886e119a3d03b709f7130e9601a4d15332e1d6a35671b25a4de/wbgapi-1.0.12-py3-none-any.whl", hash = "sha256:c5a1e1683b03d4264d287627c2562932f30e7f5c65509b812cb2e3de7d32633f", size = 36385, upload_time = "2022-07-05T15:07:20.606Z" }, + { url = "https://files.pythonhosted.org/packages/00/12/224030af4886e119a3d03b709f7130e9601a4d15332e1d6a35671b25a4de/wbgapi-1.0.12-py3-none-any.whl", hash = "sha256:c5a1e1683b03d4264d287627c2562932f30e7f5c65509b812cb2e3de7d32633f", size = 36385 }, ] [[package]] name = "wcwidth" version = "0.2.13" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload_time = "2024-01-06T02:10:57.829Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload_time = "2024-01-06T02:10:55.763Z" }, + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, ] [[package]] name = "wheel" version = "0.45.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545, upload_time = "2024-11-23T00:18:23.513Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload_time = "2024-11-23T00:18:21.207Z" }, + { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494 }, ] [[package]] name = "win32-setctime" version = "1.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867, upload_time = "2024-12-07T15:28:28.314Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083, upload_time = "2024-12-07T15:28:26.465Z" }, + { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083 }, ] [[package]] name = "xlrd" version = "2.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/5a/377161c2d3538d1990d7af382c79f3b2372e880b65de21b01b1a2b78691e/xlrd-2.0.2.tar.gz", hash = "sha256:08b5e25de58f21ce71dc7db3b3b8106c1fa776f3024c54e45b45b374e89234c9", size = 100167, upload_time = "2025-06-14T08:46:39.039Z" } +sdist = { url = "https://files.pythonhosted.org/packages/07/5a/377161c2d3538d1990d7af382c79f3b2372e880b65de21b01b1a2b78691e/xlrd-2.0.2.tar.gz", hash = "sha256:08b5e25de58f21ce71dc7db3b3b8106c1fa776f3024c54e45b45b374e89234c9", size = 100167 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/62/c8d562e7766786ba6587d09c5a8ba9f718ed3fa8af7f4553e8f91c36f302/xlrd-2.0.2-py2.py3-none-any.whl", hash = "sha256:ea762c3d29f4cca48d82df517b6d89fbce4db3107f9d78713e48cd321d5c9aa9", size = 96555, upload_time = "2025-06-14T08:46:37.766Z" }, + { url = "https://files.pythonhosted.org/packages/1a/62/c8d562e7766786ba6587d09c5a8ba9f718ed3fa8af7f4553e8f91c36f302/xlrd-2.0.2-py2.py3-none-any.whl", hash = "sha256:ea762c3d29f4cca48d82df517b6d89fbce4db3107f9d78713e48cd321d5c9aa9", size = 96555 }, ] [[package]] name = "xlrd3" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/db/88d8d49ddacc203956ecb98dc86c6ffeee6e933ef1f50da9b369de518f7f/xlrd3-1.1.0.tar.gz", hash = "sha256:20e6ed2e5f7f8b4ab61e30faffebceff6fab348332b4c915373f0a72742dc177", size = 58919847, upload_time = "2021-04-25T12:27:10.03Z" } +sdist = { url = "https://files.pythonhosted.org/packages/79/db/88d8d49ddacc203956ecb98dc86c6ffeee6e933ef1f50da9b369de518f7f/xlrd3-1.1.0.tar.gz", hash = "sha256:20e6ed2e5f7f8b4ab61e30faffebceff6fab348332b4c915373f0a72742dc177", size = 58919847 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/08/fce745025e58f160e7dcb5a45d4d43eb0bd44c0d8851425be87ef90271fa/xlrd3-1.1.0-py2.py3-none-any.whl", hash = "sha256:8e8e808f938144e7936a6e07c1d57be7a0f6c6f5b37c9c67974b43246d8aacb6", size = 105268, upload_time = "2021-04-25T12:26:55.264Z" }, + { url = "https://files.pythonhosted.org/packages/5d/08/fce745025e58f160e7dcb5a45d4d43eb0bd44c0d8851425be87ef90271fa/xlrd3-1.1.0-py2.py3-none-any.whl", hash = "sha256:8e8e808f938144e7936a6e07c1d57be7a0f6c6f5b37c9c67974b43246d8aacb6", size = 105268 }, ] [[package]] name = "xlsx2csv" version = "0.8.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/20/94860286a308a4213581c1beacd4fc7be724250c03583fcff23aaa6107bb/xlsx2csv-0.8.4.tar.gz", hash = "sha256:2aa809888826f6af5b26c77fc7f613f2bbeada0d8cc09e5a58e0f59684bb6911", size = 221390, upload_time = "2024-11-19T17:06:07.818Z" } +sdist = { url = "https://files.pythonhosted.org/packages/36/20/94860286a308a4213581c1beacd4fc7be724250c03583fcff23aaa6107bb/xlsx2csv-0.8.4.tar.gz", hash = "sha256:2aa809888826f6af5b26c77fc7f613f2bbeada0d8cc09e5a58e0f59684bb6911", size = 221390 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/c0/15c21556362c67f1155f3643a375d50ac67559b82c768e64e800a42a2577/xlsx2csv-0.8.4-py3-none-any.whl", hash = "sha256:52ab873fc7b2f2ca75d14aee8bd1985a9f5c1bcb3cc7b80df7a5d57a40a67473", size = 15904, upload_time = "2024-11-19T17:06:05.362Z" }, + { url = "https://files.pythonhosted.org/packages/c4/c0/15c21556362c67f1155f3643a375d50ac67559b82c768e64e800a42a2577/xlsx2csv-0.8.4-py3-none-any.whl", hash = "sha256:52ab873fc7b2f2ca75d14aee8bd1985a9f5c1bcb3cc7b80df7a5d57a40a67473", size = 15904 }, ] [[package]] name = "xlsxwriter" version = "3.2.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a7/47/7704bac42ac6fe1710ae099b70e6a1e68ed173ef14792b647808c357da43/xlsxwriter-3.2.5.tar.gz", hash = "sha256:7e88469d607cdc920151c0ab3ce9cf1a83992d4b7bc730c5ffdd1a12115a7dbe", size = 213306, upload_time = "2025-06-17T08:59:14.619Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/47/7704bac42ac6fe1710ae099b70e6a1e68ed173ef14792b647808c357da43/xlsxwriter-3.2.5.tar.gz", hash = "sha256:7e88469d607cdc920151c0ab3ce9cf1a83992d4b7bc730c5ffdd1a12115a7dbe", size = 213306 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/34/a22e6664211f0c8879521328000bdcae9bf6dbafa94a923e531f6d5b3f73/xlsxwriter-3.2.5-py3-none-any.whl", hash = "sha256:4f4824234e1eaf9d95df9a8fe974585ff91d0f5e3d3f12ace5b71e443c1c6abd", size = 172347, upload_time = "2025-06-17T08:59:13.453Z" }, + { url = "https://files.pythonhosted.org/packages/fa/34/a22e6664211f0c8879521328000bdcae9bf6dbafa94a923e531f6d5b3f73/xlsxwriter-3.2.5-py3-none-any.whl", hash = "sha256:4f4824234e1eaf9d95df9a8fe974585ff91d0f5e3d3f12ace5b71e443c1c6abd", size = 172347 }, ] [[package]] name = "xlwt" version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/97/56a6f56ce44578a69343449aa5a0d98eefe04085d69da539f3034e2cd5c1/xlwt-1.3.0.tar.gz", hash = "sha256:c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88", size = 153929, upload_time = "2017-08-22T06:47:16.498Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/97/56a6f56ce44578a69343449aa5a0d98eefe04085d69da539f3034e2cd5c1/xlwt-1.3.0.tar.gz", hash = "sha256:c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88", size = 153929 } wheels = [ - { url = "https://files.pythonhosted.org/packages/44/48/def306413b25c3d01753603b1a222a011b8621aed27cd7f89cbc27e6b0f4/xlwt-1.3.0-py2.py3-none-any.whl", hash = "sha256:a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e", size = 99981, upload_time = "2017-08-22T06:47:15.281Z" }, + { url = "https://files.pythonhosted.org/packages/44/48/def306413b25c3d01753603b1a222a011b8621aed27cd7f89cbc27e6b0f4/xlwt-1.3.0-py2.py3-none-any.whl", hash = "sha256:a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e", size = 99981 }, ] From 6dcd24a3d2c30cc36f5737132cccc1158833ebaf Mon Sep 17 00:00:00 2001 From: Johannes HAMPP <42553970+euronion@users.noreply.github.com> Date: Thu, 21 Aug 2025 14:43:47 +0200 Subject: [PATCH 10/30] code: Harmonise type hints (#36) --- src/technologydata/datapackage.py | 8 +++--- src/technologydata/parameter.py | 23 ++++++++--------- src/technologydata/source.py | 24 ++++++++---------- src/technologydata/source_collection.py | 13 +++++----- src/technologydata/technology.py | 28 +++++++++------------ src/technologydata/technology_collection.py | 10 ++++---- src/technologydata/utils/commons.py | 4 +-- src/technologydata/utils/units.py | 6 ++--- 8 files changed, 54 insertions(+), 62 deletions(-) diff --git a/src/technologydata/datapackage.py b/src/technologydata/datapackage.py index ca450ff0..d52e8361 100644 --- a/src/technologydata/datapackage.py +++ b/src/technologydata/datapackage.py @@ -13,7 +13,7 @@ import logging import pathlib -import typing +from typing import Annotated, Self import pydantic @@ -36,11 +36,11 @@ class DataPackage(pydantic.BaseModel): # type: ignore """ - technologies: typing.Annotated[ + technologies: Annotated[ TechnologyCollection | None, pydantic.Field(description="List of Technology objects."), ] = None - sources: typing.Annotated[ + sources: Annotated[ SourceCollection | None, pydantic.Field(description="List of Source objects.") ] = None @@ -70,7 +70,7 @@ def get_source_collection(self) -> None: self.sources = SourceCollection(sources=list(sources_set)) @classmethod - def from_json(cls, path_to_folder: pathlib.Path | str) -> "DataPackage": + def from_json(cls, path_to_folder: pathlib.Path | str) -> Self: """ Load a DataPackage from a JSON file. diff --git a/src/technologydata/parameter.py b/src/technologydata/parameter.py index 82a747ce..338634fc 100644 --- a/src/technologydata/parameter.py +++ b/src/technologydata/parameter.py @@ -15,8 +15,7 @@ """ import logging -import typing -from typing import Annotated +from typing import Annotated, Any, Self import pint from pydantic import BaseModel, Field, PrivateAttr @@ -144,7 +143,7 @@ def _update_pint_attributes(self) -> None: else: self._pint_heating_value = None - def to(self, units: str) -> "Parameter": + def to(self, units: str) -> Self: """Convert the parameter's quantity to new units.""" self._update_pint_attributes() @@ -170,7 +169,7 @@ def to(self, units: str) -> "Parameter": def change_currency( self, to_currency: str, country: str, source: str = "worldbank" - ) -> "Parameter": + ) -> Self: """ Change the currency of the parameter. @@ -279,7 +278,7 @@ def change_currency( sources=self.sources, ) - def change_heating_value(self, to_heating_value: str) -> "Parameter": + def change_heating_value(self, to_heating_value: str) -> Self: """ Change the heating value of the parameter. @@ -373,7 +372,7 @@ def change_heating_value(self, to_heating_value: str) -> "Parameter": sources=self.sources, ) - def _check_parameter_compatibility(self, other: "Parameter") -> None: + def _check_parameter_compatibility(self, other: Self) -> None: """ Check if two parameters are compatible in terms of units, carrier, and heating value. @@ -400,7 +399,7 @@ def _check_parameter_compatibility(self, other: "Parameter") -> None: f"'{self._pint_heating_value}' and '{other._pint_heating_value}'." ) - def __add__(self, other: "Parameter") -> "Parameter": + def __add__(self, other: Self) -> Self: """ Add this Parameter to another Parameter. @@ -436,7 +435,7 @@ def __add__(self, other: "Parameter") -> "Parameter": ), ) - def __sub__(self, other: "Parameter") -> "Parameter": + def __sub__(self, other: Self) -> Self: """ Subtract another Parameter from this Parameter. @@ -471,7 +470,7 @@ def __sub__(self, other: "Parameter") -> "Parameter": ), ) - def __truediv__(self, other: "Parameter") -> "Parameter": + def __truediv__(self, other: Self) -> Self: """ Divide this Parameter by another Parameter. @@ -529,7 +528,7 @@ def __truediv__(self, other: "Parameter") -> "Parameter": ), ) - def __mul__(self, other: "Parameter") -> "Parameter": + def __mul__(self, other: Self) -> Self: """ Multiply two Parameter instances. @@ -617,7 +616,7 @@ def __eq__(self, other: object) -> bool: return False return True - def __pow__(self, exponent: float | int) -> "Parameter": + def __pow__(self, exponent: float | int) -> Self: """ Raise the parameter's value to a specified power. @@ -651,7 +650,7 @@ def __pow__(self, exponent: float | int) -> "Parameter": ) @classmethod - def from_dict(cls, data: dict[str, typing.Any]) -> "Parameter": + def from_dict(cls, data: dict[str, Any]) -> Self: """ Create an instance of the class from a dictionary. diff --git a/src/technologydata/source.py b/src/technologydata/source.py index 03911d41..c7e3643a 100644 --- a/src/technologydata/source.py +++ b/src/technologydata/source.py @@ -15,7 +15,7 @@ import logging import pathlib -import typing +from typing import Annotated, Any import pydantic import requests @@ -47,18 +47,16 @@ class Source(pydantic.BaseModel): # type: ignore """ - title: typing.Annotated[str, pydantic.Field(description="Title of the source.")] - authors: typing.Annotated[str, pydantic.Field(description="Authors of the source.")] - url: typing.Annotated[ - str | None, pydantic.Field(description="URL of the source.") - ] = None - url_archive: typing.Annotated[ - str | None, pydantic.Field(description="Archived URL.") - ] = None - url_date: typing.Annotated[ + title: Annotated[str, pydantic.Field(description="Title of the source.")] + authors: Annotated[str, pydantic.Field(description="Authors of the source.")] + url: Annotated[str | None, pydantic.Field(description="URL of the source.")] = None + url_archive: Annotated[str | None, pydantic.Field(description="Archived URL.")] = ( + None + ) + url_date: Annotated[ str | None, pydantic.Field(description="Date the URL was accessed.") ] = None - url_date_archive: typing.Annotated[ + url_date_archive: Annotated[ str | None, pydantic.Field(description="Date the URL was archived.") ] = None @@ -191,7 +189,7 @@ def ensure_in_wayback(self) -> None: @staticmethod def store_in_wayback( url_to_archive: str, - ) -> tuple[typing.Any, bool | None, str | None] | None: + ) -> tuple[Any, bool | None, str | None] | None: """ Store a snapshot of the given URL on the Wayback Machine and extract the timestamp. @@ -355,7 +353,7 @@ def _get_save_path( return None @staticmethod - def _get_content_type(url_archived: str) -> typing.Any: + def _get_content_type(url_archived: str) -> Any: """ Fetch the content type of the archived URL. diff --git a/src/technologydata/source_collection.py b/src/technologydata/source_collection.py index 702c4f96..31c4e7b4 100644 --- a/src/technologydata/source_collection.py +++ b/src/technologydata/source_collection.py @@ -8,7 +8,8 @@ import json import pathlib import re -import typing +from collections.abc import Iterator +from typing import Annotated, Any, Self import pandas import pydantic @@ -27,11 +28,11 @@ class SourceCollection(pydantic.BaseModel): # type: ignore """ - sources: typing.Annotated[ + sources: Annotated[ list[Source], pydantic.Field(description="List of Source objects.") ] - def __iter__(self) -> typing.Iterator["Source"]: + def __iter__(self) -> Iterator["Source"]: """ Return an iterator over the list of Source objects. @@ -68,7 +69,7 @@ def __str__(self) -> str: sources_str = ", ".join(str(source) for source in self.sources) return f"SourceCollection with {len(self.sources)} sources: {sources_str}" - def get(self, title: str, authors: str) -> "SourceCollection": + def get(self, title: str, authors: str) -> Self: """ Filter sources based on regex patterns for non-optional attributes. @@ -206,8 +207,8 @@ def to_json( def from_json( cls, file_path: pathlib.Path | str | None = None, - from_str: list[dict[str, typing.Any]] | None = None, - ) -> "SourceCollection": + from_str: list[dict[str, Any]] | None = None, + ) -> Self: """ Import the SourceCollection from a JSON file. diff --git a/src/technologydata/technology.py b/src/technologydata/technology.py index 2963a968..771b0e7b 100644 --- a/src/technologydata/technology.py +++ b/src/technologydata/technology.py @@ -7,7 +7,7 @@ """Technology class for representing a technology with parameters and transformation methods.""" -import typing +from typing import Annotated, Any, Self import pydantic @@ -35,17 +35,15 @@ class Technology(pydantic.BaseModel): # type: ignore """ - name: typing.Annotated[str, pydantic.Field(description="Name of the technology.")] - region: typing.Annotated[str, pydantic.Field(description="Region identifier.")] - year: typing.Annotated[int, pydantic.Field(description="Year of the data.")] - parameters: typing.Annotated[ + name: Annotated[str, pydantic.Field(description="Name of the technology.")] + region: Annotated[str, pydantic.Field(description="Region identifier.")] + year: Annotated[int, pydantic.Field(description="Year of the data.")] + parameters: Annotated[ dict[str, Parameter], pydantic.Field(default_factory=dict, description="Parameters."), ] - case: typing.Annotated[ - str, pydantic.Field(description="Case or scenario identifier.") - ] - detailed_technology: typing.Annotated[ + case: Annotated[str, pydantic.Field(description="Case or scenario identifier.")] + detailed_technology: Annotated[ str, pydantic.Field(description="Detailed technology name.") ] @@ -95,9 +93,7 @@ def check_consistency(self) -> bool: missing = [p for p in required if p not in self.parameters] return len(missing) == 0 - def calculate_parameters( - self, parameters: typing.Any | None = None - ) -> "Technology": + def calculate_parameters(self, parameters: Any | None = None) -> Self: """ Calculate missing or derived parameters. @@ -115,7 +111,7 @@ def calculate_parameters( # Placeholder: implement calculation logic as needed return self - def adjust_currency(self, target_currency: str) -> "Technology": + def adjust_currency(self, target_currency: str) -> Self: """ Adjust all currency parameters to a target currency. @@ -133,7 +129,7 @@ def adjust_currency(self, target_currency: str) -> "Technology": # Placeholder: implement currency adjustment logic return self - def adjust_region(self, target_region: str) -> "Technology": + def adjust_region(self, target_region: str) -> Self: """ Adjust technology parameters to match a different region. @@ -151,7 +147,7 @@ def adjust_region(self, target_region: str) -> "Technology": # Placeholder: implement region adjustment logic return self - def adjust_scale(self, scaling_factor: float) -> "Technology": + def adjust_scale(self, scaling_factor: float) -> Self: """ Scale parameter values by a scaling factor. @@ -170,7 +166,7 @@ def adjust_scale(self, scaling_factor: float) -> "Technology": return self @classmethod - def from_dict(cls, data: dict[str, typing.Any]) -> "Technology": + def from_dict(cls, data: dict[str, Any]) -> Self: """ Create an instance of the class from a dictionary. diff --git a/src/technologydata/technology_collection.py b/src/technologydata/technology_collection.py index 4d28dd1b..85dd3f61 100644 --- a/src/technologydata/technology_collection.py +++ b/src/technologydata/technology_collection.py @@ -8,8 +8,8 @@ import json import pathlib import re -import typing from collections.abc import Iterator +from typing import Annotated, Self import pandas import pydantic @@ -28,11 +28,11 @@ class TechnologyCollection(pydantic.BaseModel): # type: ignore """ - technologies: typing.Annotated[ + technologies: Annotated[ list[Technology], pydantic.Field(description="List of Technology objects.") ] - def __iter__(self) -> Iterator["Technology"]: + def __iter__(self) -> Iterator[Technology]: """ Return an iterator over the list of Technology objects. @@ -58,7 +58,7 @@ def __len__(self) -> int: def get( self, name: str, region: str, year: int, case: str, detailed_technology: str - ) -> "TechnologyCollection": + ) -> Self: """ Filter technologies based on regex patterns for non-optional attributes. @@ -200,7 +200,7 @@ def to_json( jsonfile.write(json_data) @classmethod - def from_json(cls, file_path: pathlib.Path | str) -> "TechnologyCollection": + def from_json(cls, file_path: pathlib.Path | str) -> Self: """ Load a TechnologyCollection instance from a JSON file. diff --git a/src/technologydata/utils/commons.py b/src/technologydata/utils/commons.py index cb9b2cf1..9e91398f 100644 --- a/src/technologydata/utils/commons.py +++ b/src/technologydata/utils/commons.py @@ -7,7 +7,7 @@ import enum import logging import re -import typing +from typing import Any import dateutil @@ -186,7 +186,7 @@ class Commons: def change_datetime_format( input_datetime_string: str, output_datetime_format: DateFormatEnum, - ) -> str | typing.Any: + ) -> str | Any: """ Change the format of a given datetime string to a specified output format. diff --git a/src/technologydata/utils/units.py b/src/technologydata/utils/units.py index 78351a6c..8e91272d 100644 --- a/src/technologydata/utils/units.py +++ b/src/technologydata/utils/units.py @@ -6,9 +6,9 @@ import json import logging import re -import typing from functools import lru_cache from pathlib import Path +from typing import Any import pandas as pd import pint @@ -312,9 +312,7 @@ def get_iso3_from_currency_code( class SpecialUnitRegistry(pint.UnitRegistry): # type: ignore """A special pint.UnitRegistry subclass that includes methods for handling currency units and conversion using pydeflate.""" - def __init__( - self, *args: tuple[typing.Any, ...], **kwargs: dict[str, typing.Any] - ) -> None: + def __init__(self, *args: tuple[Any, ...], **kwargs: dict[str, Any]) -> None: """ Initialize a SpecialUnitRegistry instance. From 1a1ae6b3bd577736b0e45303d7184623983e8387 Mon Sep 17 00:00:00 2001 From: Johannes HAMPP <42553970+euronion@users.noreply.github.com> Date: Thu, 28 Aug 2025 14:41:31 +0200 Subject: [PATCH 11/30] code: Allow parameter mul and div with scalars (#37) * code: Allow parameter mul and div with scalars * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: Fix missing imports * code: Fix int not allowed as scalar factor --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/technologydata/parameter.py | 38 ++++++++++++++++++++++++++------- test/test_parameter.py | 35 ++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 8 deletions(-) diff --git a/src/technologydata/parameter.py b/src/technologydata/parameter.py index 338634fc..f3748013 100644 --- a/src/technologydata/parameter.py +++ b/src/technologydata/parameter.py @@ -42,7 +42,7 @@ class Parameter(BaseModel): # type: ignore Attributes ---------- - magnitude : float + magnitude : int | float The numerical value of the parameter. units : Optional[str] The unit of the parameter. @@ -60,7 +60,7 @@ class Parameter(BaseModel): # type: ignore """ magnitude: Annotated[ - float, Field(description="The numerical value of the parameter.") + int | float, Field(description="The numerical value of the parameter.") ] units: Annotated[str | None, Field(description="The unit of the parameter.")] = None carrier: Annotated[ @@ -470,14 +470,14 @@ def __sub__(self, other: Self) -> Self: ), ) - def __truediv__(self, other: Self) -> Self: + def __truediv__(self, other: int | float | Self) -> Self: """ Divide this Parameter by another Parameter. Parameters ---------- - other : Parameter - The Parameter instance to divide by. + other : float | Parameter + A scalar or a Parameter instance to divide by. Returns ------- @@ -495,6 +495,17 @@ def __truediv__(self, other: Self) -> Self: It also handles the division of carriers and heating values if present. """ + if isinstance(other, (int | float)): + return Parameter( + magnitude=self.magnitude / other, + units=self.units, + carrier=self.carrier, + heating_value=self.heating_value, + provenance=self.provenance, + note=self.note, + sources=self.sources, + ) + # We don't check general compatibility here, as division is not a common operation for parameters. # Only ensure that the heating values are compatible. if self._pint_heating_value != other._pint_heating_value: @@ -528,14 +539,14 @@ def __truediv__(self, other: Self) -> Self: ), ) - def __mul__(self, other: Self) -> Self: + def __mul__(self, other: int | float | Self) -> Self: """ Multiply two Parameter instances. Parameters ---------- - other : Parameter - The other Parameter instance to multiply with. + other : int | float | Parameter + A scalar or a Parameter instance to multiply with. Returns ------- @@ -556,6 +567,17 @@ def __mul__(self, other: Self) -> Self: - Compatibility checks beyond heating values are not performed. """ + if isinstance(other, int | float): + return Parameter( + magnitude=self.magnitude * other, + units=self.units, + carrier=self.carrier, + heating_value=self.heating_value, + provenance=self.provenance, + note=self.note, + sources=self.sources, + ) + # We don't check general compatibility here, as multiplication is not a common operation for parameters. # Only ensure that the heating values are compatible. if self._pint_heating_value != other._pint_heating_value: diff --git a/test/test_parameter.py b/test/test_parameter.py index 30cc6da5..7c945da4 100644 --- a/test/test_parameter.py +++ b/test/test_parameter.py @@ -540,6 +540,41 @@ def test_example_parameter( """Test that the fixture example_parameter yields a parameter object.""" assert isinstance(example_parameter, technologydata.Parameter) + def test_parameter_mul_scalar(self) -> None: + """Test multiplication of a Parameter by a scalar.""" + factor = 3.0 + param = technologydata.Parameter(magnitude=2, units="kW") + result = param * factor + assert isinstance(result, technologydata.Parameter) + assert result.magnitude == param.magnitude * factor + assert result.units == param.units + + # Test multiplication by an integer + factor = int(3.0) + param = technologydata.Parameter(magnitude=2, units="kW") + result = param * factor + assert isinstance(result, technologydata.Parameter) + assert result.magnitude == param.magnitude * factor + assert result.units == param.units + + def test_parameter_div_scalar(self) -> None: + """Test division of a Parameter by a scalar.""" + # Test division by an float + divisor = 3.0 + param = technologydata.Parameter(magnitude=6, units="kW") + result = param / divisor + assert isinstance(result, technologydata.Parameter) + assert result.magnitude == param.magnitude / divisor + assert result.units == param.units + + # Test division by an integer + divisor = int(3.0) + param = technologydata.Parameter(magnitude=6, units="kW") + result = param / divisor + assert isinstance(result, technologydata.Parameter) + assert result.magnitude == param.magnitude / divisor + assert result.units == param.units + def test_parameter_pow_basic(self) -> None: """Test integer exponentiation.""" param = technologydata.Parameter(magnitude=2, units="kW") From a67d3798a02658e4ba04f349c41d526f0268dcf1 Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Tue, 9 Sep 2025 10:01:57 +0200 Subject: [PATCH 12/30] Solve issues in test_sources.py (#40) * code: solve test issue introducing Engineering Toolbox * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- test/test_source.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/test/test_source.py b/test/test_source.py index 038dfe8f..8b0f0807 100644 --- a/test/test_source.py +++ b/test/test_source.py @@ -153,7 +153,9 @@ def test_retrieve_from_wayback(self, example_source: technologydata.Source) -> N def test_store_in_wayback(self) -> None: """Check if a given url is correctly stored as a snapshot on Internet Archive Wayback Machine.""" - url_to_archive = "https://openenergytransition.org/outputs.html" + url_to_archive = ( + "https://www.engineeringtoolbox.com/co2-emission-fuels-d_1085.html" + ) archived_info = technologydata.Source.store_in_wayback(url_to_archive) # Check if archived_info is None @@ -177,9 +179,9 @@ def test_store_in_wayback(self) -> None: "example_source", [ { - "source_title": "OET project page", - "source_authors": "Open Energy Transition gGmbH", - "source_url": "https://openenergytransition.org/outputs.html", + "source_title": "Engineering Toolbox", + "source_authors": "The Engineering ToolBox (2009). Combustion of Fuels - Carbon Dioxide Emission", + "source_url": "https://www.engineeringtoolbox.com/co2-emission-fuels-d_1085.html", }, ], indirect=["example_source"], From c1e49367a7244b8ffe4b8d0f4ce41f04a36aa936 Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Mon, 15 Sep 2025 11:35:58 +0200 Subject: [PATCH 13/30] Issue 24: LHV and HHV (#39) * modify energy_density.py to include SourceCollection for methane * code: add natural_gas * code: add ammonia * code: add wood (dry) * add HHV for carbon * code: add HHV for lignite * code: add coal * code: add methanol * add HHV for jet A * code: add gasoline * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * updates to energy_density.py * code: solve unit tests in test_parameter.py * code: Fix unit test * Update src/technologydata/constants/energy_density.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/utils/carriers.txt Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/utils/carriers.txt Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> --------- Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: euronion --- .../constants/energy_density.py | 285 +++++++++++++++++- src/technologydata/utils/carriers.txt | 6 +- test/test_parameter.py | 9 +- 3 files changed, 283 insertions(+), 17 deletions(-) diff --git a/src/technologydata/constants/energy_density.py b/src/technologydata/constants/energy_density.py index 2c98b246..51b005c7 100644 --- a/src/technologydata/constants/energy_density.py +++ b/src/technologydata/constants/energy_density.py @@ -26,36 +26,299 @@ """ -from technologydata import Parameter +from technologydata import Parameter, Source, SourceCollection EnergyDensityLHV: dict[str, Parameter] = dict( hydrogen=Parameter( - magnitude=119.6, - unit="GJ/t", + magnitude=120, + units="MJ/kg", carrier="hydrogen", - # source= # TODO + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), ), methane=Parameter( magnitude=50.0, - unit="GJ/t", + units="MJ/kg", carrier="methane", - # source= # TODO + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), + ), + natural_gas=Parameter( + magnitude=47.1, + units="MJ/kg", + carrier="natural_gas", + note="Value for natural gas in the US market", + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), + ), + ammonia=Parameter( + magnitude=18.646, + units="MJ/kg", + carrier="ammonia", + sources=SourceCollection( + sources=[ + Source( + title="Heat of combustion", + authors="Wikipedia contributors", + url="https://en.wikipedia.org/w/index.php?title=Heat_of_combustion&oldid=1307512525", + url_date="2025-09-09", + ), + ], + ), + ), + wood=Parameter( + magnitude=15.4, + units="MJ/kg", + carrier="wood", + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), + ), + carbon=Parameter( + magnitude=32.8, + units="MJ/kg", + carrier="carbon", + note="For pure carbon we assume LHV=HHV", + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), + ), + methanol=Parameter( + magnitude=19.9, + units="MJ/kg", + carrier="methanol", + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), + ), + gasoline=Parameter( + magnitude=43.4, + units="MJ/kg", + carrier="gasoline", + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), ), # Add more energy densities as needed ) EnergyDensityHHV: dict[str, Parameter] = dict( hydrogen=Parameter( - magnitude=141.8, - unit="GJ/t", + magnitude=141.7, + units="MJ/kg", carrier="hydrogen", - # source= # TODO + sources=SourceCollection( + sources=[ + Source( + title="The Engineering ToolBox", + authors="The Engineering ToolBox (2003). Higher Calorific Values of Common Fuels: Reference & Data. [online] Available at:https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html [Accessed 6 September 2025].", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + ), + ], + ), ), methane=Parameter( magnitude=55.5, - unit="GJ/t", + units="MJ/kg", carrier="methane", - # source= # TODO + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), + ), + natural_gas=Parameter( + magnitude=52.2, + units="MJ/kg", + carrier="natural_gas", + note="Value for natural gas in the US market", + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), + ), + ammonia=Parameter( + magnitude=22.5, + units="MJ/kg", + carrier="ammonia", + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), + ), + wood=Parameter( + magnitude=16.2, + units="MJ/kg", + carrier="wood", + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), + ), + carbon=Parameter( + magnitude=32.8, + units="MJ/kg", + carrier="carbon", + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), + ), + lignite=Parameter( + magnitude=14.0, + units="MJ/kg", + carrier="lignite", + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), + ), + coal=Parameter( + magnitude=32.6, + units="MJ/kg", + carrier="coal", + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), + ), + methanol=Parameter( + magnitude=23.0, + units="MJ/kg", + carrier="methanol", + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), + ), + jet_fuel_a1=Parameter( + magnitude=46.2, + units="MJ/kg", + carrier="jet_fuel_a1", + sources=SourceCollection( + sources=[ + Source( + title="Jet fuel", + authors="Wikipedia contributors", + url="https://en.wikipedia.org/w/index.php?title=Jet_fuel&oldid=1310114781", + url_date="2025-09-07", + ), + ], + ), + ), + gasoline=Parameter( + magnitude=46.4, + units="MJ/kg", + carrier="gasoline", + sources=SourceCollection( + sources=[ + Source( + title="Higher Calorific Values of Common Fuels: Reference & Data", + authors="The Engineering ToolBox (2003)", + url="https://www.engineeringtoolbox.com/fuels-higher-calorific-values-d_169.html", + url_date="2025-09-06", + ), + ], + ), ), # Add more energy densities as needed ) diff --git a/src/technologydata/utils/carriers.txt b/src/technologydata/utils/carriers.txt index 62c526e7..41108aa5 100644 --- a/src/technologydata/utils/carriers.txt +++ b/src/technologydata/utils/carriers.txt @@ -13,17 +13,21 @@ # Format: # = [] [= ] +ammonia = [ammonia] = NH3 carbon = [carbon] = C carbon_dioxide = [carbon_dioxide] = CO2 carbon_monoxide = [carbon_monoxide] = CO -coal = [coal] +coal = [coal] = anthracite = hard_coal = black_coal diesel = [diesel] +gasoline = [gasoline] = petrol jet_fuel_a1 = [jet_fuel_a1] = JETA1 electricity = [electricity] = e = el hydrogen = [hydrogen] = H2 +lignite = [lignite] methane = [methane] = CH4 methanol = [methanol] = CH3OH = MeOH natural_gas = [natural_gas] = NG nitrogen = [nitrogen] = N2 oxygen = [oxygen] = O2 water = [water] = H2O +wood = [wood] diff --git a/test/test_parameter.py b/test/test_parameter.py index 7c945da4..99ed45e2 100644 --- a/test/test_parameter.py +++ b/test/test_parameter.py @@ -642,7 +642,7 @@ def test_change_heating_value_h2_lhv_to_hhv(self) -> None: heating_value="lower_heating_value", ) p2 = p.change_heating_value("higher_heating_value") - assert pytest.approx(p2.magnitude) == 141.8 + assert pytest.approx(p2.magnitude) == 141.2278 assert p2.heating_value == "higher_heating_value" assert p2.carrier == "hydrogen" assert p2.units == "kilowatt_hour" @@ -656,7 +656,7 @@ def test_change_heating_value_h2_hhv_to_lhv(self) -> None: heating_value="higher_heating_value", ) p2 = p.change_heating_value("lower_heating_value") - assert pytest.approx(p2.magnitude) == 119.6 + assert pytest.approx(p2.magnitude) == 120.0848 assert p2.heating_value == "lower_heating_value" assert p2.carrier == "hydrogen" assert p2.units == "kilowatt_hour" @@ -694,13 +694,12 @@ def test_change_heating_value_no_carrier_in_units(self) -> None: p = technologydata.Parameter( magnitude=1, units="kilowatt_hour", - carrier="hydrogen", + carrier="electricity", heating_value="lower_heating_value", ) p2 = p.change_heating_value("higher_heating_value") - assert pytest.approx(p2.magnitude) == 1.418 / 1.196 + assert p2.magnitude == p.magnitude assert p2.heating_value == "higher_heating_value" - assert p2.carrier == "hydrogen" assert p2.units == "kilowatt_hour" def test_change_heating_value_same_hv(self) -> None: From 0d15d3e35a73d865f959b6663e28688667beaeae Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Tue, 16 Sep 2025 11:33:51 +0200 Subject: [PATCH 14/30] skip tests that usually fail (#41) * skip tests that usually fail * code: type ignore pytest.mark.skip_test * code: change name of pytest marker * code: add automatic skip for webarchive tests * doc: modify the docstring in conftest --- test/conftest.py | 63 +++++++++++++++++++++++++++++++++++++++++++++ test/test_source.py | 3 +++ 2 files changed, 66 insertions(+) diff --git a/test/conftest.py b/test/conftest.py index 08d231e7..a1f77a9d 100644 --- a/test/conftest.py +++ b/test/conftest.py @@ -25,6 +25,69 @@ path_cwd = pathlib.Path.cwd() +def pytest_addoption(parser: pytest.Parser) -> None: + """ + Add custom command-line options to pytest. + + This function adds a custom option `--run_webarchive` to the pytest command line. + When this option is specified, it allows the execution of tests marked with the `webarchive` marker. + + Parameters + ---------- + parser : argparse.ArgumentParser + The parser object used to add custom options. + + """ + parser.addoption( + "--run_webarchive", + action="store_true", + default=False, + help="run the webarchive tests", + ) + + +def pytest_configure(config: pytest.Config) -> None: + """ + Configure pytest with custom markers. + + This function adds a custom marker `webarchive` to pytest. Tests marked with this marker + will only be run if the `--run_webarchive` option is specified. + + Parameters + ---------- + config : pytest.Config + The pytest configuration object. + + """ + config.addinivalue_line("markers", "webarchive: mark test as webarchive to run") + + +def pytest_collection_modifyitems(config: pytest.Config, items: pytest.Item) -> None: + """ + Modify the test items collection based on command-line options. + + This function modifies the collection of test items. If the `--run_webarchive` option is not specified, + it skips tests marked with the `webarchive` marker. + By default, tests marked with `webarchive` will be skipped unless the option `--run_webarchive` is provided. + This is because the CI was failing due to rate limits on anonymous capture webarchive requests using savepagenow. + For further details, see https://github.com/open-energy-transition/technology-data/pull/41. + + Parameters + ---------- + config : pytest.Config + The pytest configuration object. + items : list + The list of test items collected by pytest. + + """ + if config.getoption("--run_webarchive"): + return + skip_webarchive = pytest.mark.skip(reason="need --run_webarchive option to run") + for item in items: + if "webarchive" in item.keywords: + item.add_marker(skip_webarchive) + + def create_source_from_params(params: dict[str, str]) -> technologydata.Source: """ Create a Source object from a parameter dictionary with validation. diff --git a/test/test_source.py b/test/test_source.py index 8b0f0807..5522cf13 100644 --- a/test/test_source.py +++ b/test/test_source.py @@ -114,6 +114,7 @@ def test_str( # Ensure the snapshot is created assert str(example_source) == expected_string + @pytest.mark.webarchive # type: ignore @pytest.mark.parametrize( "example_source", [ @@ -151,6 +152,7 @@ def test_retrieve_from_wayback(self, example_source: technologydata.Source) -> N # Delete the downloaded file storage_path.unlink(missing_ok=True) + @pytest.mark.webarchive # type: ignore def test_store_in_wayback(self) -> None: """Check if a given url is correctly stored as a snapshot on Internet Archive Wayback Machine.""" url_to_archive = ( @@ -175,6 +177,7 @@ def test_store_in_wayback(self) -> None: except ValueError: pytest.fail("Valid date-time string did not match the format") + @pytest.mark.webarchive # type: ignore @pytest.mark.parametrize( "example_source", [ From 9c6aadc99e11456ccd9660e0075d51ff45f5dc59 Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Tue, 16 Sep 2025 11:38:47 +0200 Subject: [PATCH 15/30] Prototype documentation - v1 (#38) * doc: first draft of doc * new updates to docs * new update on docs * docs: update the contributing.md * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * extend doc and rename files * add linter for markdown * managed to exclude docs from mypy * Update docs/home/license.md Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update docs/home/license.md Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update docs/design.md Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update docs/faq.md Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * doc: delete overrides/main.html * docs: remove api folder and its content * doc: update to documentation * re-work REUSE.toml * update logo * docs: update REUSE.toml, minor typos * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> --- .codespell.ignore | 1 + .github/instructions/copilot-instructions.md | 5 +- .pre-commit-config.yaml | 9 +- .readthedocs.yaml | 24 + REUSE.toml | 4 +- docs/assets/extensions/dynamic_inspect.py | 32 + docs/assets/javascripts/matjax.js | 21 + docs/assets/javascripts/readthedocs.js | 24 + docs/assets/logo/technology_data_logo.png | Bin 0 -> 501579 bytes docs/assets/overrides/hooks/shortcodes.py | 274 ++ docs/assets/stylesheets/extra.css | 60 + docs/contributing.md | 35 - docs/contributing/CODE_OF_CONDUCT.md | 136 + docs/contributing/contributors.md | 8 + docs/contributing/instructions.md | 188 ++ docs/home/citing.md | 3 + docs/home/contacts.md | 7 + docs/home/faq.md | 26 + docs/home/installation.md | 21 + docs/home/license.md | 26 + docs/home/release-notes.md | 9 + docs/home/users.md | 19 + docs/index.md | 6 + docs/{ => user_guide}/class-diagram.puml | 0 docs/{ => user_guide}/design.md | 144 +- docs/{ => user_guide}/parameter.md | 6 +- mkdocs.yaml | 175 ++ pyproject.toml | 18 +- uv.lock | 2361 ++++++++++++------ 29 files changed, 2745 insertions(+), 897 deletions(-) create mode 100644 .readthedocs.yaml create mode 100644 docs/assets/extensions/dynamic_inspect.py create mode 100644 docs/assets/javascripts/matjax.js create mode 100644 docs/assets/javascripts/readthedocs.js create mode 100644 docs/assets/logo/technology_data_logo.png create mode 100644 docs/assets/overrides/hooks/shortcodes.py create mode 100644 docs/assets/stylesheets/extra.css delete mode 100644 docs/contributing.md create mode 100644 docs/contributing/CODE_OF_CONDUCT.md create mode 100644 docs/contributing/contributors.md create mode 100644 docs/contributing/instructions.md create mode 100644 docs/home/citing.md create mode 100644 docs/home/contacts.md create mode 100644 docs/home/faq.md create mode 100644 docs/home/installation.md create mode 100644 docs/home/license.md create mode 100644 docs/home/release-notes.md create mode 100644 docs/home/users.md create mode 100644 docs/index.md rename docs/{ => user_guide}/class-diagram.puml (100%) rename docs/{ => user_guide}/design.md (76%) rename docs/{ => user_guide}/parameter.md (100%) create mode 100644 mkdocs.yaml diff --git a/.codespell.ignore b/.codespell.ignore index cf2749ba..a292ceee 100644 --- a/.codespell.ignore +++ b/.codespell.ignore @@ -1,3 +1,4 @@ # SPDX-FileCopyrightText: The technology-data authors # # SPDX-License-Identifier: MIT +CAF diff --git a/.github/instructions/copilot-instructions.md b/.github/instructions/copilot-instructions.md index a7a7955a..2d93e54e 100644 --- a/.github/instructions/copilot-instructions.md +++ b/.github/instructions/copilot-instructions.md @@ -1,10 +1,11 @@ +# Copilot Coding Agent Instructions for `technologydata` + -# Copilot Coding Agent Instructions for `technologydata` +--> ## Project Overview - `technologydata` is a Python package for energy system modellers to screen, harmonize, and transform techno-economic input data for energy system models. diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 60665819..30c759f0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -18,7 +18,7 @@ repos: # Ruff: Python linter and formatter - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.11.8 + rev: v0.12.10 hooks: - id: ruff args: [--fix] @@ -53,6 +53,7 @@ repos: - id: mypy args: [--strict, --ignore-missing-imports, --config-file=pyproject.toml] additional_dependencies: [tokenize-rt==3.2.0] + exclude: ^docs/ # Pyupgrade: Automatically upgrades Python syntax - repo: https://github.com/asottile/pyupgrade @@ -66,3 +67,9 @@ repos: rev: v5.0.2 hooks: - id: reuse + +- repo: https://github.com/rvben/rumdl-pre-commit + rev: v0.0.99 # Use the latest release tag + hooks: + - id: rumdl + args: ["--fix", "--disable=MD013, MD024, MD030"] diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 00000000..0906dd5c --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,24 @@ +version: 2 + +build: + os: ubuntu-24.04 + tools: + python: "3.13" + jobs: + pre_system_dependencies: + - git fetch --unshallow # Needed to get version tags + pre_install: + - pip install mkdocs-material + +mkdocs: + configuration: mkdocs.yaml + # fail_on_warning: true # TODO: Enable + +python: + install: + - method: pip + path: . + extra_requirements: + - docs + - dev + - cartopy diff --git a/REUSE.toml b/REUSE.toml index 79009ed1..4633211e 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -4,12 +4,12 @@ SPDX-PackageSupplier = "The technology-data authors" SPDX-PackageDownloadLocation = "https://github.com/pypsa/technology-data" [[annotations]] -path = ["uv.lock"] +path = ["uv.lock", "*.yaml", "docs/**",] SPDX-FileCopyrightText = "The technology-data authors" SPDX-License-Identifier = "MIT" [[annotations]] -path = ["test/test_data/*/*", "test/test_data/*/*/*"] +path = ["test/test_data/**",] SPDX-FileCopyrightText = "The technology-data authors" SPDX-License-Identifier = "CC-BY-4.0" diff --git a/docs/assets/extensions/dynamic_inspect.py b/docs/assets/extensions/dynamic_inspect.py new file mode 100644 index 00000000..da077055 --- /dev/null +++ b/docs/assets/extensions/dynamic_inspect.py @@ -0,0 +1,32 @@ +""" +Retrieve docstrings from runtime objects instead of static analysis (default). + +See https://mkdocstrings.github.io/griffe/guide/users/how-to/selectively-inspect/ +""" + +import griffe + +logger = griffe.get_logger("griffe_inspect_specific_objects") + + +class InspectSpecificObjects(griffe.Extension): + """An extension to inspect just a few specific objects.""" + + def __init__(self, objects: list[str]) -> None: + self.objects = objects + + def on_instance(self, *, obj: griffe.Object) -> None: + if obj.path not in self.objects: + return + logger.info("Using InspectSpecificObjects for %s", obj.path) + + try: + runtime_obj = griffe.dynamic_import(obj.path) + except ImportError as error: + logger.warning("Could not import %s: %s", obj.path, error) + return + + if obj.docstring: + obj.docstring.value = runtime_obj.__doc__ + else: + obj.docstring = griffe.Docstring(runtime_obj.__doc__) diff --git a/docs/assets/javascripts/matjax.js b/docs/assets/javascripts/matjax.js new file mode 100644 index 00000000..c20d5fdb --- /dev/null +++ b/docs/assets/javascripts/matjax.js @@ -0,0 +1,21 @@ +window.MathJax = { + tex: { + inlineMath: [["\\(", "\\)"]], + displayMath: [["\\[", "\\]"]], + processEscapes: true, + processEnvironments: true + }, + options: { + ignoreHtmlClass: ".*|", + processHtmlClass: "arithmatex" + } + }; + + document$.subscribe(() => { + + + MathJax.startup.output.clearCache() + MathJax.typesetClear() + MathJax.texReset() + MathJax.typesetPromise() + }) diff --git a/docs/assets/javascripts/readthedocs.js b/docs/assets/javascripts/readthedocs.js new file mode 100644 index 00000000..8036eaba --- /dev/null +++ b/docs/assets/javascripts/readthedocs.js @@ -0,0 +1,24 @@ +// Use CustomEvent to generate the version selector +document.addEventListener( + "readthedocs-addons-data-ready", + function (event) { + const config = event.detail.data(); + const versioning = ` +
+ + + +
`; + + document.querySelector(".md-header__topic").insertAdjacentHTML("beforeend", versioning); + }); diff --git a/docs/assets/logo/technology_data_logo.png b/docs/assets/logo/technology_data_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..32d9a3119bd13f39aa4ea301cd90f0198ecfd96f GIT binary patch literal 501579 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�(b~nK#x%C?vvf_)Ktgc=v3yZzk9)w$tnvjK_g1E2sSc8ai|WvJWF5-xeQh) zKK;uOCA^d5%f>LA4Hs&%rU^Yl2Y6pAl%Y6p&GaoxJ)1GvD+^VJ;#$UVtV4u`Du+#= z^@zQAJeE(Z^6MmsVHlzV4bJ$5nO@pu%V`HzfK*(Cic^!-lDH;J7<~&As$8^y6kQ2o z$fDt%ZCY-zWtt76l`0xtaZVg6mE;0|Jd~`BI2^Hg@^^Bwyb&;miliQ>z(%T1z@eB` zfeT9HK(qbku?gXh)u9p$vDmt@ei()YX-zWd;?yF~4qmn7fEDA9wzJ{ZKxy;Rps9M1 z4~>re>dy~u-neVOW%FG~5}qF!Gv1`aCXIU5@16JF*FL*t)4yMR^O7SD&3auzqkiQB zL`RHPhGJcRZo-Yjna5hK;jl&OGbcr_-`}^d-QL$xonFnB14a#w3}5ku54`SGCk{1h zF2Xcg0(h-C2Npv!I3>o38t9LH!P((@t#-#f57emU>Nyi}Bd9}F)gmn`$OTrsSY-RE1xGd} z3$bH1K8Gnf2`-$A>lcLs8FxRh?zES`uRA=l?9dh6eeGU5w>9_SR1&?cw!|3*3qiUyx@ZJsKemDsdt$2C8>^Ugm$_|%h6uiv~U9UY#vWI=1F=}cKaFWYWw zbV*0&$Y+K~3JyteqOCR9+O~1~%+wrl!18+^+c-R{;cT#${H*U+Y*<6Ft2Pv9KnHo^ z8X71zPzf6YL!{t$pkbWJjN7hpPmqnEpD8YKv1C{wz3g^lNkcq`9OGswB0w5fHYjL{jEGc4@s(Ir zkP1I0-$0fHAPR<9v`Zo6i*$@a&Pr99v+~~2=lWTHpgFj3eDt2bZWtXN%KLeEgYjL* z^RhYEO7s3BkFIw(!#7Uw=TFO$ArKs`4&+B_$|Aq~(-&;rzW3Un-MM(p!JU0mPDK;y zv!(ddqw!syQs2qgG>XFZot@day|=g9Zg-vTjt&pLV8w#51D4NUzUauqRvvrg>ZMD@ z6P;#7=^R7Kwk2#|DW=E*?`VK&z-U$;_H%)zQ4c@7&P_RO)SOdsD9f4auo^CEH@&@` z@%amtB3eg>o)PRZQ0*11GRr?LeF;;CkC0qg>aHc*T1mS^ODg1>joy;tsv;}u&DJx| zZae<8_iruDg5`7i`zBL5;$ay|1%A!eTdgf?A3yo1Ro}b%&{Gu7HP8jXHwr*`kn+mlmM?J^58*)8Xc4t(wl@4xULUeWDz z-6~OFV5{~Ca7zh-=kNoyox&E1F0+!!YJifgdR$8tG71rwID^176jguDrbdCc;>Q9H zN(l{ZM3&n|z5csD{q>ZyKT=yTch=ll?LCvBMSEgPsCfuu3|m>+7vKWAqaBraA+}0r zw24OPe;7AaT9B@l7D2RPsbByD<4ki1hd!t*_;;XP&U;jF+sL zy?EZi2kp0LY=j_V=}TIi`*w2Yn|V-WcBmMVrp6qql6mE53GiJ2n1+jGO$8Y#fim!D zAjdR3Z+MVzr=RDls+y@vy}5Er?tGKpynEuF``1lu*>T$+9=P$>_jTKQi?m)249psv zwQSKMU)bb~OQ-F_p>W#@rSk%>r@`HF*`dF!sg~;0tpDp1bL#1ze)o<4x%sx=-f{oz zx%>5f(R~^G0%5KyWC+6|au_A3?53CjQHoP?yxFqPS|DwO{;oU%sv;0as~7}{wO2S8 zBKd;2?SjIU{E7wYhbOZNw!?^iilJ5jgF+*K+t54=D-~YYxL5^ZBX}1~RBe)=7?O)@ff zJip^%vuNCR=rM*{MtR*RYcpqF_N5=5aq0_+mNn6+a|2qMi?ffpuZqsU_LYx3^{NZ+ zyl3r-H3u`lYC{E=dvsn*bvpZYb$oe2uj`u#=6dnsc`rGA&C!P)=q%=nRZ9vztL!J z-oEpcGtS#l*o7+>^{1vxr~>oZ|B`zk6-C*aF|hHGCtk8<|L=e6l984tmVCqb;3~5$ zZ?;#Ye7r{;H+J12t{Z z!O@W;k2+-kMRWW8+&va_94!scO*GhAu*@93zzakJFMOQ_-AQ;^s~G%qyGjkT%{z$= zrH?4lMA$egG+`>fYFZiV@IE;isMnj1KE3Je*LqR9QlJjR6HX5kBeQwmIur7yxqEN0~6d8Q#mBA28n52EOZP$+y!-MiD&rtl=; zgYLCYZ`%HwKRtZ+-D~%3-16WPn;(60hicfy%ozi-X3pAgo-;U#NP|B zS1JF7Me2~R;L>pfSfz^oAg;BQ5%FY&sMc|DVG(HL?9w=|#U)t)#Nw>*7l~VeE<-q= z1<9)Sl1s2}R(yiB4J4ZD%HnQ=V&6{^VH-B`*pROvY(Oor|4QlJf-T!(k zt=;&8OW*Y7kKg|L2eRRT=HNiT*DKpSXEU2Ev;Umo0~U*Yhe@fbNC-=$#jT4LlJq%!P3w*8Z~pDm>vxVH zyq~`t%muIEc2l2&NK|{WvuNhXSuZ;(>-SSr(-r)P^;Q+(6ek*tRcvSnNTR0im#u6Y z$7QUfWD*pMO6ct!qJl=F>8e^S001BWNkl!Q z>1y9~Ozw58Lba#zTE-o;;BaL9pv-vYfvV}ai* zbUn@b+0I9wJ^A>z^g5lSmSDr_ZV`nbkP1!|ANlA0!AQ+T zs{>sX%n*f;;Xi|nifB0P_{&|N2CHO1kUF>Bd80K3C-AaUY2it=cT=o zp*i!%J5%k1TYv}BxeWbB!Z}m-vBUxKTHPnt-Mm6@&9oe^geE+f1nU!e$c7%>rO^6p zFl~&>AfF{AQA@fbT9YjfUnPuDAVW>yNd0OR+^&Pg@`=0dKkD#RuRiN#4tdmQ>6rS^ zB6dutN?3w=I<}%Pb3xgH4sn5^rfzO@@vQrNZLs0KJ3Ltb(xvZx^XpFd$fvIU)t!&D z=8laoomXU~10n@qR^p;VpRMz3L}+uB^1Ylk>t(jvckdZ!HD-=3@)FqVJvY_9>Hc;3 zA0GPd4}U(~YPjDToilsQ^Y(k;q5G{|I)CP@p&7%&b7qf>&l+wt4N_(mZ|MuW!@)Eg z${a|f{l@tp__E8;2VF7t2-h<^4M@{zsmfsgopIT&AqAK-dtrhlMJRaM+R3MxzaYgpR&C?@AW&Ldop3)0D3@$zqLQd;9ga5^(Gl& zFE8Gp76D;c--35&c<;{V_B{H`0sAky?3z!%@?|fWnrypIH3EdlsXZPSV@HQ;`8rAu zW~}dNqT$ZTQ(E)_2)*eoDi+xNN>BqHnm$YC4Vf8W5`gjmqLf-m2oN;RCFM5(>1KMOmXXpVB(`y1Nw|9J z*MSn` zqiwOMNYS{1wqhbJKSzsuuRwNe2`)JO&UbDoXU?F|(a?=!0d?1Ewf3f+M?C)kC;d6! zeI$O3U&1OR=|_b-M75AeTKInkaZwK9vqbvn<2E8vZf@;DCrUF;Z+AtOdfd~5oeRdUJ+M4`-v z6u`2rVtP>Uc?F^InVXn6BuA`(43vsoKO5QbCy~cC8UWc9yq`4)x-JNqm<_fEM!98a zwi=gR@tu1fdwS{f59;jm#V(Yk;++=dOuTP(u4H0rsyEeFQ$^3`?$=+~< zAjR4K4j;onczT=8GNLMjxRIw&s&J+l!CAq9rv)#=vP7tfnOmop-MzizU-G=GKmP%@ z??smBXc0v>HC_+$Tvb2@y&KYsE1HA0iLJLGeD!ZHsQrcWrY>eU;?M(ral;pHxb=7c z{^jfbc<0)|#dBwm&vL*t@06jY@ZjuG|IT^y#)gMl zV7#f-MgQ2n$_Po)tj8$yklbB=ItAH zP41nTQhA=#bYoy3nK9IuGpoL+zOcqn!Re;6RJz^cOsOAYNJ3IK-pbMy;Ruj#t457} zQkA52hq|WrPVId7@g?IkFZ$HG{^{+noDs^-m?{m&y{x3}Xb0FBnUF+Mg~OCO;h3@F zQZ$YU0ew{B9tBnzpk7bQEh#W1{K06Op{8tY!L=)k%Xu{X8~A*H1Vn-rF9)EDu?Kq2 z$~C^RU_#`W;fgU(ZUzJdqClx2GaknQCSuy)F*X`t%8MZ61L8+s8g|Li2atB*Z(?7> z3W^6{!^MAR)NkcSteOf7Ug6^CH|=!qhAC@V)fhsB9~-4OkH)|h?+1WW@JD52fhs(! zhLDK`#;o~)(U1T-M$|!P60!SC)!S%dAVOi5i3^lw3=FJVx#YoTw$v8PF1o!01w~Gx zvwk^q{+u7&aQnO7dG>;_;iAZRK|yMJkyw%8q1%|GU1_azT5lou<_BQ+kX0^COMH!7YzIa_s)ge|*hl zql3*n>(|1^JbK9UMyvVIqfedt)=%0wvj#?oGJlPNB08jG;@>+%Qzn}qeDrHy`oKS& zb85HK^EXi^J~nfYqRnNz#NrNjPYzPdniYc*umCl##}A-%mN5j)fRw!Yza^G1m~WiL zrXZPRjD}$mWl8WZ-c!1=(Z(}tMBg;pt*rwY4?p$nl~-Rkf90}%rx)U1a4Pgs<9%MO z(dbNdHm~0@Gg0GnhG#Ebyx+?4(b0jSW@D&XcVC6?Ut9RTw4tkvL9@c(lRdqkmt`6b zEc!#K2B#$niTkulQId{Yf1o;eqTGktfh`Z7-R)9RXrl4LorZy!nd)@4sm+@;<3(#$ z9kOOs)13BLkkavn+zvq0R@;zlORjz1CBOnMg+$kh9p)GoT zksMajrlHfJ@e!5G42_g*nf1zkzPFd%_V9+@15cOx+5s8)W-_h19vp1d6I-u0TJ?s_ zy1HI>OX)Ks&H#ntB;`q#Tm?eRX@q-VKXV|V==AblsV3Vc!@fqU9jZv{EoTI0j}9-K zQ>)bjA>$!r?tU@L`h7PAUl-*oxBP84qT9qlYEqjXI<&bQ%=0?72%l7W} zedDuQ|8n7*&U?qJ#zsf_4z>0BsWX5Y)vlIxg?LLHdd_Oz0RJhBrBpuZ!<)%r1YAP0V}v9x@9?BiWaTkG!Lp_JgnG8 z7=8_xfs3>`V!;PhHGo88i73wz+D<1JM9sZSrePYTBm~GYYM!hTawFIj)U#v5DVow) zcO7wqMsb1`y`m`z)=?UEw4zqi*$Z9-4qD7~bYo+n$MeQZiSdeZ5e+iEfr`QeQPSli z0mo@POoT^^MV(%(Yn6201-{eOxEd%3SVQDEVYi4`JPW0_D%LR}ejne=+ytSD;6x9AD`TRN3Xv_tiN z{GpPs;C@NYwg-e9B+Epc$-2W7847)X#DF_wdjzIob(jvMwi!=9xna+qZ0730ywkT- zq7@b+Nt~I=Mi$P!;>w$jef~iw9J8j=>D3!Gw=mQf)ABvteET~vIZS%gXt^RtaUutq zkvN*D>m}V!rIBQIp^A&=nyuEen|B<4>IECie8I{E{Vp}*BHFy<6lY%6h6gu2`qT?o zFT3u)FB=_dW&J$$9S;23xixPznmcz*y!PCWJXar>H9nfPeG?}V7w-kb?I%9os@FFC z;epTn+xtAo=yqx~f0~Z^urp3lQd&j!gyo#5eIwdrG@q`fTllo_9YnhGL0&Cjg^5N| z6NC($tYg}Q%@xTQA7u@IkY!VW1z|55EToPR9Y2F&I7wOfpM39IH*G8R@)@nEcE<#( z%BLtvcpbSXca#CfgHW;dweYd)zoB3$NgRcOElf)k@Z6^Nsl^Jqs zGQ%W8TF>>;8an!zAiKT{wWRb*uiMq3D~1V&QORDCI8tf~nqhHaW+fz4Px+AD+=FvfPDRwItQ-Gdb#`F8EsZl0Av2pn{Q; z;FEu(<^Kg(hD?`SbV;J%7^jW^X$$ypb$2=AlXHTz4LBNyZL$`6Bn!`TJ zi6aRiHP%Cv5HFzS8lqM}Q_~=y1sTqZ&mfWKs;2*dE;^0@E9Dn3TnnB6s}Uw`Bw`X| zCny8sqGxE$aU4%u3BgqfkAXdS2J~WJywEC+tZ~UrJhVu%st5sj2u025++PnmbhU2O z%WgMKQW#yIXe|q)d)ci0mVfHy}&8D^XA>=^0 zp0_HkW~#>q&Up2OKfUEk#~$skA+0s|^Z__I!_Q=?U=4~eP}|rVLzG@5lRqdVln+u# zzC!_{vz%q4QFkEYrKg^^rC-inF~8I9)O=?nL&tSOxu1JQIWRo5<*_IKZq0Emb76EQGBLa$wY0JR4-b6o;@9-A#|PSqk|h^el&Y z5`0E_9sHEy)C}QD%KlK`fu_EEExS^Pi^%L)o7U@Fx9|GTAKx~+kvNnI|6pAD6v<<&wGX6-DN6Ht~lxOKzuCMn2L;62WRd_(}#Ycuz&B%a_Fv zY3&b6K`gYEJ9;!R9idTt)-~Ke5R69%O~VQ3@Ca(%={vL)je6?fdzR%+qE0yakmFu-=wnZ8`1!B? z^5yUTWcwqJZ8HNi=gl0QIjp<^DRQrKN^5Z#8t%&QHHb0(Nfh-1M$*U)AY){qIy%&) z7J0C79$Yo*&d}7|A~Zd@F9rY%gYaY z-m2ljmS41f*A1FS91Ji!AY_272K$V+P2a^TWOqMf_Gswf?^BB z@v5an21y9OfU=TdSF9iOITeJHdg(%Nz?Lh8L0Z8DOxh~Cjfm)Z)DH;d5_!@Raa&;1 zO5*?M-XC$2tj;<nb9&%G&5|K!1a9-is6|<&pfl`KmPNE51;qCZnxb?YecD|+7IZ3<5F(W7(x>w62bLopb6Fo z>_9vMNg@E48R1mK%S!xUT-Iqbq9=i=a~3&uHu9ju4p=_7+3sX%niNz43fXdx&9l5U zI+X3V;`mpb|J$2Bf6NOH?f1Gqr=z$i&*JV0ND?Zow3b(jO29!@e#8nH19;6PlU_WW z>1#9_&#d2k+-c`;H|d;}i}HQ#q@EPiVu~A0It?!dnyt-`uRCP+aDZCA)p8HCs>p`GE`1d&8$c{FYv) zlh$jY{cC9ulPQMv6-WxV3GUNEIprjW%-Ry)C_Pq~4iFJm$f{VWg4dPnC9Ab(7C+Ep z#KOyPiVOCVEh~=zRI65;-Z4oi>QuM<`tI)3 zCx7kp|Hny4yW6gLzu~L=5;qE8?V0#z0SlMZfCR-?!E?g6Vb%P9627J(2ve#e?PhRZ z+9F@1f!i>4kY}NpiwSq`T0Tdhc=#6jU%}Y$CezUxV;yil8nP>FHZ7wO?jgKcfgFv& zQ^`dpX=t0?&vN(SgZ5u?z{i$0a ze$U^cc6tQ*?Sm#L-lS84%mfH&y98u6wEZ1xim+=ah|!7sSKjn!A@q|{na>HglS z$xYiPckUY-o$=xWmYnv=liu@&lLlK&a9p=4CY>(!{U|t2B(JNV3vVEC9+P2dX4mr*9ZgI*b$HlofLX(dzT75opq?S}v^* zYi3O0n}3GQJMNU1+;scBYUzB-R3Vj4d;YMO=VQy~f90z`JnPlR?Z0?-mX!%xLcW1l zSejV-CFDdn)K?jv1^5vgrx6#biulBPd=-!#rCe ze#2`{yX?vzuXxeH`*yXHT1fV?$D|s!Z076%qnDlW>JQ%bi!VR_&{dsIr%|ty&ggh= z57|Fl1Oo`K0TFp&qc$U@rA13MfRuO0c~LZKF4W$A^64Mgo~Cn`&&wt|o+GBS53DJk zbZHJYH$C?BVJjBg_}`a|jSl-0zez&(gcKp4<;>q}&iUwH9^Jg(^AG4uP5H~s%Mg%R zLp3RRp&A3Nr|x^`Ew4HDbDw&5KkFy8dJqt5H_piC?DL77E>9T1Vhyc1kF+|p7u}Fb5vZ_`w092YQb$DAC@M8P@rUW7?^z;7K_kU%F z#%#YwM-#$y0#MLpeWUkHYpfGiDO{ZVpbH~fPi0?MRZXY zsu0<4!)NV+0)=1Ut3XS-ah6eHIDs2_rCZB|96rAg&_ewSbuyyy| zKi|9d?z`50=hnNou3hK5osN#ooH;Zw*mR%Ci`;V$Ssqr;-?|uh1y9Q*p|KT(O(C}B za~2x41Rf`pboDxwg?r>D{qN ztqyfIT$Aa0=lRr8&BM-}J)8=7N)Bk)*|W7_E+6G%O6((r zBJvnmG(3PQBX*mtwy=CaV}fWTl2Dx8flV|T>ku6xbR2;owpo~9X4W-o6d)>qMHn8= zQidPOtt$vL8AiqHIpo3s+U9Bm8v0K9v#d_@|M{&i|MHdJ-#ytL8c53`#A-zKcos8n z&KlafZQH+H^7U_C{V}rI)?Y>BO=t-57_4#Pk`(|XBS|CKMq^~#6&287L#@JiRYjc0 zfxt;y79b_^WaS&=6g5Pd<=9WRmZr{mT=MaE{q7fk`pbP!FIcm3YWIY$`P41F%7!zu z-A;eT@WABK1;?Cn-fwRG{NEjZp!4NvVt8{En{J6n8C8}R38c6UB5aJIu-67h2Wi52 zp4XerXSeP+_LK{@+H!pHyzbt1tyZ&~<_%8B-#(MqMh3S%y5Ycu~I; zQ|*t+OS-1&^m9M@)4x2t;-~|=6O$Z85Si>F_Cn=qV8)E~Yae~Zafe;~#f!=!Ga-A# zE1-a+$(M^Il!;4Bg7Gsl2oh=8s2fpL_Kw&3jjbV1_#38NKRITO< zO!`GOIW;k{r#sP6nO-(;#;SR9R-b(IJI+4gp#2vQ3=K3w>N)FnJquP#U7Th(u&@=J zr$vf!9g;^|C4i^Uiat;0@4$wy7d@5ZEl@|EE4v}yZ(H?fmcIi=P%!7;q(Vii1y4gj z<@z^X@e0F%5tFkmIV577TGbQNPp=1XHY!Xlaq6R)vDymuPLR~QmM zW`jCWR!b#(xfaX9*v>NXiP{#%44R_{#TWaCC9{CEVua-Hkzh6A@wDTXh|EZ z)itJ8lqG1ja8x+Y8#4!XJ^t)L^G9#`!DS9)gdruQk3Q~lF<_FO``#;ldfPoKk36tF z(Kg}6C2yz0g?IiKg~KAP8Qa!9dGvuxzV)?F)Dz!d$QREm@mYa$B$kGH4O$2&(`QPS zQ-QxwOpmh0W0Ji5bdxEm8yi{6+bk9bzoSJMOa)XTK?%b^3^uN@UDvQ`nWY$^?}CbC)U5__#+QnwKO2hngiC+7ST|c|FT*v z3uKFNl0^nN&JhVk;p1^i3VMw?Gd6<^V-Q=gQZVzyUXx9~iCh}+o){(rby2`U0>mt! zjf&{S7z8yml!VQoVfC$ILMzWuf;?iYOR92Ft-41Ky>8d-ORJe2u-~G8J^u~*f^)X- zp7{0e?|b^m4fn5o@>hR(bo;ue>pIm#!;Rrq(yBF^jlovk(*0zGgVvr$@Lgj3C62^m z29HpZ_pxL{DE#$Bon@hJiDF`+=yi);IXq|fD_(NwVf!zgyL916$E;a4e@v3uMb_)|d&Z>xYM6xXpI|Xy zkygyaqvI2Zcxz*Cnt(N^+}a0mB|Huo5Ait)aGswV;~H5Z;7v`w24_c9g_5)g8-Oj~ z`yn-)8L&z~l4a&VTolBt62-DISdH*qMh%NtR?{f-=tvWgKQ6_LqhiML5(q@mI{t=u zL4Mq2dCpmBk3^h0r~pAD{D{K1cW>8K+QTr_W1 z;cq-i*b7D3#ayXlkN^N607*naRDgkGSgHiZS0w<8$P0)RJ!o$sGn7z3)?g2#_(0%g zTY0e|F+mS&iE$2lc%b>~Tfgwqvp%r)fyWmgwyLvtpP|Cm@Q%Wt>#X(Lz2P}C_u2Bq zSDpWhTfTJkp{x3xep;jJPKaL9WhKa_rMA$MXwD<1 zov1FeRa#f&PQx0NeC-&^u$F+^iZ!!HllU*n{0RsatQ?_r@R{P^pk@3Q9fN@|LBpwI zRFZO}hYhmCy+85vmghRfP?GpdF)8k42GHLE*0A|2&pJ{0!viibw_H3_a_1@y+zwL& zX+xMLN4x?XWW}sm*c&TK%BOEFU+bzwvf2H!sEZaTe1=U2iq25n5l_uUT30$6DKW{= z6_G~TK^>+{te+K)RB+5;SOrIf+9Ig~mxEXlk^sLMep0K~eEZcrH2m@z7(F&J zuR=ZM=B>MS@7j6aL+gKb+kI;veyTe;wRijWr`itSm3pYr8fdjz^;V;vHtR`Rb9<79 zLgr8p>K8cVGD@~M9%_VgPs{aiIvnPT47R^2$ajMAOBlLp`J?-~=4k>$YT{u^o;#D4 z^}4<8RJYyf<(;1Dm$ft*Yt=^U$HU z5FS`-BxxC|d86QBRpAXp)Ug?GvId-JP?~V}AZwgKNL_uF?0{B4z$nFL)+xex@saEr zpmA_<3V{DdCdJlNA+IrQverc56-j2) zZ!1@B(Ys_Rc&*c2{U$&fKP3T0Su*m;mAWiO$$g;k)3#l5qdSqqSpmY+yHW@wqgCk-7g%^=xIbw;$kVF)~dmy-im%K7|83Cd<(4=L>81v%d zx;r=q%$=RRjgJm~Ou_71qPYCY$6mL+bn*E4Z+rPASN(YT^AGIxJKX1jFRw90md~6s z`pjRSd*6AVz5Yj+2VN5wTPqk$RKBv*^6FZqI5BN8jS=@?Q-xLJU8*cj4ATfS$uTO; z;UFv|iY1^eq=q%)yJL(F&G^HuSHA4D^Z$JRql*t;-QGJD($30|K@EkYy>@qK?yTo@ za?-0l^t)R=d&EKeciY{1-KR5fK^~beb^u8v1o<;ecKUjAJ2*73b^Yd*vxjc^!KL$Ojr986G)YJl{Eu^6Yc($Y zj~`t1&Hq{QcZc@co`oXR9&SMima5F_gRNcbx6G?0H(h(hqVbWu-}U#%2bNhWu&)+{ zHHzskcGY1!40~D7*YOy&B0Qs`d`4U)AF4QgSrvg6l?WiLTPgbsF*kIaFq%pmF_1#d z55rQ6C&gRRDHwe2xd~O!jW*sVaW=xY+cHJpI#+h|VJqDKCWhb7V-J!a)QFFVNaO=S zl{$VB_&^ZDfRH8TT&9NDDiZZF@){CQVvb=?a1E)fC*x=O4a7!@(TTVzd|r#uV5kmD z#v&f z%A}Swo6h$q^_u&u4xRl>YRd2)pQq5cK|U1mN+*jl-2PG&rSDAY6(rNqqPV<;~pnPD4& z?Xz&A;*8;|Nfb5Xc}7j#RhZzMjk+8T$QZcp;GZpI6ZiwFW#H(UkI@LnA=j`H&=kwM zkAFGbS5^whtd_s4isNQd6&6C%z3>v#3OmYJjTc0R1|akx!#7-MUQr8iuMiG|b(mjO zmNR={)JzInpOf+dyv=2VyT^JQ?(nC|HSVB^=b)ML7d#AtM@#i}wjV zs!9|hh#v>&qNR!XIxGkFk_<&$TOB{7DJ5Q7f77uo&->?dest|GcJA8O8ff@~5aB3# zusyzHt~=RYc<}O@e{;_#KK1oa|I0i1yo1Hr7Ox2$rSZFj;)vLRAcw`#7#o?k=&>y; zinS5viQAE*Hu78xG=^6&zN)}0MK>>Ke@kSeW^TFRiepdx=ZDrlwd9cHoqbcbNP+SRoOtT_TYCAjgO_#pP9-%R^5UxG5JMM*YRqsTW8=aZ&0DX#e9_!lSwE}!P)Yo% zavD0^DTC^0GGA+PitjP_J|ItzTNXc)Z{5(L+pi<>LBF zK%lv9hVF}?)BP}jwjxE4GL}>Ux>mM`K^R^J=_mIFWdyPa=_{&3tiT91YxF{k(4CeF zvO&79VHd5$P$WLxsg93j6QlEJib>J)+&^dLV9U+au;nZHzoepM@rY(+`joFftm;!m zGhySQ^BT*+EM^QbMHLksHV}gte>%m*T{hW-3AFov_<9d`&59y#xci**oacFNntUhS ziNG)nQFK)dYr;hY%(`n>!@965tC(NG*Hw3QRg@&4?&_->K1E+-RU`=tf(ZkPpeRF} z9GQIY6He&Z*VJtGc?H=OPKob38I1o@P}%INeO#^nt^V@7%p<_r8r=cI`aSo9+*0_Ut#kB1v^w z^pxvq=8knUrR(pV_`IZRu343?E4-_?aNA9lEu9Xx#+qA>jE~G)Jb!A*oHfgr9=mM8 z(Nl}N$%5fZ-ollFSsi z`IHK!>{NoS0!Os64-M6zmx^;$y`8j8i-2_!+Doar7m zoyiS-4KPAfD07sNm#?x7E6sULEiM^Q7mQnnoJj1Qz(DAFn&l3HA)#>yr}22e2wZ|a z4$dqlqXr5n3c3Yj==u3>ENQBD^08N9MI?w$;AzDNs9@I~UAQbx^7I@$1(%>8MJw@( z4#fl^Mc}ckD9S~1N8f$XTmIplpXog9WOHPgFn6Vf^lrO((Hky*^6?j6eeH(h*Sz+X zrw<3c%=O98Vc`^{Qwi46UPFtZCjpKI4jv_|g6p%)K`bSQb#4F&_(`G?}n)a{PxcDmPm>$bOF zc-4{4Np;`1s%m%IhxZ+*cklo1ZC9Rf^h(-6QyHrI)4T*ns{~v^2d)7> zXL*kt1Eu&Fr(-f15ja@{O0YpvS$4J9Xl~$hWw(gNtizb$t|D42!8q>?(2~)D^>Lb! z)Fu)2c0;Nf;?_71w!Zzb?Ed`CWsjh{hBsP3~m;tnl{ zqTwnke_LZ~S~sFbCH@Fii=Ju}h9QEofzQa(22)kM+l4p(Dmp04Z`sfgZdp{dDSQF6 zV+~8^jxJj;f&3Sz_$=>%ah+0WyIWbg_8k4*FmEL@{o#?`V62^|?QD9wH|&*_vSVX; zJMT=4jpXelPu-Ej>}XQIfyQE2v{YEQE}&I!IHY8QJFi~*r50bxmiy*i=zL-+vh{GT zz`f`V8h4Cz!Jh%!G2ZzNN|c4_@NYA|WVTuq`^1wZ9SoRH|H1EcT<85VwgcL5~<1;(JY zv@t}Yf&oM_0LbuKDcDh|mX)^}G@X%8Doh~0!-Wx$5^k(zO-2xnCx(_dX!D3g zIYrJ?nk!ITeYN`8R|f} zQvd%ZAg>mzKk984T)K2>@pGSc;$Y~yNot%86XI2%uv^(BifZBfH6GtG{ITN`H^!K& zB@Muzz$5Ycr-rQye8wzA?1v|m4XyF(w43zS?_Bzvvo84UJ%3o!P>ubE(>!BEbK|OA z{-)O-U$$uf<~?V;`l7q8zjW=?WXA%9M^ZO%x6zQw-`Z^Wj-~RW;zSs2NfVayyZgS7}6^68HU2 z!lG3$I$<3GDPa|b7j!{#v~2NaC&5|;!5E3aa9K?cZX_3k>4Q0lQ}BeNBF*w}<907u zTKyp&5Kp3wl8cJfJ4hPh7Z_sB&7_GCEKHG19Yd8{0ZFL^kbB+jd3DW-trQU?S)!Sr zx^3FVIcA-;vXPFSH!<26*#cVA_J^D5rKG4K^7OK)edfmt(GgGA{Ji!f@_Teu>S<3i zl6E@{?h{@r;(!sg7JY#=fO`s8R|41(&13hQ$hM4T7E1pyS6PxIELd(eZiwm`B?)f6 zFwdn`-0X^nsl~g>u$3gfJVUjJim;p!O1&i(7Izr_ho`_7MHduzu#(tAz67JjCV*%O zLP!DCazl_(*%~W~g|HQ7L4{qcLKP4ZSqmGupZJJD06lwy-E& z6)J@_)@?s2+nw%DfBE~fUUN}r!@71SYew}1QMXFPpF zzu(U@gtkBtK!>2C&`yrC@Ftm|n3}YBqM7!|*P=CSTA7bJF1> zh6p^0?zP`0#(X3~cQUF-{QL|3Y4|L6Y!Q?cY(hObYyx~{C9wk4Wbrn-vTv!8AkOkq z7ZVNX3ylIW5H$waFlsSM;Z#bZBCCWm$R(-y0%b`xuv+UN0ZO7D7k4WUT=7E$uRKGEuSTN&4Jw65H#N)2f!O7~0cia_eJD4U<6Y~HIH>uX+h<)EhW z2PqnVNNp2YWo>tTcSdpU{zy_;r?6q(_;-2?$_9geh~TXdH)Og{8Rn4{GpOJ~MV+|U zM8Yfi#4+I5`NQN5jZQfFg3&1?JK)m-PcA_g{6jU6x=X-SQOdrKJ- z9CT^n)RW*95Y;Qu=$QTbl(Ci7QnC`Agme+3f@TH-Akm^Om|d72CdxuSG$*`*$?af) zBZ{F(A(f!8e5*vzSX|=@E)G>f{=!HgB6_D`(G0H&Owh_-6swF}Q(1IBg{f=9*vEGCy$=$%6(d^pXo3T8<^~Os#ten5&zDGvqjrqED&KXf>qAX2|>6wMA zS8OYam;Tjzx9;5EK%Om8gdf=|v{kU!Dk^O8N&8No?>{j8{4?La>By0#N3ZPnW>TL6 zwSXhP(qX!z?Y)ohSTkqr#&3Ok`Q+Tf6@Dgc&{h}2s@?9~bN|M(UU}ijiluWWax*9s zKK&@c$-u7tLpiJt{_f%HuleUcKkcNR-N7TNxQW&R=habEj%U!d1*eHt9@npgk zYFLt0AYU3jn?DL^MQJ{(1Dhd>fPYc}ZbTo#{8G7aL{%`^!JQI&i5NFk1L>NAWyuTr z;kvbao%q$1TDpNFa+>vv2!Pj+!jk|21SuI<5l{2Lv2LP~#}mPemj*M5S+}?~uO~_? zBjSkgiPfE8-fAf;VO&TU-{qbxAa55b`7x&=DFM8PVJ3LoAv>{Rk&JD#*q4najnEQv z&3@Jr@(8!U+$idP!C%!(L4>%FPPwr-GQrJ{d}hygbxm9oc6SJ%JG9JI`T4^c{f~By zI#Umywf95`Ts9p|<}OmBO}UDHm?8jAt?UlclDc3TH#;||gJ%<(3UR-t5I)@LGb#DogjLr@L56Iz#&`heD1fF}1%;RgV7B#CMzFOkC(+9$9> zo6#k^N_>GAA<5J@Lj~Lh#fyNGfPrs<*v|5NQa2ODsVy<+*)!y42MZ30b%Jus7PUU2 z=Uxf;v7M*tq)AZ}=f3eJuYc*YcK`Ol&cs;l6U&-D<-gb1aM>G!Ybvv39S=Srh+^ciMN|a`lPJ7H<9RL+$YqRZ;qeiGlDC>4RzuUO^g=b!vEtwo&G*R}7#CI(WtHh2!CBw4X zci%(*{ndXt>1i3~_SOwQRN60tZd2~VdL4pLTs@{UhSbJ{~B z6Y_;NvMYXQMh)?^$X4?okzD0hhFVFPMhg(^|21-(>{M`Va1;3>I35+^IWZQcxdE?C z5c47pL4~{ekND&5EoJEx*FaG3QA$Um=V=%#>`hA(bfJ~ZzO+0dBDF-zeB*JH$d3?^ z2d@JO;ScfUc#hrO{Mi96xs%et0ETgtkG!E%^+?rf?~{q^c)c^M3A1L4v-%=Jrm{2) zLx2*eB7|T?VHD7c{hIrqktC3f6;?%)CvPiC?Xf>ux3B^_1w_UMg;~8Oo!ec~17qbI}ES_Y_5n>W@vP9w5nA?PGrkt5b&xRmL z@%DP{m%sup(7||;suP*JnNBDnEE;dQMXVdERN_*kt*K{}MOsi)+d{P|CO2W53sF+p zexPCZmV+OSA+e`LvWD0-f?X}s1skSyUuwyS1f^Jz=)dqUKp?LqT24u_Nhqeg7HS+t z;TrnF*k*&Niutj@5_%{dH~7*C?==Figt4oz%oDqJuOj03$tDtD7?zm)P3erLOF#YY zb;~EW{qfO!V#L*lVaV5ebG6C<6w zZvXs-CG)oa;j#9duBj@w6V9)m5(YJ4(eUuh?_FFgC5X3^-_;yJ_VQe`ReT1qK8_Ld}NWe?o<$8Y|} zN6vZiY5kd*mhYeKNhYP^jN}_6(F+kv0AvNy;&`0c7uuTnR}KG7Y{N390S~3!p@N6! zl|e4oF+A^*a8p8h8L)Xd9mp2VV59|>GMGUzG;U;h$SzJ##p^``l!GoV)*v*X3ndsa zK_s0_2#{c;2Bl(*=8Pw$vDnV(tDy@r@Ec6lo1Xt{Vo_&Kkquo-9#kuM&v0>=4SE~{ zXE2or{1DTL!&XAAe5S&oUP?$~h$?GeR^`W5mLv~eK-B_+R7T~_0%Ojs}CX3u@QItQ?ujMxrLwm)@l;OEftlM^t z!LwUrwF-VoxEsShh#sqzQmAtrROAzK|BD=V+ai12}wGNI(G<+U2L z5S2mrv#vDALzE@Z%zY#P_nyWms>Ec`NeY1SLjWQC18@)rz}^n@0Kp?O4-LZ?e=DAa z)Qsl@Zk6LLYXvq0?Tr=5n{X8+=Bov?G^;jO;0@i*&T_hCJkU8Q5Ng)BI12(fN(Pv%s zTrHe4e)D%PTbQcdkL>7-jaD_Sgw&2j_}o&GWaY3((sb&iW4`pYTc3Z;j6}oQRK(X9$5^7x z_!|~AXC%Mr#w(6mFuG;qmXV2($`oETiFEs#$Sf)QgXQa1-Ts@0|K{9}4=bByslT3A zE@Qc4g}Y@Yf(CKSBhLw}#TYFbJO%&~Hzr9f zCECYj@EEB;rUf6c@O=cQ6rD)AokKI|p{C9cTH*neWiEbZo^kM2KkC{5Z%LQsm0oW2@gj+D{}!vd2`fnwcfBE{$qThg4j zWXrX&(Ig6<9sE;!eURO9kUHzDycF02Xs*PQ?76XTOlmoF{6)=qZmamLWO)Nm5(5&; zQ*(wu%QeXI=}UMpW-I~O0A0L7ptwwk(>da}l~4^XI1wo-kt{!r1PDw5G}MI&XDCmH z%Tr9fFh*#lD4Dpbgj1;o&*a^YX0TPDJOO`Lfq}O?Etm)zP~-;1aR6V?gzL*)ph~zOU4S=y#8gmmCmuWn6w5jGq!{+6Cg=b3hhJJ$ z7YDXJk-crY^&-EYuw(S(kOS;wdNndduNwyzu;we(K-%PY?5M$ANlTv!@0Y zM=kOvEV9W=YgANMV&yr*znn?+;g;aNIZVy!ZSIKE-1+UV{^@Axdh#P!wgJw|4K| zf7+RE|3h!EX#LdS@DYDZl!eoB6&1BIdAECT^Y)3_{`98L9!RiudmxR`b@b9L)6n_B<^bXBrvqt zwJK;!r1iLomRr?W*jF$Bnkp|zs^ph%+F7hO;jmjv(?J^^6lMET7pWp*5otRmEFz@V zA_bv1;kuYCzKFOM8^$IRDEHCfy21Ndp*0vVi9H&bziN$(U|W{EliQ?|rGuHC{|=RL zCL96jkQG+q+x+SaR>e@rAc;~=Kr741EQK^1k63dg9U^(*gktYtv$D#fuw#HnWqG-e zA=Gbz_0q@QHH)AGj^+_l z8R?|vLOjZQU~`%PeL#Z0l^meOEiD+h4YG$|#L-!Vz<{t{KZ5WdVP2+qN#7O@o(MAjnebFl56Q_j8 zM{6vH;tNPXA=0FzY7Fr?^pbC#I`ocFuiMSUZGZu>}pu}oOM{(MS zH_hmfOQBn8NZJ?6f8*tyLkIS3-rJoRtNkgihV6-5dzu(M z?DglZTs(2q+JCz88_#;-dH?5YH)pA8wK^{6Q8qrero$Z)t~i&iJg^vLg{OrCjuX6V zcwSW1U|0-_;n4Ttv)CpV?ZfeNoy3j>56c-LAWXo1)?pGrE7kRIuw?GU_iwst=~%Y& zkv*d$<36U-vs}7W#gW4+p0xfe-}=e<@4YN-wH!2%_1lE@+-Q}W%68iALx+yM;6?A+ zd}y$8-Ln4SzU!c@QZ|Q#wwT%WNNex5-Q8M$|Ax!gOf4#ky46a_yb{;!-DX*P|H0m? zUiZPr_8wZWcI9yTNSe@I05BUj?RB2Fx8C>A1?QdfkMDo;a8T%kvRZK_Lb2Cmy^ipU zR}^)GTL_57*Li&cx{GdxZDTMkco?fRa8L-J#DRWFs2i!`jdo-Jd>#ZcU;t5GSLKmJ zizw`x#f&V_lVHYLWU1*23<=00`Y-sCISq0wiNq>a!JIXo59^geKzzKSV+t&y0`iCvo3)ha6HlpR9(h|9qX~Os`AD#2R3^x< z`5_sWV%%j4z)Ty;9?U^t7jF{=Yb)f_D$3EtX{x|&x$RESmjpzNmVh<53nc|PPzZx# zq6sgmLgLV}@@b#R=g30Sb|$Ks<`pD%H7M^3!eE5tRrtJ}6;*lcF{^&^<1bG3`+FbT z)|oTv&LB|S(^L74Dh){TKf0ruYBvtMYcomCgBD8K1~dRpa&B*^Zr0JoP!}JzkVck6vC(_j6woAKbft z=aXJ6m=vLO6Da+Ts>BILtylwK>mF3Jd5ik=b z-W{Hsjf`&n?SpT4<@2ui_}lBM@`d&~Btx0%TY+XgG>nZ>b-<>;7sT3Fj@Cj?LD4k4 z2An+Sts!RNIe`@*THw_P?t;&6+F3J+W(tZA<Nya{s<4V?9(*+fVJNmH{xuif)L|v@PxL>-) z%m%H}D3_!Y=g16LU5r#efWh*p5QZq}kEy}5HER()dxB>XcBA2{G-B<*HMGDb_$}~S zi>UmBCeaKCFwvVh#6cE0c)md86~KgjlEim}9ohyK=G_|+eD<|x zxQ6gVcu1)~(ZsI@!{NFWOMmo(&p+oS@7ngjBU9^-DrN=_oHMUV)Qs8M%(XVO?r@NW zbLT9Xzi;oMx4h$$xeMmM=FF!*^Epp>)mf*FbaIRB3LF>7o-*$AtbtaXeypvz4WJj=^sm}Z)fm{B!Ni9|udiUX7>azd1MkeLZ)XDZix zy{PJyOBdaK+von`^z$EkWarYOmKDGmpIQ`@{lS{2o^;8T*X5ngzx?C5!(pK^ zS4mgYRXcC*-GAuxv);9}S1;SJs(0Y9V_|Nfx+Yhp8#bZ3qxs&=+eb}(`*$usYUPr0 zI7su1&IllDZSGTA^_Fu#@x%KbS#{zuy_xAG@yoP+{MI*xSE(K8v>*M=1FwG3X*xDY>V$Y8-)K$&=M_y7kvHiLbkMu<=I zL~g)_Z33DR)M6eWP+VAnC`Il;xKc2LSr|(3zc}-R!W2;(e>+7u#QO5dtFO%_x~_8E z)P6%4nLn35ggZ5F=Gx+9gJ3&!!w?ftW*hV}m=+cJ+TbJD<7n)r5O2h8--c`QEJIE_ zFwMFx3`_G}624#9#5CPPa>efWsBr365D^DC| zUo#z`Ib=Jd?^r;Dk{l+FRKpz-TG01=2?#HHfEvZ$V}&+?m`VU9kV>URIuMWs7P2u0 zS@>)|Jc17+U41}V6f2i6`1$Rhd)?oB{73ivZs|!I(%M$VF!2XZd0Eow&8~TlDVl%P z=)Cc{&p2uN$jp~+`q@{myYpio9~oJ&;Dl4w{l#e~o^srphI4dAI;~FLc;yDXT$ZCU zMOhB|eN$EYkMw_e|ARN&`m0AD+Ol*1!RcPzcyV{2Z@w17TFkVV6?zAfeLp)hIeE=86R*v(11j1IaGr?gJ4btZo&pce--TJqZw{&yqH|G z`r^-B`?qg8bFAAjb=0VU{VvSNec7Vn9L zMdr-p4uxF8mTe%1%8ILHnrM7fsj(?SYZi+|d=02){l^uVWXp&Y;(Px`0taUe@Ba@D z(rQvJ;5GG{@?c%os@-n?=3zi_IP4D%0k8#1Ld?ILyW~zSa8TZQ=}%K z2;!A!7DUmtAcnQPSwbV>7A5&q1XYw%piGZfXnId0($1hTJfeVz7$J#Dvd)beC>&mISVG{PmFeTQq=WKVGbSc9Xxcn!M4Ph#ygvKH=jE(v1)3v-Ddo{Lms((=Xt=ko?u?G@-?V*VSloHrRqIwQ9Sr(;EA#JqgmruJ+=|Hu zK6K?5zxusZPd%|JhnizMR1qY$tjf6)j1l8hA;GQ4_p*hmz)T>};I?5{LEI{39VcK5L4e|D7dc39i_q{v2#0WG;TF6s z<=!_4)_iKi3QYzi(Vf_a(GbV~!AETS{D(hzS#ygwdMx9%ck;c7(-9K-MI|>%1E=oa zF$%aB;#G-PVj1)Kn&fmO@&ulN9|bS0_3SyqWI}G7FyMz43=g3laUaPUkc^c~a5OmH zb&JfbM;(d8lBzP@IU`%PZhP;CzVO9M-&56<-%Bkv#7>TVwJ$-jeEdlg+_40VT69G- z8KAN^_RhS(8HG$TR>52qy~^PxmVj7PS~49pr=FYwB;RX3957hUF&OkWA8JLuTs=(!g3Iafw z&0uvw!Pm3z5uSp13jSMiWJtM-b>UbfN=%YSHQ$7cz@T@PlBwq86at3k;u*+{3!v!G+N+Y8|vlIDs&yYwgNHqg=xOto6(71rrCWCGTefbh`EETJIDDq_hDmmo3YnT1y?L{0Y-=P- z#}>^?mMltKck{+gR#j0}MZI(1k;GPs>*ANRyXoRNi*=TzZMP#fv2Gn;SPuJDO?e~| z@Vo^J$0kPKd*NsEcJ}r+pFJ21bJvQ>2I&}hF$)|<)CCu$X6HV2*vsV)w99-7XU+1- z+itw#g=f8I(__1qu3A*gxD(a=*Auu~Q`N)O&pP#kAO75&xg&3R-5Jk*!TH#P|yYE@NbyW9TQC%*FOtG_+< zj8mFna1sTi$nE;A>hX!OO%H85YT=xlzxA2XcB`lgm(ym)hh6sWhwB8A0MU`5u!KlY zD5D$F&xt0c83{3bKT%2$308#4Ar&2EqBOeWQWjFN4*|pxb_C-K_yX+|Wc55gA(8g=1#`8s0C*)nka%bhRbT~9XT$Th1aO<*getFIDDDh5wQt2Pm@*e?S;=FdzDWh1*%)#Si6{v8p(GOlG3R*r2_x z`GKc1QV9gq#6xOAG>g_o{A<7w3p)YE;{-B=$UbB~s2U8;gF_VmY0^aBc`LDl;qaAb zJ^Q|&f9Vy^Ic3|ue>}WrUu$BHP7`A)P5cQ7a^4f;&UtkssEewc=?!LjWjRQ6-O6=$ zA|GEcKC*CbcXDpNU_2Y|r0vX|^3fYq{a!gJnhSMWx%Yvt1m2%8WXodE;NP-S*T3U^ zm;L+yy|vS67p|3%)e?WBQ-K(uVrCgKc+>(2A{6kTjH;7P!+WZ_T)leg=9{lvX?y#( zJ<%N-QO2ZN^SSHpQb}TTQJ2gAZ2d)_`j3^*Ja>ml79YE!bjuvggV6p|P3<(ANG2ca z9NxTZPF>%1`{y}1ibwe^PzWl#FeCah)Pd~*LL*I^3bH}hoAKdzQ zH99`_#ACbHc9J`8zI?%)k%o=6904-e60ec?^Cr&Q2ssC#*slwmDZsEnxJ)b?CE~Gr z2vG#SXz>T5og_s09Zra&zn6G#3AM;>Bu%aYCn3`p#r8u$OL>|#4MS%#rJ}^1-YOE@#*qo)ajHb&CpsND1M^laT3eI(=zf%u4o9O*-82T8^uTbKyET`8d)_X zluc4(=tdl#m_JKI0`p@LUW$=$_CyIw2@}Ew9L8)#Jw%DD5DXdsTOMvm4<+g*zuI7b zP(n`4OEygNURK4)A_fh^t5IC_uW+}p6ajmQB2;)t0fuOdFtCsk?|$&sAJ=^uTO#SJ&gvlcj}6Id}Ewny4meEzx%KlE=ao_dn4 zhd#GJGe-RiT^?n0bY#b-opY=HZQs3Y>AbnkTqGRwCxk%cUUdlb#4Z#S4J&s3uvE=U zYMLQO0UO}7sBa8j$H^I@&2n*g4h%slFnNIo_7q|cR>DHqF7pdoJ@DMu56%EG5!VWc ziQzM!Oc9^rsn(b%y8*u9a_mbr9`tNgmNYk2?mgsC)SKo@qkEXT1kGH-z7X? z3o{6hIfJ73`qqk*Rq#?WlLABrUN_(m1*(d{&Oe#P?1imu-1;hz0rwVl(f6BK+1?W* z4_)0{6Cu>Cc5A_!sh7R(!*~4rzJ}RXe$SZXy_whW(=au}767gnX56GznNS)pqSQ$3 z1Zi0ihcL}LB;c%kl>d(07joc=1uHC6j)-GNCSj>XGKB+g1CORfoq}W2BHB2=gy^1IccUhOnpMFa)(hG&Aat|BNCougB>{N z3@RBxa)m(~p~K?gl;WMZyc!2HX7UAvQviXmhR6aV!ICU^vn3H6(l{*wVuOPH!dQg4 zz*xzeV|@*V{aj6P$gai9a&Y6+2q$ z3gG#>?{Gy&a3)&5?myr2`;B?KQ=nA+4O>1ml;`HjC-osW0-ZGB>NSp4Xw%TG9F%59c$8!anpo7}*B zRoIcy(X0ObrgvZTxv6KITGy4wG6(&J<9}V5I_tLg?%cn?7Ps7R<;oRHhQ+{_cH5}e zH91u!79xaIu|o@qDj^%pv}9+tW>W+Ok1_?p+X)m&mj>|$0gNm%=3*sS@Pw*s90cWG z=6T?=2o>w3MU0Idy>dm)!l*E}aP0p7fpHScW?uyt4XfATsuEKLY!K7uF#`xS+T3Y* zdQz=W6`Lq7#MA;?N~1(igE#@AFhl`{pV-B`#X31dext;H!}mDaHKGd z=g9~U6DH)5(pVi7G-h5Fs-whpLqn7Tj}^KmE{sPSoR|Y-!%jj6ugyrQ`RF##5y`OQ zlVav%|IJjO2~L^uL_R;=2Rn&EKF{mt*CbZC{3MoG_K4N?%cw$O2~4m!A( z2%@r(i)D0V{0wPBUj-22)36Ll;LJv6!Lv{gxWA234q7aM|rf^Lj zzyuEEs+4GomU2iLgMx^vW5N_0jfF?xDFcIGJ0Ky^ zSfpIN0tF|)(+j_1d6mzXp=D`9&xf5>_RhDx?Cv|haPddZUD`^w{Ni6LHo5=+AOJ~3 zK~y*UcRbNhi)^H2+qp?RNv|rG*w7j$`*NEQmOZkyR*u7<_&woMOttT>&4t|BZ9=5| zuhp;|pEF)gOup(>A9!T**1R)P`u(lEP80kM2lrMeT;v#e`??2S(=Cx-U{&*2@oF3CnU3;T4GO5Z{sMvhGy?5KrR#n|~<7baq zy=*WXrmmL4H{@`~O6t0<+nxMN*W7Z!dp|Sv^bKx|t`x@ATh#s->*kpoux#b|!F>nD zjvTo0o1a;K^pvlGl>>xm;GymgwA;d1MLEdU7^6hBtpqm^kb%R+Dirt*g}afqfvu5v zCF?2;Mp@ZJ_h0~Gg_7$gSCkQ7~nI0dhh?qmcz6jvp>JbmLnm z;7{V!c`$}|F6i(W!q|h;*E+UwmZW#kDP9ty-;-Gs0*|Mny|N1Y zQQ>NeHkq(oB2L4)!k$eBt(iqSB!8wAJRSQ-N%1Ms3JXIb4JA}DwkXQxd!0Q0>b2j0 z+Oytz&!gMcJn6WqU(z}EM8`PZCbE_w)$IT%^_A70&e5JRC|XF-%Hu^#XQ-c$(hO(@ z2sN2A{;Gm(L{7j0?dI z5Ef1+Pyuns7WJVvnoA2R6s7&FVx$S60sIW?h`cL{)~h=!4v^M{sg^H>3=l6=OQDd( z`3cC>h13sU6x;-p#P9G&M90tpCN_S^fSVTK;T!Mg{G4f`>dCp|@B4>W-+jwf-~GmC zPMumZcy!CwdmrArV^8yL)@dhW-6YR^X2Kl~Y5WQa&4;Cv6fDnn;?FjzeWNa8YULVY zX64S2SE%q*B4_{c1Rk27!Pf`)V+6f-CV#<_Ns6j$OmXp( zj{oLuzk2Em-uCtD?@Y5+o@I@KR*qv+k&8eEQ&+(jiHQJiq<&Th-x+>z7K)Cf;4g}E zql`pQq9G{1<{fS&w38z zD`WZ!4^3~?Ja`;&63bo395&3AmPhw5^05&@#i*J@@_1yBT45_0+@Gktp4Hiw8H~XU zS%rQCq78x^kh7AkA)}B+)K78=4j4t^6og1wy^u+sJZ}x$ky!bj*jhm~b*T9buG||^ zXrdaPg{(#4N^&rZkUY(Bok;4AiG!vnMT6R4+@y?T(4;90va?hgl2q*8052Nf@;pl* z9Yot=Z4)^q_l~ikV=A!JQ1H$|M;WnJ;wp?R(J7(NHbhBEO4OLO zS(+JJ_jZDCP)Wqnmywy0-ywmEm^G-MGbn{L-8yy{OUaOO|H#6L`b@%j4FU@jYIn#Aq zg~6qP!gP3KFu7{UW7E~kUVY(_e!s!Ns;+!f1mv9|enhSKj{*aN z#&p~HHQ)Z>o8R%Nr6(WbN^M=eMQEGsVcMj5RtyHcO^^Qj=RfeAXPq<{4)Tl-nh9FQ zIX+PY%Q+*VlRUEooL0aM=3{}6$oA3KuoX18VI_JOIVfgrEYK*_4+R_==}fUqb~R2Q z050%qIBnK^8WI^?loPZv;E?{)Fja6V86MldCxk+vsdcaC9f?8?R6`pS5*pADC8j3m ztmUy83lx`Mi1XBf^*k6b0eU`-&&+lq7SI8V3m*g9_A$SM3xDD>5?c)Ax}rN%`Zu~9b`7Ci{Xk5M;+>PU-y=Oe(`Jm*ImE3-&t(Kysd4Bh(X5O z0!Jc3hQB7fTY*m}(Se)EN3hx_^h8Ti*Uy^IoP-+)AK~as{BOb&f{;)_F%{H_zMe#Y z4|2rk!ZMQb7s=&9mjczWQOctUq{^ylOf<{$UQzz*m#;tNx&QEm>wdWMDJOTv$A`UM z>WthUF>5t1(|RT3w!D5Q#?UeX({glZu%Rh6l^8{es6|Z>o{9!4Mt}qogRc_N@l^O# zYX~AFy00i;@l}S4R$}8@5la=UXnFE z0vsEvJ+#C};BX2i#oxwlVBt!Mydh!vF#g4(xWA@4Nn5&Zh;mVxBsqTV@=t!~t%b3F zcxdzHN4DJgs|RlS!Eg3#-D*wMuZ&yWXt$GgC&?2kXLVxBvL+@nRpt8E42!%jyDgoy zM|IYE`qNK*_<_gvZr!2U=`qXh|NY}xVi9T9@&+?>Sr*TD^6}Sy^WxW>_sPMa=;SSb@)2npAFoQG zbAuh7@sWd@pBSy`+i$vT-I`@pUFPjvxi9eamu21QcK`dt+U)=1qhGq}1Ft;mxr4!=;Zla#0x!t6L3T)15E_vA z`CN;}#&21G^OiYlw^y#}z!QyR``q$Dm)WX2mD)+HsZ*3Q&%R=5qD%>=i}{t?&4%t#tyi8b+CzQBnq z6=l$x(_aXw@o6W<1Pil)UbqVw9RLzv0UwGcM}=@tG4wIpfQI-t(e}Z5hvr;cqB&Pm zE6$rRM0tx#{Vs^2KO7w&nRD97cl_?LAHV9N)1Uv;fBMi{PF}aFm1R|<#C6?DU8j8k z3an@0_GF2cv5^!sl#$6pxL=KuRf2H*~n*c{~A};9&nX(fWU~f-ZbXzDrDP@rQ6ofn6G^OmM>iO_1|yWz3`}& zD^@P9W_nJ%zBo(K8k43=N;(8~;3qIiL*T$iz*y;5#C9jdn7-=`o1V|=nBy}hkc&ao zPa$$xI^twllwqQ}6B?gk4q}z~v~UA)>Aas+1>S}kll@Ezz7Oej&F&AY_6jz}>c=EY zW4A1|&7q4@8wv8A(kfWXRjrl8tb0B4dSbw?q6CR>MWxVBLPtJ9z;iYVfRacW2!rA2 zkk(z zCe)qr=X{Y>B7PIRfti`fj11-=D9A5 zVUpNW)~`DG*wrsR`_C`=a9s}j8z0?%_XCgr{=sc~w(hEWePv3wI8wWciljZ_x_4>S zo-@8=*|N237d`ESwa2Yqn&<6Kr~T;my{Dh^?tMG=&R?;3*c+yrb6^~_Cu!9yR-AnF zPk!^@i(mPHo38y-;<|Sm_otr`agZ|Kq%%zjX9D*S2*Wf;aOG#Wxk%;1y0uFdjoS5i_O8btNOCF8JQT_{rHZ#gW|3`{&nq&$zf6Ct<)Xd!l_YJ*N$Y|`s3fe z4!M=+m;8kIgUOT0s-ltSbcw=F12Z!+$Jbz9<}sW(VR&ZIQ%KoD>fH4=rYJ zeUm`v6YTFzNTFPT7dHnobh3-( zIo)paJ$FP=Rl5~WSFe{SDxlPWvRTR0NMWUPjGj?rMT-QE;urDDG7Hk%N{hIt?UZGW z!GA;~*as&`B6FabtR*%=PAn5jh%IzY`5qWdV_c7*#O;&IoW&*^H*Npktv~R_rOiHSS_^i|MQ3Vp{1X)Dvw&e=;r^v z^!ew!`@qh9bCyk(N2XKP&znBRomHm~9bR+lvA6%?cYpnN|8nhDK5X3fmf8WQKj%yv zo(CM96#!b1=S?`drQur`kQ5hJ)m81zE_veMbD#V7TWqp$&C;qrP?j1JQLO9`%GPyv ze02AgopW@0^9`3aBx5ibG~}Qe4sys12dWxz{P>>V|J9rRvAt~Z*jT$56sg-pqiURN z(U3QrHKWS5-}}2y{PTGiocrgc6|ddZ!?eel*d{O0K!rp|oHbN>E~XHU+b$TD}$;h;}D z#9DN?y!YK+dbO@ox2={3%BYR7)XoaSbOdp{5k(|VDIpdnr_GUH3kqxy$1CJc6sJg( zXf*tWAscXWm12$<;uWt5xkGcxs&2;K&RhQIAvY7>{o${!x#oL!{OsPn2c{>FUbT8^ zvWX~${Xt3?>Q22iR2@pT(EKIu=B{mFRVQhknp9G&mTK;7BI{3S-`J~CPR6(R0$rB>{$!GGTZap2NEGJ%yby$2#|$2 zLSUGCs@Cus-5?ZBHpwPjB*v6KTgocQu_Bejgb|bBV^;r!hICp>nmxo9)X|7tuQ(Qs zglwd*DkSlm=WG~0>57ZxNyI+aX#*t+1@JUAsn(oWV$RlFWLOr*tyz5Qw=RC(i{9Q- zc5LaQqBn4TIQ(V&F{(;uX>p{t>dD7_^R}N|@S!WO{P+cRS!=iT&NbkRI2VMbLav5& z)Usmm>oR|?1E_)H zUAA~Q9JHwLlXO5QRbA(K{@Vv1`>Qv9L@$~@GCorD3!SDc5SwtBLaN$nd&@n){^*5o zz33laJLnJcyk#jF>ZdTAAQ-!t6Zs;h@1-OM@uw&MwWuP`ZLI{YE<8YyrrLIBRC&mnq%U>-q>CRpIJ7f901#`<@ z;T$Bds%dpow+dA&neFGlOe_n!M9_{O5nX;BBw_$ot+{ z7Q?I|E5deJe{d)!17=8mDdvMD8v`T`XKT<_FT~5tAc^k=FV7aM<)X9n)Z06^R0&cO zZ9-y`qjJT_2?bVg$DCZ^`DZgyusf|mi&aQh>6(< zfGY|Gl|RoDhuJ8^6#-I+*efOE-cmJug11?&95)^~eE2PYdHUUV{ObM(A76dKvDL8O z#N7!;CiKvbn0fux<)Cc-H*ewG`IGa8MRE7W$8Z1ZkIq}X;Ou9geAK$Bm!I>Tla5}2 zY1KtpxMYC!Cl9Mv8-I4Cs;np z(T0`D;76oUP-Y{fKZ@XC<6_Wd_MbCLH~%b zN$khSg)u?v0F8W0?rE+W<^)7EPW_RgiFykqR`PkNZ6jrud<3K%67l4==~ue1%!KvO z%h;l*)(c5d_J11dm~etP)t$#8#8aM?WCIqguqwb4NPrqAX3!cTWJG9ajWc$QHT@;I zC7|>*5iSA|Mtb)@f~PnJ;Ri{W#1KuPF)IlknT}!Gk)%QC8J&^05>*U~r=Gh0&YLbj z{p|Nln{;&1*swR$boLMz?YTI=>i3tPxZxi!{?EzD1%LC}Glzpg)@td<2WxhpHn7N` z6ZDsaGcVd@GTQC-ukQWh%U=1v4o%FToLW#E?z(I;_HMoCG1+BUL+wl z22)oE(-Rn}4IV-M$7al>#ES7jpwqVV*37;G>((y0{JmG4{e}n__~_tB z&n3e+ux$8!;{KsE(?nOkV{W6=3zjdQTsbwInf}I|_mtQFV6n8@ zh1sGTyx~C7Shr|tOV`6DcN^<-y2$i!xPSK(ySMMY?gziT^+)&a+rE3-fnhe*nY(1p zs#A_@JeU~_>vCB5(_~y7x|W2Y)>LNXO{h`9?&#>up~Ktm-T3;Koc7f(fAq@FU;DLh z-I=ajQWqsbR4r3$q)M4k-oUwPwyJPEDhJDvtF`>pNZ^uI!x%*`W+_w51pGI-eG$ZF znS7{V&^%8FdS<0IS>4!{<)dWcvTUXJi1`?c15aT@V6+vv8l1|cf;dPd8jmg!H0Wyv z9VgdC!^R}>P&jqt+b5BFg;GrZ7CR0GH4ecnN#9rj+3-myA``{9qn#Cb3+>gx3>lmJ zYFQGdjD4?!6ta3muVQ#s*pQ0-vIWALP-{+fBtjPLQ+I~H=W9rOodUW104fMCEo98W zskj@yqUJ`%b=JyN)H_Wko#1cFHlgU4O|7&wh`}myeEhin8QjhchA0FpaL~A9w8EzvGh0 z`E$=c<1}~pQ#%8c3K3%son>w;C)deCxf9yUcDwWAU;O6PfBC`Q9v-aIWrnYnqj4Vg@wJI>TZa;#dsTr%sLB#) zP-~xup$j((m+s$tpgYpO=^K}P{)^xG*ri|FtId-2Yg3g}#n4dSSw0ia8-qWKjk-Kk z!?IRYn&-=pTG3p(H>@7nfB36K`OpYSVAn)Jz)~Ia#PJ8stV=dp$HNNhRJL`Uwc1K^Jyybxz^Ew)E|jJ=ipcY zXnkm=_w%1T@W`WEpV)Kg<{$m`p5Jd))l4!nlFgYvclpxQt8-_vbzKbyYT%kQTjh7U zaUR$QjxI{l-h`c{x7sb0v^M|ok;zu_mCwHOEw6iVbA{=$@Fhep0m6=)wZSK4B&;Bt zFsun0)Jcp4@uU_k;L>9*XO&PyqdJ);9kzxqg{28xSxAgHaA=(Z#baExVh@&s5@9V0 z){D=Ort`x9fT%K;_8E~VG$Lf#A4N}teE|L+css=_OH8KO3>COlCcajyASWSailcmR zA}*T^v@EhZqK+JWFr%~BmZz=8={WA=2IY(LT`SY$U-19{AOJ~3K~zV>YmtkJ=2Do3 zW{62-0z(``d^6%^Dv&Pr)JR^0p(_P(DT)t>UQmJqMg&yx^A{f|$J4^c<8p3Ab2%B6 ztx0x;z~1KtwMqPWp=pw32WO`5y!&^*e|Y!uMdL4e-jf#3pRZgcv{KS@)>q#^0u}>_ z-2raEs=&={MZck_LbTnhAqU6b5;DiH8qOWm?aX!OeA<(b{r0sVd*LhIr;p!|w^~(Q zCVs;eD)^iNrm3E{e$8uM|Is^saP`wqIi}wmv^uGT(VQw1tS0sFb7rt1qH_DwI=BA# zp4Y$OgL-oL{Dl+#$ks$7W;BK(P@Ru;w>`9J&E(kkzWJ$@OBR&wfHbNnYyjE#0}5=K zw+*bz#PY7&j1CA@U-8#hT37jlk*oKVI*aN-H>bkx+!;D1*nvy&w%hPOO;Gk>LiM zgfvC-qC!OcVU$s*1*JzNh7#3^@=}axVrCezFE`@2#s8D&RN0bhpfy;4J9Z~cV0^Bu zq{hg|=_zIxlCdTcCOSMR)@iL`I7nF3B3%xiWkV2ST}&6OiUS1zWx|X z*Tvu9Re(4?OHGm7**%E{{a`6$?VlX1Ckm42YrfIWohwy!`JT7G=B4L6`yc=LOW(NR zuFleBlPedQvbKX^Nigh&mt?+}fuN`H+-?-LDF#LJQf~F4`D3lAg$>vYj~u!G@f|6Ic!_BRN_E zdsjy7m&X$7O({Cd$euMI*UIR?29l|8=+e~vh8UIAk?H>Z8#mqg%Lo7Pz~&=+pV)u+ z;3L})_RB#!+L<#ly7ZW-Y^>vOuym!H4Hi)|7B{_V!!fKsk;nHNbO3WejK8{N{Ejwv zY<0snvOH6Hwrle)yJz=bzU+mUeC)g>lM4ahNEDV@Y0f;WMpq^_39(`SlOUT1i17nKH8-5Ium&)Cjl4<# zbTM-un0qvX*~oG&J5Y_ZDL6G(@(blwfooaRgWwKY1=GWE@DPE{I9`fYV zXpuPGn+zW|Ot2;n(05)_RshTjkC5zzU?eCSZVj+e5dta%^^!V{S(^Zq#k3*W8t6%s z4r0p0e-Ck*294pYreGla+tcl$5kAi}u7= zdGzuZoc*3(+wLi*e+c;F}FMH z5B#oOK1Z<${9LWPt<$m5?HeCGbi4_a4!5U9m>kEZMhKkc3>MUu z51W9k(0_iB05uwd3D(NDJaRDO0xM?~)dJRtD43mS7z5)Ij=)hIQjrn{lU4F9Aq85v zK|K4)h5$j_rV=87Vg_ZgSP!SnXXf>_f@qM{@n0fVF^nF-M}iA}<$3GXQ*%|wh>N|@F}RsYJLein{uqbp)6EuRJ~ zBk{}u^BDgiNr{>i&^Fo$Y#BK%WLCSI*P=AdK!=0j>Z!?VzWm|8`N_Q>`skN_{fpm^ zu2?*O*`l)fsj9@dP`)+{v|RX_ST03(N|m@Whr|8mhH0y{aB5MSE^RK{kn*j){)1b0 znFk)f{>C4DrseBJMmo!vE;xD3)UhiUuU)xxbnaL_(w;LuzHs5h#Q4Zaw>>^K+V*A9 zQ7Y^I?}tcAQP+D9&Fnik)6j>RnSL=nV+Q4cBQy6u^!R-nw{G0L=kS4PTh26}Ep28- z^X_P;(`_#}c16~1xyNukq$&?jbLN(~D@R0z_bnOhb8@;xL0+A<6O*x8!f)Y|Tt(Yik)=(<~(lQuO4Z4(TrfIc{smrQ<%XuHW<&IxZ9)E0StlK%R8MN|oBR=yB*HWDOUk3VoPcprV0vKwzjS0t~Z**DB%@iUM8U z+i8OWSa59PY9!kY>YaVYGyd(efB4(?U%BGclZ`5B?^5X`HR?)U^oQf~CrmLs^HuM= z^VZKFwQ_P;lu5!vxA27E=t!^Fx-zyQ88_bc(>J{JBYJ9e18u{C+H^9F^;HXQ9k-z} z+aGxN+3Qw){i`2eG>k6rXMfy>Rrv|&Q zK{Ws=!B7;VTAoh- z5h5RWMp;}ZNa8dD$==2zLIg{{rn73MnbBiEt2J2Kl=S{f4+Fhg2i(?oxI=gH&lZnZI5g2(lsA= z>s(RlmJir{))J29S4HQwEp?m(of><@Mw?rr+n{pB5fQ#j*xqaSH6 z7;VoT$wu4l@oqk+`C6yz);pTGA#JHv>cGs})K^`&#R_UuU%4v|o1e0GWV+gWWVq+h zktg=|Tv=slR8^{6cP9Q{&b~X~lA_ADs=E8$`^Aahhf z)^I6~`m8F0ZDCGANER?iTnw>MmdDx+C*c$}mWc8yk#V^Z^Wn5!oV;;T%);mfo+o%(DfwRG8|1k`6#@|yGdJ``Df2?S z&5JE35%vg-1a!djB6^D%oLVji0X*t)@vOSW#`r@foxiWKc1*h%Dv85_(hGAaDD%sP zM@SeNHsnMp47vUdzOqIdDG*``WPs-3lIwPgwrprBdkU)}$lj5$hu37|);z97#gUQy%xATt_IbBQ2g%Vsr>)aOy#}q``>%g*4+~qUH=Zl}7gJK32wf9}o~)}M6p$A5M6RSRZUP@rdheS1vpI_A0k%Xy_QRjb*& z=@)-^@9CE%%U1R^(_UV(_ET;J?jac(*!0NL|FG}MoBsO?(*~QpyjK~$=sWyAw#tf_ zBu!3u`-Qju`Kjfv*snJ}<}2(Olxcs|K$ys^zklsRPapq^y?=21C9bl4Dqv@0r4CSJ zN^A5-Q#B@l+!oI|6w}HK@i|cScA=^cw^qKL~;a9j$fS&B`ZKIu;+IIZXhy{4#vcJR1&eow{arb z^nsPSO2->w#7@dLB>m~I35bTIosy=aWHjXoJf5J+2@&3!r&x$po-JNTJcCB(e^#$f zg`5zUv6_XjzDSNq8)6?hO7=`;=!c;=En!XMtjH=F9*aM0$e$n7>3Cl7lz)2dNhiGO zwp;J{^0hy>|DoqLX34yzb6UegswneLx3qpMHJyM6bD`1kfDM2)DJ8I~IH&qwXtm($ zSSl%Pv>MI+=J4#9Ivh0Ucd+NVt1im(v7*>rA%tC>a@$1V6|4#hv_C<)^yq>bzS3~R zL>kXJrb)w?v}qb9&8lD1hL?=YPE%vEgim<2Hq@n*zRJ3^d8P2Zpy_-72~Va;JwHK* zy58_dFByDH_v?yN9t$B zT0XqDB=wb~1_uV=1QKc{=KrNjoLH=cKW5R^Q6l-D(1I|nXsC(8lW-FWvtgZyC<(W) z%t4@vHr|pH70S*2MGONz0kZ&KTX&soS9lw<$R}7p(B6(s0}~mV+W@gml37qnY?V?9 zbY_@A-r5Q^^%tfVYT;182$n$sbJdG3$ng-zz>p_gO~ev>$JD{ z(nnItFnk9)DR`_loopm^Ty`>U&eYr>xE(~Tyh;{Zd3d;T&|J7N|Flv|QwfYN^KSm} zbKkjb`<}0U`=%v_9?+ebO#Flr2n!W-&Qu@HTDS+n`wpZxAaXMC}_Vnr3D6?xZaYKqT#<;_Xy8vXqn9)0qtm+t+&|M=|m!DgQ4 zneTyNnM3kTL94s_!{Xoeo{N8R=YvZQ->2Wk!fNB0LxS8c~o4oE5+# zsRZZH&4OPw#PWv68Qw^a5F*`@9We};B&|~q*`#b~5$K_YS`D+CH50 zAgL^rZ$yz&K7!Pyq{k&;qO3ot(4TNnp%#rgrNktqEqrvPeP-4-|Mj#4%rCa$hcW>z zRdrz}S#>X)RBza5gtV-i=yZ3!u&KRe%gF56AAQ%c$Di=3*Br5bC~PY!bt{`BoQ2b^ zVvjPgF9DoEu%&gRRW+$$d;nL$Tbnt|CNlu4Q_w~XK?LkF7FN0@%jokh-dQ{}3wKz$ zc$^l+&_IuXE6_72BLN3Te&6E95MAhqWA`iSKtPI{l-0nBf(nZfz=Vk&DZUlt85*R0 zBAYhQh}nr-HX_0o&;)P{*ub;InyFMRz#-kIeVQn;jWLA`1X#oo*sqZ>Y#?xvQnI2# z38`3y9xY^T>3NzQlwZetD8(EM*26H<;~-^JaBP|0P+(HIYdGHCanuO}!k$K<8-5M3 z@nluM(lovIz9+V>+cdChdEV}rW~Nvgy$0z*5A^pvxMBOojXReun33m2!bTVOQ6N&V zJs75!(E_g)yc0Ls#g_#O0{PIo(JO(`;ui@PN>cw`AyX3=#G)v!yzIlfcJ8_1rr#}o z*@2Uz>^?Of6|cG?i6ZtMU9pPrYLA#XtD&=LZ{^?@*q29)lVM17K1`7nn)5 zQny;U5SEVNsMSPFOcX0*K})W9K+y{In;Fk>1WvzYs~JD;dKPYxN{Ub zxgBg^&9Y#fAzo}OBkSOll=>)uB=TOMb)DlTco0*KQfZ~=a6Qndp)EZLC6Asyu2INL zT*Zn8A>AOeij6u98jQ35fpt^pCcp$2 zc{p)JE=72xcp1XbJd+V>+?;|t5Rk%4!)8CcrAZsryOeq9uYUbM?0@tT2VDHolmBqf zqu>0mTc3RBiKk1~n$|yOWTZ9NmzTa|(w0Gb3`On!)(Ej_9{e;@;)dQk2^G)&J$xlo z!PbOMdiKbp`mFRP9TeeT9+Wc}aOBZ?)u*B5gdzmxXT~Q}d~0t*gH|t? zGqVzeyi-LszDs!$+VL?VV1!<#)$^;wWtv9hC=z#}oG#SO=;)6$>zLuFPY@*d04~WP zq6E5Ki-wu_Wc*?IPHYCE2?xM6HPMgsvjHA#XVfICkGAlk%PZVGF15P9ou9L5j zEt=HNiQf$8lpxAxONd$(I&)6!C7n{mAl?7QjPI0CSH*Klq1Or!q-IT(j$Rz}i-wo; zf5VQxx?*b-f&-oKHRR80bHZ8W$g2v3A~K5kW?(g;4SDG_9DEFmNWz>JmmLF~a3+A} zlLfTIvJRrpBCBL1bb-YSOc4ii)YO%SB(j(170$TsyT2MW&1ohrlfs7*j*H8}F&s9p zd}D+h{hv^}m1qk@LPfecv@n!?<2vff;LKFlmE{O9lp>fB4Ba9=Y## zue)TpVe($?&!b02c&&pmtfHc<@&2=}{N7D>tT^nT&e)jWHAf1~G96a5k!;&CcKqS1 z{_Uy@W=$I`i(X0_Oi;wm`WrUVSO`0UaSa9LPccD81PrMmar7)?@O(~iF_2iz(0n>5f0 zVzGo$lK>Vv-ClL=vL*AEESmrBw;uh(vzxyEqucJi_x|79`)seB_s<$^jm#Jr=<_Ea z^~$hUqjXg4YD>>ZgqzrKQn+VviCYYOWa(_;cYO2C?2t9EG_i1!o{I36)+gQxI9j&Q zp^t^81=NVdEIflIR7U3>qpa8Yffdp;AOMbFIQ^uQ)GoHt+APWX(%iaE-fQpJ)!x3P zH(D%Nw)kDIJLrIy9{7&8y>`xwp|Fa!JK6TWEiv${U>r3ClHx!@i;7a}`u*-R@?RY0 zC^;>TgpCcVAWQ&K$3j&vyN3D+$)$)F_kZP9d#au}a9|)sVjTCpaUwwYCFDi;Mf?uu z8Xah2_H#NWAvJ_P4$@Iz=(zhIt1buHT809(CxJ8uPM$Ga9Gn;s!ybjwDO3jvVxs;M zVwM0xXckF+Kqb}HHQF!^F9H|koGer{J&0J?K1EDGH)0}#v=}Fg$V5r11@=OapoY2D zD8v!hNt4DK9`M4LMi~{;U-CW(r)1nl0acL90KA4(!LB>Gp>vQm8%Jo9G@b0_4?gh7 z(8zFTP?w-lO;BX(l2$stwf*Y-mo1+^lJ|OK2iz3P8f_e}1V+nK%IQYMPE$oLS=KWy zqS6A^v6I1HNazyh9U*VSES>Wqg0K2iKmPt@uY1#Z_df8{q61fU_e@q0ile>|p;a=_ z>rO7)f6c%B_pgVB2LAQ3Guxd`vl(h`$}+dQ)ofh*?Vp}=@zt{rSX0>r+bjGrY!(Ya z*_g^K4z)Ji|JYlPIrKaKc1g>(H7o)$P`rUf2cFoUv6`K8;WhvH!(S~vbbsF>-6Wh^ z44@X7gKF66#LnFpeeApibLVtAlg&npdJ{wR$hu34Qi&9RRj4UEi>hH011tk~TPF@6 zS57Vf*QgA_95ztoZUOAkD%!v*L7V9-Xo?)=xDJ4glUNI6Ez}4m1mO|mC*f4s3gMZ^ zR)jd!0=p_DC%X##0m(xFoa00#I5J1wmzC6Ri~ehoNCmVLo?@^J;Ttw|3YwCGWe~67 zP@p6Nn`An4UHK8!$K`>cty?yB7V$%#IS1}V1OE9rGJs)X1-M4lfoqaM^X+K%2%ht1 zN~;nXycV9_%9F!7Wry~8|#}LowcV88p+m`7M9#>IY@*tjJtCxxplRD-xR0$%+ z2SE84&uC$wO2r4l@jPe}Zb7I4Q*hH@T2?wN!B*D5H`mA-rBe-U^KNh3jyS#aiQr@ZE{eOK(gboqigL9L6Nnu{2fHd9`3J4NON{o$NA$B0_1#E5kZU$e%- z5m;peiAR}3SWE|}#Lys!85a@8^>Y#Iij$F>v2M~PB;MUE!GPnC7vg6?pve5utcwRH zu+P2h$&MMO9iyw(Xq8E>RDvjaM-70lF=!f#r4ZZH)Bq|U!4OOctVY0jDILTt$prjO zaEaor{TjF}LVS(nXLvWbZzbplh6&5Vfpm=nrnPo5Kv-u~k}5gsN4t0|157OYc(wsB zj)>%eUO`-kh|lmmW2qua(~%DbZ6<)DCKGgyOdS<8q?zo7E` zF9S43s=@|1Qt1fV0FF`Xf`w#!=%Q31%JddBEp6FqCb$3Ms#hI##)A((KYyR)z3~Z^ zBy5}MG!Umcz4o$K9C*dGKb|&Y_>RPpxaRtwRL?5f zy}%W7?X!wIO#LF;yqvvY_VI83#H~O2;>!+tNw?F^vIbZDD*$bf}?n!@&Cr~)yiO&7mQ)YS+x zG?u}Gb;>W$Q0R~?acB-umE%jpF3e#}Ef>!tgwJb2%|{?}WM?)AEV zzW4DT|KjfFpMCzRXV*Rb&_-)*I@CWneW*3ipEa{2oB&c8pQ0#zGQ^g&kB#g`D44dC zbqx6z%6M3@$LzkO99}yFHOzidd_|pwIBc-Y7zF+H(+MiUa|_k8lFS!f4`D0c5akMBNM|1UTNQh+`?KDNawIZ%uFI-e4pREGg?|%|OsU<5O85gKN>e zKMQF;@%&+xK!k&Dr@M$X;ZP)omMl&1(b41s8^8!f21hXn(6uxJ*?1xNoVZ%eW<&`} zPLW5z2g-@ivob?16+|qWHc=l9*Ugp$FQH&e!Vfe}S40~UDIrv{F|^aHC-Ph`9` z@^p9qwf8(Nlk7kO}+6C{;#Kh3Rz?ZMR z@#4?^`^f&QE7RigBAjYQU1vQPR{9O7F74}Eci$7Ip7`4T{Q8C3RhBSM1F+E4n8`;& zesUUF_K7e2=NG>Dy#>3BDsK zS8AjycOZ5FsVN03K{u1vj6e-s@QeJ2intF`%W^BA&_%r9|mGvXpU9L@4vVr88eBo%(b72gzJ(`q}z-a~48h1?*ri9sH50jiNE&YE7~ z8IH_85eHUZ->`l6efK}TZT-f_o?83!zdZKzv+FCs?vkWzG*zq7Xf+2a zHEw2Eni=oDRY4BfyL;ct&XvY;?B&qOHk8Z*Ogq}I=;YmOsd)YjFPfj>3JDOu;mdY> zV;r9tF`@s~Si9Sq=oX!x>U1(|d!-thHSHf>w)ZO!UbSTYjFqdFzij_i;c&zNQC!%c zQdvm9m!(A~hlh+dTm5LnqWH+d_*YbH@hnHCzD`CV{EiYuSy?5bWO&=ui=@pjigkjD z#UluT0kbKaO%O1K2U%+EqMh*Z6tBu<^}QHT_QS!9B2IN0jf@Z*6f`Vgjb{hxqBUVp zs&N%~OL;Eb?3;KgZroy;EsUiv!d0C;u23vibxTue|q z{H{rEF|%}24a3bI(COIuG|VD4t1%KHye4+VDAYJIsH7t;H1>wr$W&<_F;Ih$^ndC{j|ArTv=2CUmBe%>RjZ* z@I z1pFqH5KNdsa)N<1hJn99YjFjB4po2`)=?$NaysNmUi^#URtVcPC@~PiY+D3P!2h#^ zQnjxFT~U)c2J()MDkl~6NZ7HI)h1bxfrm?`{=TH`wuXsliKu%t3pQ(>#)^b_sGZCZ zAseFw1XPsZa4feDN4toxWFsD*D_kmyoSZyR<8#;mhx&{#Ys9ykP=OH`qEaBBi?55J zgGhd!hale5wMu2?J-Ph#MF$jV8(Q zZpM0qqOdzp5s{{~Brqa3f{INfl|jP@Vs+4{OlK>`wWlzh z=o^H4Xb6}R*Mmust1Na~!85@eizW2m@%!JiR9A*$@%)h=|KRfD{^?`mef@p?nd|w^ zojP;?u0osYy+T(DGiU!*=Ux6^ci#QTk8b(Hl0)|QwQv5Vli<%tgdFYnOj@ny{{GlU z-h1rTUp`kA9zB>)Zvi+N%u4A&#y7w7(@Q>g{lb?XSQceC-#!T`UQ*t0!U647hJK~~ zak`l3&0IKhm(s_);iJF*_1D&{THNdPjBjvGm`}WjQozs}F)*n)+$vI6aW=6~>?1hV zaBPjxs$Osjmja?gDdh$j_KOTE0A`Ivh9MBFqF&_SI7lGO6r85RPgp@Q-rCs&N^B>V z-(mGN4miS=KadqJ%1;*mg$}nlPu@KzJo@M@#7zv(q<)kPtUgEGC8XZuHjL=rr153k+ z1_o(VpcppY0E31SZo@;s>&szXPQ^FkH=v*MD2(Qg(#DXa5Loh?Ih%n(%KgbDx$oR# zRDUBK9GNvTN3UGI;Jt5s9f8dXXgslY(=+R~ZFz3PT#)$aC?6)eD`13(H^{}~Okfy)o*xCfLnZo1LO7sn z$APJVpLcv`hcH`5yT%hHfIx@yP2%2pt|xVXZScAnrjiO_C%#^z&Nbq%+H3J3wai5g z4JZ}qQn8QxAjTomQUsBJj*9^h1D(g}d9mZ}W$|9}O$7`9i={{`HO{c1E2T_`t(Rb% zIFU>dfP|`rzp&jFt;#grtO)(E|MlztQx4CpFnp1~jd7a+l_qIt&)CfQbN5-jmm*7y z!a0aJ`Y|FY?SzMMOvuVv(*PE>o(Yka6krx@mhk_K6p`_9m@3EqNH!DGY*iymn@OkJ zec1tfU;l5PJo%lMHrFhxLLyuCs=&&Mf6#t+d@E}vbJG8F``_j+TkQMvl#ZQ>q02lZ z@Q2O!54>>q182VbxUYTrU&vKQxjoJIHuKtN* zS}ip|GNHb#V5@Cq>nKM#D(#MUrZ1Q=Zq$))Jm*ihT(xG^l3r0{zMU9OR|ajT*_DNv zv+U%iY%8G(Yl|Eegho+7_vs<5>Iv3xpygXG;5s1zgr>Cxz>w zbWj{%6+X9x-pg@@1Cl_hj`NB&0z#2wGUzdEb5Y$HwXk9Z%UVk;hAg267<rW)B0v z;cHBukey?r#|6r;OdvRU&$f=@C=BKlo{U;7Y7M-k(61(X&Xq>2MVV5IomWGInm@3G*91MYsj}}Q5Q=_Cbq)r3# zJf-wSFrcm`#ylgozGw5c<63WdgN0eHdHP_$s@C6@u)0ZwkvkGW@ zH_3$dooepiRE1QzKW^&{}T0hFT{o?7wY8 z!8r9^wv1qWs2=)r@%>m;!B>jj)fc*^*5Oktu`-W3QraBRgrO(?A9Spszh~*2k~>Es zy)XYXiS9RgX!fu(GvPk8`v3ps5RJJq&)bueiUc6cb>h#b)>)bmMglL)M#mxUW}X6U zU(7V}G?BcD&nA|bx7$hrMP4E}pM(m=!}*prWZgMcX{jG*C^EOwIF9AQIp9n7b~WHf z$T14HULP%rN9Drv0@zK_V+zfh}CA*c>AInEQ5sEI10kJ;U=6(^B1PH*a(KP5DeIrEO(tjW@rLA7Do(cXXB|O zN`cix_X}2FhnZp}VSuK|zRH=$QCAfsf5qOLZMVM&r`ymNNOQH2%&1Mn7pV1?(j4Rj z$Rpjy#9XMF2nf%?Rs)WNUK?HF#BD3FH{mu(n2jPYZL8V*;SYcP_?F!(7tHCjbIk;j z<8#NIu~kH#cMm!IKz?7@AyT8$XaurBKj5+w6fzrFGOHqvVue_;>gb51l0Fl$VobsL zpPG8WZ81`3?P0_3OV5%{w|&ODj@!L^^b?m{xA5=-ZKoZe0fogTvOwL?5GTG@G>^$UEHM-NuXD^yPuFTQLfAkNxe`Dq1 zdEIWWks1^LkYHILc?8%BHY?5~=7#NFY_Gsh7~p__0?2jlZX+&~dd?Wd2dqd85w2zS zO#rXtnMHre2y>E1E73&7_Af4Y?U&$CCLg5<7?<}&XrqPGk_l(SgO?9)LhTkj>tvxy znhw#WeW`?!9orVBR>%c9*<7PIVwDs-O&;PAyn_?FjQT6bwvk+$(j1=~pe4w==Hnuq zQ|MCzrIF~6zhT&|(cGctPeluddE|Lv+o@}^65b^6jV0e-$yrZSXdtW>FPQZyC99&U zM#7pyU}ieBic>}lZ^dFOL1yAH5PK?BKWQc*%1~xI7kXkSW<*?qKWiZ6YE~1GKFKFXdtz?P%?`V#WLVW zwI=_@s|%y=P(O#x*c6R?`cqDk)Iuh}2*e5zos=|US-b1I64t;AdD`j6ttLUd6y4shUDMtU^m z2*}BWn@I&6KPo<0hYC53dNzseSZ2w@Gi0M%kx_8M|5yc}r!hGCl)2(U=`8SHznRq*2Y3 zD2{fRB1G+;Oe^;k03H^q0E7XrFmNwjf-990;i@ePOtVx63%=m>Qew2AoOLc%)eM0s z7f&WxJpL%g7+}k2H=_uIM+#|Jh>$lSOYi?}DZbQrO%8TE4mGGm1BOB&pG<&=K5S-v zfLMX>e~x{$2z0m~D+btj716hb)ayD-fl^9J139+f0l{NK@L)>>%d#H0g8SMY#ISpPFI_ zPK9C*$6!ojez{0nQ@%*XsK91m{4h(13pFN$-ko*|!zuF1^0$H?)3H}!^`B3yY9o_C z`*o3y)CoWcJc)$G2+m`4$=XjsC+g}HB_|jI5ei1e4i=SWfEgJ^qC)n?f$#`X zfpz_TeJ^a@{@tJdWn^Slkr#o+Gls31A7zs1u`N3ee8nMY=<~~R4Sa=w0h6YUVHEOSA`8q|h|PnWiQiIad5sw)MGK`A{wX#u%Wlupt-Wrq`qk}qi@eNI z-!bR&pZdUQ?>p|fKi*rJC8ZG?@bSAuDOJBGFyFp@O(*HPKRxj2i%$LgMei?if5fW^ z$&?_ME}XgK`;azT*{^>0*LQsI^47`~{R53~Djjz!w1JsQ!lE|%``7;c(bG&RIOtYh_0td-e+(wpUQ5o0lA8EBKI_ zrV(w%I!!+VY=Gq?$+hBLAcTTVG~5Vay|{RxBqdUzZiyuEPL`8o!$B^?AY4=_k_{ji zD|Z*)DR1P2=?XvOc9gh-VgwG4B>;v7zhl^6R4zXc9QLgARnaw zdO0izPho2;Xo>3pi5`Ig_Weaw%7nF zVxw41U440jNL$4$wQLLwPqERBY6RHqUEt@Ssv5J+STz8ZO9cBrD_!2v)*}3^;ybBMNBC?Krr;Y?FwemvGu34yT-b~UNeKG zrrrta!T6Rj8Dau5yZ&_}%}k7|2S*hUGG&11jYhM-zpvHT*Vo@){oZQ%J^0!tm2P%A zoo{^Qy!XHB^;_3(u7aCTCTBwmL=(ZHnZ@?TrwVk+#H_vj?_c`#2QR(weZ6jny|F)7 zF=R*m7ZO_*RgiSYU+#PRdoOJ*m^VDs@4C6~h(WN?*L#?dUMbB$-`WQrd&irO{MJ`L zUVXRSnOw1C-rcu;W4>}*p52-b_La_`-bCP%kdMhsXRJGW*@9hJ^6F#HetO-OR?9bk zH<}KkVk=KFNGcI+qM{8W0*WxdLWQw38gdbg<$y1+Mp1PTTY=GXN&rfX@x_v|+0@bP zDJ>#{r%8c`u9?2*;f1A8aA6w0JtV$ZGUzxfV?$0G`VGl9lwa`w$Z1Z{Tg>nPBy_Fp zxtAfTPjliiNVYXSQ-Mt|Tog*eqq(MsXFkN9#vpX0vlE;gF{ydpL8p=)i((VfLI#AE z7C&_nkil=z9ejucD8Lg->3ba`Y5o~kyhX+X(8mC@f$1mh4S5Bc=^$b3j`>yLu$+|G z$Qi(}<6`;fb2>>)NBkg=B_wI^rerIEuN6y5BFQCm1Uu*w6TVfF)KSvIAFby6<~YqZ zI?SUDC2$@QQ0pBoeV|F_O;zG|;51NG7R5!B%>Uo=-#GAsnN?hV0Ai4XXS@j90=a45 zSjJCmkt8bh$M$kAEEIPs8nUNx>XtIzo}S9Xjt15#FcoTwVpxS3HL&i=!9P&nI;Qg3 zk~@N*M5ik#O9)EYW)M<9@PYUs@}5p1C&^!CGZmRGT09BbIV}p`E#@fx(tKJCw1-y! zF%`PyfHwp51I7rimXgoX%=ti@ur#s8OhxC0Gi~6MHEW1CDJ?mPnv3HI&S;rHfh1ar z+c8_7IB`?n7o>vXC$Qc)42&EX<180TzcBA|D;gpuPGUoO?b>Oh%^1=|9fyh|zE6c3o6X6cV{?}*Ub%X46+MJb01RZr*dbbE zURIDmXW^*En}2)HU+#Xe zH`y+V${*X-wCOK-$;#Ki_MnmBVIS-i?)s}P{KGM4?VRlNXMRg6?X;s&_<{S~2c>TK z0?v(pdiaVjopIhdr*t~LkA(mq^vpFyQ8b&azdiWOo8NL#W9icV;a0EPquQDzG*l%^ zS%pu{fxdP3J@%Gk4!`c|k5`7Hf*p-4?RI*L7S8#@udaFZKc2Z|-PXA)=5=VKagGLQdor_?RcPsJqM4T@< z@NgLp;4pXtzXQvX(^HB(x^kwLMbU&)Q5_{Rqv~-QiHx+FbJj)36)p%RbQGn=h{YJA z1@4FlXqg5|`(WD?uapFPWG^6(wF!6lL!-o>33+nh20KpTdco~Vbgh62qpZ+SXs5BL zCfrRuPgGxc{qLc(13eV%ODoC=DuM;m6Z7$4C9EsA=Nr;E9 z2{HHdcC}S5gI9L`k zEYYAi1mQSl7ZRu_mh$|7sgYpvH<~jvgs#;wilcENh>lwy$g8>_nWiYqMk5=W=v;Th z&DVeD7wb3g8Shz@Db?_M&(v5iOWfRPgZu2a;&T_h?_~$CdDlN*x_--!ISWV1vIurB z6I0-CUwTBP6SMyI`>+1Wznp!>n|r=l78_s7``!EuRbOv58;?Hm-0R=`QMYKp!1RG` zdorA9%~TG7`s(Uruz&rdPoHqqA^-KQi?Y-wq|%^?S%o3GokjEJ+;QvIk39D5tQ>m%ZdfQvq24?I03ZNKL_t(cP06Ck5@(|0UBViwnuC;DQZSbg76&uH>#796 z2&JpYJ?ol_idcni?k_KLn`EY$HL4$WdL3truq%go20{D&ZC}yA54h8kg1@SJU7OuBHu0c@z*&ok?wrc4*TxPf~FZ-do=EmB&=0s6?b^aqA9fx%G2-!IXfc2@z} z@R=t#vLZ~7K{ko}r<3qDWLT|8lr&41snQN1xugCLajslFJuIeJF)0_Fr^X*nFbyxh z-#VmVZdI&0)KlCkArc6=t9e-sTMYGaIMb&_5=Bp|rwqpk#h|cAERs$@2g#mqOIj-T z_%j<@tww1rJ6u{c8~QAZTn7rTTBs!Muh6WAao&0QG_>2*$~&1=hSI}}YjIPKuW_8f zA(SUoR@mFY%Y-~R2ba95!-Af6U}spPCANV4QUnWk06V4_IhZMMuLhTR*`VVHS9vz# zJy_Br&~w2cq)IRzL5CotMjqmnLV0Gb(o(_HLB;{*>QWjbGGQJ7OjyKV<;as_LX6yj z)q>UmKuxI#eqdN@#FNYl+cXW_jS)n)4I`6Tf@*5$MGam@FD#G--*QT-hGGJaziRw> zVgB6nAN=yq8@KEn*?)G?&J*Y&kFNT1x2sBf;Qp&rV2M%e!9<8v5-ck=z#4Dp;-s)h zpdSh=7465ez-dxI7UIsZor}#@&Dn{fPhr#ii!>X5d-&;hpYi2KpIJA3>4LfYFP}$S zZv!6GNs^akd#wAL2cEw3?H3(*;F`ZZ{Op`XBYq!^AG1M^w{TczS(-*#jduO*f4}zX z^FMsrN$qyKy1%BX3C)yXH5GYLwknYE`13~{cV>6S%sI1%+Y=KeO&A$cNai!at~ETk z?$O6zf7k*4ef_6fsmY5X%~C)rm!xUsAQvy3bJwr0ef802Y+Sox?&1ZLlM|^)#p{N7 zPx7(xSxXmeUc3INpH%9*Jk!2`Y!Oc_F3i?q8H4vK}Pn)w)-Z zuG!bvvUATvPd?GgvP1V<+1JYQ%IkZIRJ-u#l`p}{Ktf=l64i_}C|3@iUC8Z*z03WZpy(65&6ivq8 z#l42VSQLN=WUB{i018^_DWRk&E{Tn~X^eMMFkWWl3*rR59!b z?pw!3YOp!P3MsB^V9n;;H5}q=G$K$cPKjoFLa$CTqMgW(-~r9gP_eHZM~7G`8IabT zQY<-Ehcm@;u(!v8V{yQ7!!|oO4a^;Z$57A%x*@U>aaGu_@CQ1sbv;>Tn3C|fNV9Cy zmYsjN@5%m|LuFp7aP}+~mwnRS3mX{)0PzcXu~wWmLK&jpE3_8M9;e=-~(K_3EPzF8%o(pll#; zwRi{b1%n_{t2J}CvgJp*;b|3hFyg7Wk^x*wVt^-HLwPCQ)J0J?TFoEc^!tB4=Zj{> zjOB;!+iUmQ?GBY9Qw>AuPmQ-(W)`hn+$)NQUf49R0vRD}rQBL*gW&;pg*^PBM@~O~ z$9-2_adrhVI=ybzOmr1E_#zI=YgswDqNqT|( zWbecjh!b~!#lpw}=!ezN;2P*5PJ|sSrvf?<|0gKM@>$mO(&BCjki#|w6*P)N^cqTa zDmqY-HJ4;rUfPQ;{nk%^_M3Hk@`h1M=MTUCy>B`911Gh+ovcCx1Xkrc0$KdIn|_Tf zRcNyIhAx%b@-YVC+#KHHhncMAt;mZ;nr+)X_Tlrdy7zC7Zr{^srfSvFh3B95j<+87 z%1*bN;gAY4$54I1CeYMm2BmMGMCV+mfc}v{6?*D4)TTE=muQJ3%9Kb%>A3X+)&{c7>2fuG;{mu=X%dDo`R3l{EMOm_KrsbE79=4$SU#8#UB z$}7*}!+xwTC$;Q=~NDmuoe7dC7{NvpZzyGYywU#cOv20O$eB9-}JRV1ihqOv?oy_cQKvaEW@^M8KuYu8+G&PU!pKHh1BD`(Sa zJoeH#1_swX_SC^k7vJ)OFHY-k7DbUsYY83d z;6YF|8fl*A%a_dk)2-i_SM+wQ-`X1L4_y&CisiN$N!pv}%wD$eg!biL9c_= ztjQJ6JGRQ#+*RG<=~~nS7Li#Q%h)VzdgmuQU7tWLud1Ek4<-z4&1CvtmSI>>8BQ1l zuu=W~g>U^NojJ?zih<|#BQ=Keq9yKR`J8aAW${%c4@H+@6%>$%$cUpucpZEL@F>2Z z1fvGt#sD5^%qf??1jd-dNRmn>yxF4)M!@YvnKfuGxN;><#EC!9Jc+KZ3zif{iZK{L zX`xt^q^F<*VLC&>8DA0ZW!R%(py5C2%oqn7L65_tvMXS5C0G3-l8i!S<-}}R{KyF9 z0xr-2l!(YE3dwi@w75nm0lk)l1dS+u3=v_w1^cE1}fk^w*N*RplbmK zJ7LlURGP4#P{=eQwDWUgD%g-F>4OhHf7iq7hi42{5kDPA>L?o>Hf|Qm4%+TJPkvo^ z($<-` zb=|cWocX~MI-Pc3E0igeigRRvZO;qaY_`^K+IHOWXBE?j7c85bkBuh*$a}{Iyq?>< z+26P6$#n-UTk`W8FCQ9ccDvog_k{B08l`uF2> z_Ncr}MU}l zTKTTES>wNN{N>Mob?4r%c|~7le8b4n&YC{7^i_v{<@#TI^3tzWK(JThfLyHv+_T!I z&`TFP1TXDvEx|Ib}= z%|p+;Pyt_uTPp_BY=AW^Vt7KBckJwDeZh1&WR575W)rA+nXGWVVf;q(3P#WnNoBe% z8#Jztt=Zr3D{hsyp=StjV{A%bkSZ+OH`v#i==|j7JN=bq8A@ig7&_8+BY|H;P5w=B z1{iC0bTy8)(GrY}Y!BD>Dg{GKl!=2OHZkDQY*U?z)4=~{B&T`4d8*-fE#1M@cHQDn zEF38S#{w~^g13>mBrhJUiDB*#s4_Z8@%ijQK`!}Ea;GYZz2lyTe)HRVW-S~k^U`Op zsJ6qgqqMcrhqP#Irujj2s00}dtEez7IL1LyGYD=y&+qGa?rC2yN8ltsSTh*<=&3ly zHZTJ89CCT};8yU2Q&Ci%a4HNBfrmpBQ;R%Fhiv>_j8HUQPEe4rc=))syz)UA#hXk`Ly=|t;Q|F5DJNKjPAE#p+?f(xc1|R({(6pY1YMJe zUU)s=7)JTDa0V}?7>I~~L&+Fa)cOHSF^Y0xLwKsFn+Nk7ay>FB0ShbWBzQ-^-J!bd z$w!}2E>~$Yw5?);Q`WV=1N^$&)Uj} zE2B3w;L+d(9dtp1Ap+Rb%z{e1OW6>ee(wjjJ-Kny%q8=BV;z56$}J8oh-@nUVHV5 z#ecf(TeBxdx2@gM9O}!n6I#o^l&A@2RMVak`j1mTQg| z!{ChYB1XW7Qf#_4uW6blox*NubH&q|xc~P5h(MVM{M=UA|Ku;qSPzZ@gKrJV3YDURB0mJDm;>48JQ8CDN z!`fpCqnH_vpX2s;qhy*3bOAQpMlbw4^h4A-@8mOAEWYyE8`p2z(P*|@S#zXR1li-Cq4@nTK18%7l&EkOK33C!xW*H<K1lALE64kx%{Q zh8Br)Vp@iyh@8+;ioi=;gH5`Q^XMn!VHpb2z~TW&bYUEis%y0n1<~Rur35EL!@;pv zXv~B+;(DAgYaG04#$*mIR7(#J+?LI;WOZ0<>vddO>^oQP$iNjMGGHC?tnikEKq?qf zjq$pl+|fU4ddRg(OypyBKiVuE-@5(v#~fx7f5>6NNoQwx{uE@U_T0Gf$^YV>Y);!6 z?iWDIpTrMIsx(3j+?Ll^M?-SQwd*S;|eyz{4H!@Kex}#3g+#isZuG_HfsDJ$M?!LyzlKGvn zw)X8tgQfB{FQH+1?)nD@Ha+qDin+6I`Oz0=4E0xDssb6p1;oHi7S6Ji`|bWo*6nmx zE}j4TTfZ^AGqG*smcF58bqCMJP~}-T@Su8bZ=yZ2dg)`^cOL(?3%2YSOS7yDRS<&A z9grF3wWe~M;gCEZFD9=~gtBZT@Z}hx#M?&gVRFqu%m{73QqYK)Ie`Ud%cGnCSEwxK z2pqHN0(?r9WX+x1cmCE8n;%l=G6JPh zkyiaGh!+e7ReHKQN1d8TsY``Da{_G2!Zxzz)?H(-IsTl@o!-3V^C!k9wJ)*>kF1s~ z^QZpm;em-Adz1&dyv>GP3oDiu^gSt_ZGx=-4z zMGo=Sj0l)xmv^l}q#8@^#L+_76o^~)qzKDHiF#dHWk%SKv#`e~)lKz68U?BVX0T@} z3cG{&itt)adcbD@#IV(^EinP0sP%kP5+GaT-nbg`fiu2z|8v`BEu7nJ_q0nez(Ayg z&Al8j!tro#mMIt%@U=E{#bJQP(BQD~TCDvBvc*eB7(t38V8emqFnhrw$U$Aq{t$a* zF;j6963d%(ELGy>2pPcRNgaYh2=*e>WTK;UIEPu@GTes>PS|YKD3mE~+`w_wB!`Tm zW?DGL%wRKQT>&mgT=-$9 zg|aX9$e2+IM#5ceG~Ps`#QujsG`zMo_YA?+5KAk{#6wc#+7!5xAQ`4J*?Ibjb^WuZ zmAy8P2og+N+IqW3-}$B^mCs9CheMED?XX&>YLuP)KZ?AF3d@qijA)GnPz@lljd4(} zc;i?<>@N+aMHK{XWa;D2Y#80PtAC)c3Lt$WK%jV6nZMNR9-mnI?53jEYxK3aQ=CC; zA4Wii$`@cbm+x-hc*E!3fAZ0jUC(5wC_}6%MOikpY{QlvM;(2}7T1`)a6xCHF$$PP%(0=B`?G-`dS@IrWo!+P%z!!a~exoiyP;g+s)F z=sdHGeT^uqsqu4cE6EY-sgx@wvY~mDGGBI*t zWguE2JTPlC28SwJoQFxH9V6A#JOx#K)a!PZ9r@DFe(AfP`O<$i`t%fdTCXu(8&Yq9 z@C}J2HWXT8AB9LfZ}JoKTvr47tBD^&$;dcar6R{GzRk!&>l$FBYM~eaL=!HNlb9)7 zVGJLdL&$??e;EidrsqXYL08^?0yB+}uCmodMM@qLZD z#@uU3=vl>NZVVw6Z~!7G{t%c8*I0+xB)UetriPcReF`T5m_w#V3p4HSfi}ftFPR(( zmlzF)%7YR^sn|a#!Cr)}D#0mAlQv3aPk!I0eti3Vi}qXI=}h_xW@w>tl!N+| zLRwsYrzyRZb>#F(Y7AdYnGC8sCH@VDIZTg1BrX6(tN@Uc$Ax*jJ?Rpmet=2byNdvbj8~)Lz=3w9Ewd>}Y^!8i6I)7w(uhUVUXDNUoX{sVY#^S`mn}0f0j8sdI7sZ;@ zOK-pVYePHsY~MQCH`w&qu0SkF|D=iZ;#BXGm|mV|S+;X@^3}(k{rK*Q*=v?ej!k&-uVgn92A_mf zgHfZS^Oh~~cTBZ}IG9IJLbQ5J8KFqVDKwi>NYu#`v+mY{smMIAj{`@AV9DgGq2f|3#Mvw^yR zkz+P1xe|mglwDyXsHC+xKo@)BDbo=1|> zHgbe$m0ZqLhTvh5MV2ug3s%T>lE*UA&Q`R9SI~)>!<;Gw9u*5BlH}k)Wa}8u3nYot zXe5P-St+umF7zU*e%*A_?>ok1A=|4k7yb}KqpN6b$IjiyA9c{`CG&mtVv;7%6%jz@ zA)U|`T8gJ-6|qiQSRuyMBJm(lVM>(}Zy?S$G~qO?xFOyOTts!jrVTrkwZ0oV&$kKZ zCYPPb&irQo_x|&eZ+_{VKmY0*?|S2r>mPnbXMI7tZ8*u10IGk3GW7TwFZ3IZKkKf) zKRnRakE45hBZ2C-BKOhr=54!P`;TYu$ld%^3ySga)b}j6q4~HM?ZTBko3{qDt3l=ldYTgUb14ruYdZlt=(I;ZQhes z{<2pn4sHyqNtSfSCKj$)dHa1&y!(Tn?dG=GY#<8_G172w;g=PH5E>@x z02DYom|^-3>tnDxhNo0H#Rm??_>SBLGblB(0*ykDEEGAV3cLMdbQkzI7;0iXWDe|+J}?`6&AWKlqdtEZ;E%*CL!rDeYw;A=R; zQzez0G@IG(@%BHSc>db0qf1}1xV>j0$$W1W&`)0KD}Pbp+C6*5M~0Gf{`t6Sa6U&S z@Js_4u$nmbd!+afa+z&L>k;aK%yCg}#8#8(WaCeE*E%o(f}Qxb5(e-@GXh{cNCQqy zD4Jqco6eZ?t5h=A}W z$GHSavXTHgz+!RqG#{EpMzeL`69XX&z+8^WH~yhhVV4c|FSj&$^bz(Q(jaL(VA=sVm6Yy^$iYHDY$YuJF-3M>TwX)qxGC2TrGad@$4>Ct;% za%^6*!K*kYnPr+uCo>r$+*mZMqDp}$V3Nb(rbJ3}!bKnilaM;Tw|G)94t2gxF@ka& z8i>-PB-meLb)5KG>P`R@nM4ixj&w;OVS+hja05cn4*iGxxZCeYKd7{pXgiwATk~YgIFjk zV5zQ2MQkBe001BWNkl67wcqkZ^G0`#u2?ktzrKF{MW>&*?%oG=U!UjR{VDLEgI(w{o)^OlX5@3{ z9siaK?z;D(EcK-r!JGTMd!vnd|f4(}nbK9Qn zyRyEfuS5tK!>U4Yd5CL|Pb}Gg^=)_k?c@)9dbC|6#)Pmi5f{#ngZ4xi?37aR-vJv0 zo>sBwIWcCCATlP*rqTLLH6;SSqb_NZL`&VWG=#PmSUIS;tUSm3MjUHUfa*S3Bki`^ z#~*$8=Rfn|wRikI%^KmPx-#e&jX8{|EOgQwBGK%d&0 zLDA8}@&}v(L_E*Y71^?cc9dAvZg-X(xbHoWK6lV7Pyf~L{+guz)YH;eENc^8h}GEC zPK9fZ^UJ~wh@X0~*3-xtY-)kDj%`1^mn(s=v>dNMrraPpW5~q@#%VZZK@ByWV+2bu ze=aPDV?W{$Y(k}6?dRZQ*x@eIkcai!I5uu`6e>Rub1hvS2V6A-D)cSXlW1S}LNYUW|b%CBSse6T=nY%j7;F zIPCVtG1D|T7Y82Tz7D$^AX4Ce;?Pk9>vY5{sy2}tOYiXJbuHB54wVGPBE>LwB%KKN z;PC|e(D1{&=!jpGu;ECH#1Uu}uTb)v17rzYI?uAf00T83TPMyz!Mvm06bYCIrXsL5U@R z2?_a_C}%)$xKMlqprQdXg0W+9fv1%PQ=Ce%bb6Ejq_kz8=aqY{{@xhy>2PW)Y|!7= z&%WhW327@WJk6e8e#vQ{Jo{}M?tLWd>vyRMH{@vxEfAApqBCRm^kUZR6W? z^1Bml-tDH1Z1axMqfR_`%Vc-{(nXz#j!r_eS{>>#=~YYB>~C&){Dr};`t2{TUNm?}Cwz@OcD|9emWRJ-t}z4*QwEKB@A&e#YdfKdUE2on-aw-HIIStuuqL_)8T zei4XJ(>bRhp$-wL#9$g8L$tg8hw~z0DYZ#kjiM-V`+_t}^Iqo@XTRgpPo1{@?uVLL zgN_;DD2Fyu>ZB}PwH8ZX_0msWdfk;@`_XX!0A3^bOx`8WB1eW?hw{eCKkgozJm&46 zcxJ=)Mfa*APg9GffD2uNXWDj8U#a7JRX0iz-iC|({4q_ zaZr#A=I>2!VshbL%Zs6*<4(Qg{bydWW7k-t*$gCH84fBjROY4Q%}JpZSyETqzW}}f zF|A`mgKad96)CnUM5JjLdveIeRT7}{z{A&33_LmT8eE~kS?9=w)2Xgxwg4VfeR$3& zcsl5Xc2b5G4tDUz6KLvnkrzHwTba{FmVWPtzk1bi=Y03)_bfhiP2WH>Z}(JUFjbbg z1}BCCn2gTRW}e9gW;Y;0j`L~`rS@VX+VBnv6AI#@E@O5E~4PoMkZCZS~7{?uncUFV4Ji8C>{6L=MI&hJ9MHlUiPbpk#P{f1=sCJ7K1)aUbQa7RI{YO|yS>7ML!z`;JRk^OUyWYDh>)f@CJkA{ z#6tcZM3AOi%ltXWEiGTjP2D{~AU%YBb0 z6~ssz8@KH`>J8_vADf)Fa!GrlYjh&TU!n77*leEZ-P=YFTE6hE+pk%%WNu|=lSYaV z!a;eplJ^HLgm4P}jILU-E%Y*7-L2QlUwXjmpWXE3#5sqXlNX-4?yd)#jm)3eYMDGDV^B>> zg|)if_KH^?aQ-K+{o>be46jxw-}IH_ib*LFQInWT#;|UL+RY`MOZh!2lZ(ViXKcDi3qSsBR`HSX*RO0?CVo*rbdFc%(BJ3pQ zAGs(8n(J(%N=2^`4NGlCHOgF-<042$EuP>^foQ~pQ_P5);UGRhb~408%oVvxEO_Mh&5pz1dF6&EWV-#PDFqred+?qSua;x z8qHBdfXuXjT$TfC%#j_|of~aJ&QyFY5ef(E;FL(AQ^?U!(5IwILlP~%$9DDayB>O~ zHKRX($bd4aD%S7RaA}%#M|U6gikGT@b`*2OHG9X+E`vC7$r3^^dL!)5i;xf)u^t%^ zr|K~G4gw(G)XbKtUS9b6zBI|2&4-`ac*$koKJny>*SzwK8*jaP-h#P#UeIcV8V*%B z*WcIw)H9pMJH0BTuSVt%XirqP*Sq|)A3p!IH?6zp!Dg$)CJ(&>s=rqVCZEh_&Yf9I zpYf(Qpa10Zo5s7{qfffvnX!olE0=c0+WsgtzemBZfDMIjCPZwFB<<$C{r6tFtQt(O z7j~o}s}M>B2-h;%<3tf0#fOn5o1*<>cli+LvLd&~U0G zDG$xnxF2zEVtnyS5BT9P?>_yUFOW?v=rldPC09Bj_|s9Dp%O$oiwTMj&3_w}*1Qc) zQl|=zSM|{9Vug z<$P&TFQly>o9`(JeNH9!6BJu_y_^b&!TzcPG`f%98fU9-P2*6p5n z>ZK1pyJg`%dv)94oL*nqQwB}Rjp9Fy?=bq^EF|nyU*FD!dmZoSEyB=KOoK$q4-p_Ad9AlX)dXa#t9LI5lbU2 z)?V}lBbde@2LFp6;kQWg{{-H+O4eO?L>APQiuJSP3n=tk9b7@Mnwr33ZeT<3W@Y0Ig4%-C;S`14)&`{va@y{BbJSgq!2m~`TjDYzj8R;goz7D71K?SlcZ z@S?(lbOC(4BB^ZGNi+qYn-J7+7yqU`lKWK>R3U_e@tT2xPV|V^&6^u~jHKNe{zc48 z#&MQrw#9IzQW1f?;}3s5=*YA8|J=DtHw;eResNn*N3)p(_H2o8Cvypg==L80+T`X5 z-8*u`Q4JcSDKaHUp=eFqv@{*5bdaq}bCDRiXQ#Vl<4}p|l03XSQhRTZO}_SyI6LGX z4k&!Bc?-#z2hhckk>GTI@au~aZsgreY`jb6sA`#X`Cmh&1-aMACdmGwxj}E;N=$Ik z#TO#(@dmPU3=uahUZe|XagQZF3qwqrB8!qhOqaxjnT}@0rINnZcruc}J5>~I{$TZ0=YM7DlyOCokCH+PS|3`Uz!^(AO_IPocl$@bO zt?3b>krw#d9ybec~BEzWm2`J@VWeLrRXBJ*KU7NEX>8seEwhmdi|KA_bG}r zz*C(iDWNwLdP$+nvQ(OSN#KcR+n)zfVEES5iDP%zZr*QiyEilbQN3bM%}`%I1!bh> zBa*mp`lP2GePP|oRfin32bbPUzmG_#J)-eOY7$&Y5Y1l@Yo%F{yh)6BQU$!^3G%1H zqm(4WPWz3E$sQO6Foh~-cSy5QJ|*lj378H8OEvb}bNeJs|M=S{M$Vj=rf|U7<*99J zh1~U9)gn-}zV62#dA?retI9i)ltvh_b9TqQ~m0^ZXV3Q`n?*$oR^`QX@6d0PLAjUw7$Ap%E^gpnH zc1kco^!uUl^WhbId8ZFcmc~Lsx6(>edrTH^GRvgsmSW-x`wCu~0}aE|C7Od~1;fMz zSt=Hu;G&Bz0Q1Nu$o7;{Ww5W7w8YJ~82Xilcd7jrogkd~7!;mRy zCnas2kR=gyDk41@^Jb%LY}^d6_o4KY)@B*?Jg{7SxdlA(?R*- zCE>iNWaf-YN!d>fx(NS8$m!)(*>Y6diy})SrHni9$X{MK?X0UWyy90Mwu-LFqeo8| z5!GsGE6?LZ2_FP3$W=EVR_$!Noz|2$kV;k zCh8U*$AlqU&o)p-hr4>ahBCc&(_r7Y-lCNNHv+LJ@bVHEqyu4L{NTKA>V$tj`})$C z-a7W^eatH}S7J&+4h1BrYMm%HMr0uqzd)Ke-)g4{c zwwmoesVKVOPIVgWDw4c+(wHY6f2O%<^S=A+Y?zS3m|{T5I3Y=BD6dcZ0bE%7ofTwI zND#dvhc1Li2uU*FaRWY!_8dJl-$8}INE2Hjxs`+flx0^+>Tis!v9b9~HL} z=AQ)~26DR}s$A<$uPwXbN2i_e`TY`G@T;89De#zpz@0CAc!MO&i@fAuf_pF>j-~|% zDoda|obhR<4a{YUqVcA&KZTJ(Pke>&HklZw0G{#W3vc}G@2~WZ>@${91rmK}<%(GY zmFheQLt9}C48e77ux&!5%{Q5EjQMPDuaBJ2*Du1SpMCkJU;J^|n=8^lOq)Eeqpj{* zO$B*wo}C$lR|@7Fa6DZZ;ZYgbJY8*!~FWP;3M!wWrVWFsv938rpjel|ij*Z@l~XCD%Xn z(?x2{C+a4UHm z$h>Nz*$|2;b@yR215hd?*XojllfCh>%@`voA_TwCy4?HL{%3f`MJ074zOLzIeu1%- zB{3UK9Grj~9;yUKDI|{BQ?1et5g(EN_jg3NNU2dw1jceC?gtxAdY)jo^fV7aUefc* z0D#rzk^-lmsStSMyga2~)R0tDD`^RUlmMz5%WV&vsCyoI{-GzH>mE1KI2lgT?dn*R z%(bjUgP&~NW2@;We(6w|r&KQP$rG6%8j&x1^8ANnnL-$vSX`M<4I{4ytm zz1I%YCXP;$L=lh~pgVB?T|W6>%@dD3*EMCFb_FZa&(c25Hp~cvN;S0YCXr*0LBbHE zO?f2y?74k^v-QZ`kB^)&Im1&$2$1Au*s7IUwW8dCLo)Rx1a!?~Iy&lcn!%?)1V()|kBHVrkp5Fg zF693V7{nO(1Nq}fMgHRp%IG1kCi6l^Vfe)JOP_vjY47O1)J)PBR$HPRxN7gA{zg=< zS$Dgz))Ft_g>4wwE3|cx zh8gOll@u8MlGrMZ?#Cj(h7zg>d_amB4>ffik@yPm+1N>=6cx!5+g3JPBo-Q>ij5lN z^vR0Ye;}v;h$kr(lewA>8(NUEYQQ3h%(^XqZ}o*&-f_t#H(z_}gD<}Me%GYYBd1KL zRwKhOioBpk_Cipple;?{_ouM;DOL-6DTIU|VW1$uXMY<;(Z)6F58Hc(#fxTTS*F6E z)Jz&D!fWFmNX_j>Q9(9laA2Z#n!WwD)eHN(DOCNs-s8 z)jvJ+@_wH?|L?E7HEI5wj^6IH)yncrNn+>te@W277-ZKcPqRvAhYG@9-15LKyDXkL zb)4;9rJPc`R~>NRZkyI^dg70N>76pZ$TKJ0SU~6`SYf7#o{dUp8BsxzeFOk3G?5~X z<8d=4{rS)TT=CwTqYl|4$LeM>2&5EV-OB2Y+93SPB&SO`tM88F+we)Y#jL4|7ti_K zZTIW;daYK|d2V}?(vWe$MbR~7!h;X|EpHC(z329stw^Ih3~4xtKP@Q!n2#uF)?fx< zG^X%U#q1jGc?pC{vjJdc#^9lcjiUR8Nu!VK)5AT00WOe+gQZo5UxuwDJ$RoT8?DAe z|MS?$>62}*5pu#9A0_&}M5_WoVNZe0v+^QWg0RB<0&p*gLL)@$m%e%R4^BJvD~B1Q zVtsTE)4ps{`$SJUvOutm5QJ9FLpiQBuUJWs5u3@2phz&K2B-y&JI=@}?B1jWH+Iva zw2-tUZWv}>M%n-L{A*7?`|1eGGcs%@uF$_S9~C#VSrf;6{Mrg#jiSz4k!GMOpo1Qm zZIY_U<4i=dd(?=YQ9Wy#$v<9NcIO=r-SpeXKU%dmX|`mwI(Af_ZOj7)iR~HW96GYH zXbm??pw>7Mi6q#Yy7CV4+tK_G?h|olq4zBqoQ2ZT%N;u~xaQi`IM|RyoOiU?z^O%%53D ze60YCj8lgMA^+h@(ar;lMEr7fZ&U>25!mNE{9uP4bkcnCRx>0LZD*~cKmng9VHLIm zaA%}I+%=dFO<6NH>N@vejmc#P{F$*aAcYPr zO$a#stwEXabC^6^!>%1sFubHbx;GK>;G>p2{=f}8EuPtEwkkI8Ym--5rmy?aX*!8- zxZ~kTJ1)wHnzl8TP1)GSINDuRMJp@u1f+Ysc|aHiahw$evS6rB3XD^zg3SYiGqzuN z+ue^D(75I5vy87J09k+*YF-#36B@lIRZ>q$lIz#Vi4J;R%AUH6oALg8ZhzOWF8ab( zE@@4fQfrU0Bx5H4Rn0(Sqd8&Q`IlbvJL6(raPHUQW>Z%Jk_ilq(`YnF6M4v`%`V$v zA^A;`FIz`W?!O_$ML^IcbuK@xTQ&+CNH-^zFl^{;jE53J1 zmgd*|^u8&(Zj}rSX|%D0f?J>!_7`x;+uWU&);wXKQ?+n?Mj271===B_)6Y)QhU64lyrpzj@mPkog)fKYsx_yS}=lX zy6p>)03@rRbPl{r^AI#zQ~cZ<3y%ca3-?T$9w>Aeh8x$eJL|hAwx!7-U;bWg?1*tw z$7gY3_<@3CoJ1Srs(}I#6e88Fv}vBu+11h4*PRu5aP#2Le)HJ%Kf8DQxG_7=pFC~e z%)|EGVaKhv49!;HadDaFc`Ip|g)_u4z(Qp-QVRV^Ndm|qBD@30(1~#Z5NV`B7h2<2WIss~i={|AU9Z-}q`})G|hNK_(m)g!G5Q8`}G%oTzfTQApA{C_1@qA3uieMrNd zkyiq{-e64E{5&LD<|j+=Bm9pg5f$NUh3T{0&nPrXzvoxb6SWq8=$_t*=M5*dg;~PYuv$fxz|7^q zJ$Jh8<_nJf>i6}mskLe~PZMfAgR++x^3)g_zvIFSe|%@4i|>5r>xm8ZbET8lEl2^D zBPt}#x-7$*2Sut_CZMEG60I1E0zwO3{KxHoD5OWa4ql07`idl=q_S?uH31{gN*J0w zl4M)iHd?K#FFQ@d={2`JFlD!`lU4)Z3|ayJ#{fA}CH9PznLG%JWm_9-{tLsPD2la9 z-@5#wuP!<9h*p+_Hj_}0MJIOPmxisVd@VT!3WR|YPE^nVbLAp41Ske^20?D{ zLx6|ND51v(+Y0Zc3&CKAvz3(ahTyFh{4_ALZtPZtjkFtX{`T^f7o2qDKcD>RxfkB> z4io;9VtuOn`zRyBl%cI?uJ>Y+x}yfJSk_9mKod#!!MbVK->n+ERt*E`wYU%UC2 z_tx9n#!eb{P*Q~!&vF2DcDf4}j{yN$tt zO=imVsBc8~)Sc$%hFhhvPLre&*qix6IGIF69BxcX`w&#&PJz_gYiUxfeBsTRlSlsK z_DjC-nLV$$@otgEPz(y&;LI(BtVq1@JP_|0IhhV-hD9K7H?eXZbU+eOmDmqlmtRb< zr4fYd z<2uiw;~J}ok2nJ5H^i;jY5^{T-|vnG!1?nvXldAW;<;yC z+dX?qy`vV#DF7=}nnLa(Yo^l{Exh{Y_f$G6KRow@EX&}~2U|BXH&{C?T_-*aT#*qi z=^JGofvDN{T97exAxYvx_TTxAo6kG`luL_g(`vOyq=k(JqBpLM<+UeU(|F3xTc7vC zU)4IhzV(gIH5$!Yy~5g|O93<9JApf?(ceaGqm5%3)$}ck2n7f^KH~!hiiL+1LV2}x zqDKA$kuVO)VgQT09`eS8A2(fIT#cf{P>rjW6h(gBuOFVg%ht(ILli}z6g%)>W9Zno zUHF14P*F~i=(vhxl@)63(${|Yy;Hw^@{z`lgv$Ee?BkFy!vf(rsc}e&5D7vgT(N?F zQ!=B>1jv&RC2(h;bsZNF(g=AyD$<7_)0c$c@M>3-nAEmC0Gl^pNBuD*OM4%i7lcfXA?Z%7OY8#DvCUB91a7F1xErH(h>qR zB7`gug7^vk5DAVfy#VdJcdN;|V#tSZ6F&%D2sGIRO#&1gy`X}c#`riAVG~<^0u*2& zNc%8+Q99zv28DSIK7px-D979-ASxJlmzqX>f&h~X=hJgpvYgaf!P&fOt%x*Q4_9%5 z^Ro#+B^!--3ufUPn79?b)J%K9fu-`!kCa|+AYcV{(QB_P&&{pBa=mPX%pK}iDwQ)Y z{>jz1{9*Er3q+Eocx_k#XCf`rz-ts_WPSIvG0@n!X;2#@Aa$*++B<$!5+{)?_zaYd zuc;tyHM_=)7?kqRW4`^+eOK?iXm*@7EACjBJ%pC#*I#|6S(+Q~d~Cw@^Naog!(hxm z!mBL&MH#YC$@T5GT)247C)ZujaDJD7&w%qBU`w1y@}Ao3488 zJKsDuO%pf<8wlPN1phLIvP!|P1qYExE~qIV_!l;do5b;92k-vt=%UYm{gS{SepJb9 zNI$@<&uy$VFw`t>wkGbnBEd+! z0ZNI z*~aSJaNDC(c3jjL>Q@>bT;MgP7&LSqAV#HJkhVb9;zZ6!pfW^q-K%e0`TdiZoOEOo zw?cQGP;&}Yav`7OuquWKQR!*BJ&E!GXrB+_n73nOJ{juqX}BIqTmue+3&B_pt6wlJ z^lK)3ydBMt(kytIPKRS47;k9?2CUpYY4-Pdk|ue2+KHd}>|uLccHM7p{mml-g&H?y zd|P{alE(G|A@k6}(s=2}9q?jlO}m?#GZLxs{SynO9o2d;u|vvn=H-Uye=s=o%45&! zfzptm!_3igwU$*jIjB5`YZ}mOVX%RFxWOWTt|5J4 zbIL$elo&jTi(qO`z9LX!RAZ1MG?n-}Z-JBRs1$u-oKg62`k5m*>72bmr*lP}gff^wL z2we%xO2H9Y39@x%#)Q8#EFuUD20Z=hvX0*NyzuOhIj1q}ZFzFc;k&t?a*&5Mn;{Z8 z5EEt+LK>E)k$CaMQAi#xuAfVK*s?qGd6j6%xz}9ts|TiRy{ND$3|HfBV~YxIXMjVE z)wZ^w{-M>&-ZoTVt2tA)oIic+jIoOs&HLFkzxms1?@d}fI~^E=H2^2fp1!mAm2`~i z>kosy4>|ME-~Dj69p=YzE2xC_oTqV!;_SMs&or`egLAa-~Rlp;TcCBzWX2AFZ;}Aztg*TW>l-{I8{*W;)=x}E}EywxJ6rh_wrkNI_oE& za73IWkvoazF5(byED%GVK3s?KW}ssd9a!>dz5RlizEhPT%;Naa{dWEDpPYBXsh77+ zpH{6^(l`!OX!q7^sxz==C4(%Ru=9e`&%LQq3;*k@M;c2Ug%QCE#!_@?Lj^iwB^nGz z0`Nrz(t7|nji#5q740`$5N`p5k(5AiZ$+=ZU~HfXN+bqMY&1JAB#xSf5471T4w}d? z3|h^mVUS7{*WLQqq#fp`&4$tema3xHzJBSOS6=w_B_|!7 zCARPr*#ILVx;iDljPy}UJT8vELv$uOA&6JuLLmtdw4S90`Y@LejLr0^r3KgQpwg;S zx?2!2!`0HIaS9IcKyJa8BMDb0;u@#AI3Z^DYz?Gp#qo#{J=gu<)YDEn`pWC>y666< z*0holQzy1}brxwM;v!R;KpDI;l5f{c&4!8W1u?n#H*e+Odz$6y>gnkn)dykeB+EB9 zl6A(MzrW^{HO@H1NHX>6XZWVNlM8jc;=HErDJabr3=JKG{z>FuevSKJ*eHc+9= zMn=+x2QqDsB4;{mr2_*4jXc)t`v=!=8hC%r#tj2Q8~YpiP&3fEikv&9sH+X7|{^gUm^(sEwpVRDi6mVh|5sIg4dpw)<@$R zGC+SN>60Lzij!Apk9aIvV(w#@3D@X5f_q-VLRvf~hA?Y9utaRcvom(gh6?~%a=&R> zQYehwLqGz{Usc)O-soG{-Z4T64?lm#a8>Hi}9r2S62$pu2D+O-D{!&A??>ZZFMo4D1Y zBDJVv1;ZL*#ZeLSd10lx`mJ|5!{FjmKfC{)+s@fydT)EZaP^x9?XqCsLzX=M^4rrE z%xn%0xgAylBiPodPaCbSzOJD>J@lA!AN%9=+s&VDya%%;wj-ar2ID7Jom~;(HMc)D zX}fuOa|nVHa6HAD92*DCI>(Oq!IgLIx!>+vP91y5KHL5F&hH)dg^R~7o*hPkqeO+I zXp<8)8)qJ|V2dRe-c+dsU;W~tX%Z_Huri}^BdeFBEE-dA7)p?(mmyM<&JgDf!lV@+ zbI2aKlwUjPvS9Ws4C!KMFs6_vD+@V9QW-W@i(bh0* z5`q+8U{cTRf+FI`_6)Uxtex=LKfy2}5nM<;Nj|k8bz{;_GKMig@2m5&;qox~Fa3&? z%Hd;F3DP9F_R6yjJ^1OJk51lhUKY1Bp4Zga5}{zc09nC)5tfz(s!-v_FTZ-##s782 z$wwzi9JtO2KHWt#rUzhgnx-yGa+ugtgom_M5;OCu72E?(?`mRl<)F4h0wu{MgEhq$ zFzw*{Db21NYTlFBIfG59 zSEG8p+9}#q0Et|i|1Hcz^Hemmb*o-kA?~}hb$L#$jS)6 zi>QPK4=R-~s)f}kQuW%Xjt*5flshOS^x4rOP0f5$WASsHH!>-6G)^F{Vc?_%@fr1) zpj?2~*|}scf^DN^)tbF5dc%f+{!cbkvv~L2w>|IFqj%VPZq+v5OUygND3oM|(ZJvy zQH~n6R#FxlB%>gk%aAf$Ci!Ad5*-#u3>u;-u_+#Q{kjX|%K^319cq+_>*M=p4A=`_FSmOF2 zCy^9{q>q419hM$aoJNCoYpJO@0P`r=Kms~Rt-L^Z1cCrtO`IU*acI*^H=4rtWOpHU z!dEA0mL!xM;-t8|Pn@#`jfc}X4l)Rd7in;o%6Dt5F`eItbtFfBZvvTPx#~i-TO+PxLr@d+yw#XXB zNwvl8s=clHr^jyG|A14Udv)2w1+!cIgPN>&?m{Al%_M`Zw!RTVLhg6O84uob)lQ3M z#jR!#*k)k%#??H(^2gt5q}k2)JT+~rIR@?Q)wM2vWRcp8IZr!B^e$hq`p-{3JMXKX z85nFFdEhR0-*MqF$9{MG_Va9nxFGMv;GCJDi0n1>Vcs)$)+uLQ-&Jov`pCWFxEVzu zHv)EM54iRJNekfO7rt#bQ&A$gW^$mSK^U2pJNDq+!<&jPopMFb?5Wi#wC8ngVl04U zi*>P*G*{{Pofe*S^0m69Pdf21=SV4NSyYO;38JAKmD7@r*s&_3tt{&k5?_SA0@6HQ zXjlfkjuDAuQbEpG!8uGcng2%^2_IzP*$82aQ^CU66ytW^blsUn-n#j&r>5?*I2jx) zAQ;5DsC^6)u*2w@YhD?we(9ATUidXjGSWl^*qwydLs9LvKnrS9ddh(}yGOiM@N6L& zQrwOcKU3vbY6559S_Pu8u1_TNs>f@pIX;bOMOFBAX`rT*@?w&Sh#PT%L&5cjV<{+) z;AFUsE_kf2O5B};hcD%hgu0`Z_Wen#HEYWF@11|*`DY#f^Sd6o`+pyM@zv!+G8i>s zbX!liS+^{<tDpke7#iC6&U-`st=UsX9eu>7mz;XU+^OTuk|${z zXBGf$;KiOyK^dgWbtReQ5^vCSKbatf_4c-8qzW=KY#Z4uV8E2zMu?cIGB;qShJ4pj zsR25iu5k)kLRuHpXP+|!9_>C921-tqPsWgQ57!`j%ZRL4qt~NRH3i|HuYo3lAaKN* zpIS=xW0c?i1w|idOUT@WDyL|GxI$s884!E46^`gB*rzPZjgFa#9e2{D|NGGM6Bf-a(%4xkd!|AK zn(e7;v8CSs*DGh9deoH{pKNh0N$t%;fvi_6!bQHbv}mhT9)953eGfY0@Be;l#x`>r zn+EW@EO$+x(O!EYS+mtPvTt)P4m#%BPu_RUR&%Gut(FuKV1)Vb8?QTChvMhIePYu5 zIS{yXfFq2bWZ*AP)1J{icR%pViC;dny}jB@(xVUBWAGaJ17k@*6Ijl;u zoGVnyaHG#2`l)84dGa~e_syPRr=RA64str%EsW=99yxxOg{LgJu2Kz7_|n16Mx#=R z{1*FI80j1-BNAAy?)Qb*xYy96UlTZ$I5YVj%$G#z$&80w(eBX;RMJk<1FXP+7=6s} z3?43k`2bO{5Z)>Yi2-2y*FaOy9xKFL>cD7X6r_17 zT@#MezH-RPUpnxa=a&BQ(PwVG_t_8MeN%L_b&Tri?P^y+kmdGj^xO!cL^EBGKmfy0 z95D{yhy{jY%;4bKE2B3MGS1W3cn`U-AME^YnQAgpPMe@%r^XyHn8?J1Hr)AjSN>`{ z^&+ov-4xvQ0y&hYxoVvP9Xztc8jP|oN}iotiCky)65ud2oZmoeF*p>jTe)7Z+YpA~ z;fL;i*xoztvBy?pd%J9)BT2Lkuejt+UO;lz8#Oz^LTTOvS@@_M$wvVM$5V7o_5h^| z7{8<>Bn2yp(g~!NWDLD#u^XYuD0*#W1X3lcLSsN%jjjbmW|_aEHDe#ftEv!!QU*ex zp)aM2nBEDjPr)aF7vzM;wX^0SV@L@Jj7=|~R1g)B1W9;OvJk_CU3-#%vc$EYpqlRY zl1|)`CgZF$Mk+L#0QAKC>In>L3Oe86D(OVYtOIgDl7)GUrid_3wETDOiUa{7@YFOO z$I=}2#aI+xmrm3|!(Chu(SqsWT`dSiKvJ-f7Z;zmod(VDZzunUCte8K+UymU8gWg+ zAqgM_aW-ehc&FNgn3~*6=6!-08~y;}P;R2Rrfe9T*+;3MGg-sbnsMidKHb@67|9E-EUVUP_KGZJPp@c^ z8Q#HxI=z<<>?{_^Jz_~lh+eDeAmtt=OzJAUbwK6lQLO%>UijeO!x^S}Cy zAK&!z|E;&R*$T=aaCdnFxxicQApYkyh?GQnCX55*K762qC|nro(t^|tB-XiQnq4hM zff7|<;|m$X8b@#!LP<~2=|U*3G)@kj6R!9SNqwTiYqrtBEq zC3CJ|(LE-2R?N7-YhHfivJ1X?-ZwvQI0_W`7CD3xAVSH^hP(8R+KEi^;C9)>3<8v^3TlKes}6_k?bndJVD4ilhFg)N{~ zcQ%a6^YbQCfi8IJgioc9rd6R3=Z_a_vVWCUS8JOzhSpolW)E8JMX=4`)${qbq1#+|!vI(CJf$5^X;62nB52AgOyn)i6q@&=HV7BaE z2B|(`dR{b;gTZ@veM%qWiHCcuTjaNveN<_0w+6|0c@%uG5l7>xCrQ{@A2WH3z-xTC z*xXAVm4L!uiNiUYC$aAsc}r}2&_MCwXZ!jz)0HS1YPJsf@&$i>VcGPp=Cy`e5QlNz zksA`=p*;^5eEiDmm!9{Pb5B3kn0b47rbO=?;=6Q1oFOnO$+M1n^{K~h+-Lu9JhOE9 zl!epNp&{#rX%;c-4CQg$HKK2GmhOA>*^l0R#deEk8~PH4)}J%#9=BRQJohVcBf06W zN5;*W(rhNSz!2)>wXRmH1KGg(jT=Xf>akr$Dp9N1JmG{RHV+Ohx#XAQci2i4En9sl z1ITZK0>p9L*;Ut5CLHsH@7{mk6}xV~Fi9-j*q#FBot;YyQnRF1XesSr= z=Ny0Tsh@N8G}4*RLU0(Ha9NWZClMJKplRf+@a`uV#iS9VPD%ehT3q4^wA-Zw3atWv zdO3(no8dx$E)~Z4d3YZ>iv?UW!0smF6;!}Wj$BJD#)Au~Z0jwa4l+t86!i7KHVk1K zUt0cc{@&AB-(#owpW1nTGfwY&;vaAP>-A^;@!FqWcsq=AP^;B?dOAAWq8e2FD|D2_3^Vqu$YlHefeAPfyzsu{TwDl5{VMjWs0&jyFmW-)2X zsLvn1$JX1=J7}Ms#`bjrQe|nZ{xvAQfU*MMV(A z9pF`^;Im7`@E~cMQ04>>jDp}v5`FN<>Vw4eW{3?Hr9?3{AocHX)j~#7`iC0Hz~;8T zzKpy+(lEougN>US+fN_A?V>HRB$eDTQiC(ZASuXaB8dQHR2b)$Wilj)U}!JI2C~yE zH!NqUnH+HBxzE1w?u>@J30?mrSnyO7Mta;_N%g+DGw@*JdPP0%!Vz}T~ z4pAMHyGp3?JgZg0haR|g|HIFG{>68uZ8fts*l>Y;2~EQ+8iguuHM+--8CCUvoN&;Q=RWy|E4STxOM5$py51V<6U+%OXkkSq^ulzy8H{v*R!N?PD)Y-fnKTxoI3{=?qt4 zQ~nhr87p6W>7p}_zj(=UNg5l9W*G=9y4GInhz|&`!jjY+=^2v%Q9^USfEd|kXrXWh zzSlhuZ|Xb>D_WQr9y0t^FY$Qzw+bmG;z5Q14kLbpAhu{tOre+m*&f-HgEJ zd`~M;OEP2xwweN;00-LTB7|9R8>_HK=Jn?f+*us7%V0D9=%cl7zWx4P_y7H0|9-u- zYR!kuGz(Od_V#L?`%IlDB^__o2K{? z-yiBOAttzh1iyvZi(tZlFY;S2$t0GT zCA`F=zeYd7{?%4X7PKD-&yxGqdY0=rILB5HRG6f=x#X3o{_xXF*9{DfoG>`q$q6@pn)9*2za1z`~%ME*+94 zae<*hK~1E>EYCaYmA^cC!=8Jc^4yDWPuY6z(7<5e$+(07Osg@}J$A(AwHpj0x&Q9V zcUUmfo++>;YPw~6d4+wWN5_MWdPhCWGfUHz%mt*JM4aZZb;plo9#LkLPS`xSy}56N9Zn+NJdBo}*k2~;Jy_!u*7be)sr4CvUePGyrWELCP@bA8dWR z^p*3!b?o=P{iW31pQn8NsUIouoncp4mG*;9iuoK5x@NM#>;o($#vd`{$7NygaheD2 zKU#AEVBzfrdYA%uxgc@@%bVjSmZID+ zL07L*&?S2Kb7c!;RN)eW&A4TrT(4B;%$z)X#-u|J*wuW%hif)G_}7jZVhW;?`1*b0Lf!qeaFZs-tAsa z^qAvh1#nsFS|DAIGOcWcD}w58*f1jrS)vC92jf=S+B}dC8K)(jFs^6!SraFZ8#QXu zguOqtc-O7B2&sjK0nTQ#DQ*5nM4=1w!Wktrh5}{r;VzIMIPoCX$b@;KTg1bU_=TTO%)83qwe_(GaVswe0cSpp$RDF}+CD7JnWiPM_T zTxmt>D_I8-AP_mooKPVaSyWl_Xo($3HskPN%87O%;LwcbXb4XR84F838YGyUqMwDV zw^SFx!Y+w`!I}aCEXqgC6cxxSltFxZp-cWEN*4@GVKaa-!}Nz}oDI`>-37)0So1Uj zt|kQaGzw`2&eF%o;FC%pR3;@D@j+^XVg?a=<);U*Pax*WDuxMZmGH?<8O8JedSfUN zqhLJJRYAeMYsQ}rgcxXyo;=z;J|I@f+eO@rI45cai3&>vEkKz`3ZkIKJ275PxVhQf z>(C{yeY9rc;@OS<&BjkamS12R*_Z+q21%ZO{My?;{qgBvKkm>hNtDa0y6P08Zd3^XwBitOBa{*A$*?lB|ReYoa`&wuAn z_g_1A`UK;H1eGXKQJf6fUY~7I0hi5zTkCownq})~Yjbl`Si0+6{wzy>_`Op$Hj|rg ze|YlN^YUgar8jrN7R#%&(dr%5IjD<$_y5LU{`||?GseeBOHmVR0e-x5zY49Dmq*H< zNnTitAwdf_)=5-mtBNW~niniN)(ri^AN_jbR`X?+LRbT7u>%4dWzO>PJ1jWsqF>~B z@$DsFuqS?Ud*2=|vO68b?h498nTN2cqJRrT2uq?dEb?l;qu=8&bz zk}dZf0e|ZbT1cQhvq?|*%EPkr>K&AZob*!)zOj7eQ!l^$ z;*0M#R;|xOoWxmEs-jYhqDoj*Q54i_74u~vA&dgoZ;wbep}Zi^S`$XF?7%T0fn~qK z6-5~L!QKL$7P>jmG9Q=5Sz$0IOR7@VY!Qj9*4ww7HEFjU=4~@;Lhp#KsWYdHAKh0A zuz<73vLr7c%x++%8dZ>4lFfCjM)5Wj-Z3Bx>ncy|B~JF8g|HzU2(n(M8M6Knu3KT4Hu*>G)9t3vXY=q%(hU*?I&>m41OSx zMOjK*XhAF=+Qw_mVO?4)VoZv^2a|^y8DAiOec!c@)83f8|)1EhEFz%YUJ8g zXON_)D3)~;+C;kBjti|lQ=B#z7)aBI@Pw`ksWOQ&4+F)o;2e(-)8&q2qzQGTz{nu^fF!i20Gh?x z*pfhsG*2s0@Yo-(+4taYJ^!yaCv7t~?jJJj0?(X*E=Ez@Y<7(wGq7gO0iQkRjvLS4 zd510DUAgw%9oz&<`gYQ$%NFqd!w!53&J=}&tLLI8AKOc_KOLN=i2T_1yKxi0hMsA z2PW;j;G7@)>Z6SVKe*_`j#^|-`Dxe3(0*J78g5H?!%#v2yd?Wh;djdD=@Q`)B#p{B zAp&=b&9E-nIp05-ppcK$IjWE5PhkBU`VFi+pkN+q2#1)LI1GXA7$Qw>x#8R|efiK| z-1gY|kJp*EZn5ydB_|y`uCF^ulK?;u61g6z06s*SJ`|jUVA|~s8*@LrJ)IMX*y<5l zV|rdinO(^{%IDo6f)1F0;Z;FJ39$NP6YL*!-zLEq0wxn8DFkDsAQKGFQc!)a;qwGu zFe>02Bk!<1Z0;g;ZX}958jZ!AxU-;_u1W%n@LWe6M+}_w*<8E5sI{=2`hrotony9} zZytHD-04gsbE(n1eACe2zh8Ur->FjqBsV{yYuVZP>JS-NyAzrL#++v{y%TSr%K z=j4f_W=^6h5C{g}RM7E9j7-3y zE80`?-mI~3s!gqz%u{T<+3pJUKH*FycY>fS8;20RK6w$PT?P~800Ox^U^ntYpX8%h zBJqC7?wlae(%!}o6Ll0LuzTnwl=3w=B1v`>hKc6e0|g1Rui&6irYL<9YB^pcKmz zSdHMI0>(g~6#%#6^?D7q)V)|pinYL;6~>yN`WIFM0TCI^u--+C4MOr_ATy;vwKFk= zW^tg$k$s|XhE2wXgsuFpe1COYPn)|!a9E7Oytk2NogHnT-eJou%it7*tBS*ALTQ1j zI_GJVD3dg65)b%X<@mamt_8RCcGAp{jLQ1{!M*oCZN*?~%A(nWn};Ij>|0xgy||ow z)GCcQ?SK89TW>n=*dzBcu1|mnt#LCc&VmUf1VncAI3#bAF~(HZtI-n=UbEkkXaDuz z%V%#hebc6fw5el(fjcm4&7s~gqx(1Z@At(EcUUlW`O4Mrujy~=ZXYpeOrECHyu{s^ z5U6;lS+5ybszbXXRwLMWTgayLPp>_z5hwRN_P2?P7K*{4+-(WnrdAjq%rKr&)24j9 z;-drhKlLwv`^Cg@BT`!yqX>5#v2=F{z`~Mi!68sGyqff$=&M(9Cr7q*L6V;L&10m> z&-=kG;}*}Cw);@#8k0j+nZ5YKC{doI6Smp%rrRI*`wL4?KjpK>9<-a;zp9fgF0qle z0Y_#CTxgpvhMcxQwplp8U$8L)B_}!6oJ;Wkr|3IzTf`|T;AR;guhJM#L78*wuE^U! zO3l6%J{XfMcvB;0j!|EWB2D7mw%uaaZMGzEv!a;9Etfchn6j&Nzyi8*j9B<>5+0~v z`RSU~67L2n0dLGV86*e68AQQBT1kI+Kt}I`j#mMtY5Q!bN|3lym>GkN)mf9 zvKkm1Y{tzZ(fxx1NtU@qv$Z9LfV4$nS9hC?>|J|dtzN5CYqcP#R#Z^w?rHDq?e6LB z7-@)3U$@d^F44KQSqbxx>q(Zvw3Urx20;|z%1daRf#;D#Df~wfW>|4YLQ3XbYoe6y zPX*jA5WexgJ^rGoqn3X)3JnVZiVJR=Q?vrxV&Hm{J*KVEv|FC?NOFK72~zgoyz*jn ziyRwtj_A=u1CZPb%CrD=05T=KGa;B+vl*q25tu*0WuV^@FQy~kPK2m*4Wl=@gh9|} z7#~4oi1j$sWW@!=CUJN)%3*jVY3Atp(2eD?G-v{d65qp>hKV3rm2)RN75f@R^pL~X zSZ<_gI}}kSc4PeJ;jlFg)#+zJxPu8G?bnyERZvg?!K4s;8x@;WQDTiAcWCR4w@|4@ z%U6E<(pw*Pbky_Maev}mg|nSQ1I=1TXHQSNE9M23=*bTrn_#gaCGv({`@KL=BY=~x zhCGbIHS0F+cEIT$CfWEcrZhJ7+f$V2Y$Z3y@Yz?V%$w01XxUE+0(bt;L0706oBKyk8~5=$@9%!VX@7a-CzHnZ8LU)_ zE-$8zDME8axg@J4Dc4EjEeRc%RD*m-*SRRraVz=GX~%|P<(!Le9=BkQih{z{m#7SS zC8K2$MVd|6a@HFkt@+v+SDtslO|sfKVr=*LF}-6(b?>og?v}GAb@ld4oiwVwRyQAF zY=X%0Ksg*FIP*>jNS9`zp!4lgmiNnxvJVH)Cc^W;+e1l|=n)qD96=Z^=wc&G8%iG{ z*0SKLg~B;cQo2&-B#G^jLU@C+Z4?6MYlB!o<6*CqXFgzAM~G8Jm4^M%mW9+wemHr$Ll1n=!$x5(QBUtO4dQBQ*`f zt(GO6c5f#m&GwG1qvrq7TS$hu$qU^gMkGT}un(1478H#o#tjaHE>RmPC>O&6AooCF zfisVpqzj`Y@H!kKBBT)H?m0YCs3wwJ0SX?XA8H>S;!Q%5sU=Mhz(;xdj;etbPa0qZ zM+2J;Q;{T-cr_;O8Qg9I8_Ak2N(qBf=_?kHP(+Eu%E7CWL<}(60SH0)4cZE_fkZv= zl5oEB*N+nPRUkJUxr z*@$=$GzNx7%$)Y&+bi}uX51P~*RA;I?Pc$a zJiG1ohw@a^JL>!Gym0Q!iQDhC)ggOq71kp2t~@n?}fmW-#G zT|SI1>4FduC6UEhGFlRF4YP$)%zl zBG3TuT5$ugZ7rfeV*G)Ni>1T;obd&l)w`}EpsIq-2e239JK<J zC!7a@Of_~pRAk|Kuh`Sqf=(-7AVabU6m;pQ7c&Z_kYQmw2MbL^TK#8SfYeiX{!7}$ z9zOeb?rB&!${iB#5{Q+IA|e=_-L=h@EE=w+UqTF=T`+aj&EXK^4)a)O$=~)sB*C5B{AuDaQ!A*^!Cmlq|cVZ#OcEfj0s?8i> z+z@J^w7r5}q($D|-TChGOON}^K6~x5FmAOXcd4`{(uppx+hSLUTC`Py|M~Uz4>{`F zPcL0IZsDx7zX2h6kU7VgRXi{_Vb0`_-dKL{(dRz#$E&;AYI&a9^CEP9-_doP957Z* zY!Vm4SBG-Mx@2l>moba4##4{u_{@_(+u7cB`Z+iB&7BcMl`Ks{#fl-IH&>qK=HD;~ z`+A~WwcD(UG)znBG)tSUM_*cY-%~HN-~Q-?k!}0$yZad@95{K>*s2WUxD|%Bdj}O< zNw8w2u`m-LSJ$gci6lxwCN0Qg!yq6`O+i&Y;fv4h64#aFWR^bElLE>aNM2sIeG1Oe zYGM_*wD{mc4qH^;Z(MkNXRj73v+Q%=_E;tv#1=KP$Wk=IOR^?H#dBghEzyBxK0(KQ zg`mKIpocP+(VIO?31lpcW%%(qo}NS~BT@qo!`@sp6S6h}ErWy!dw67yg@Z%>$HiZM zIZG14L|ka*@ECFTHHVgn*t4P#V=>mkSe4LC*c3oy%K6HX}hZ6=RsDP!_ycZmypqWdE zh2SD;xO@SJs^B+{AOpZk0zye4B(|QI@A4<1X>9mx4b2)+a2yU0J)$6vzy!W{=YzGO zy;j3kRtr3xZ+{C_Y+0OdwZ&Ay_@N0^gXJ0q!()Xs^Au*HwHj<$i1`_uP6eB!~Y49Q62#Bc%^uH^f|SmtQ~r1Des za^?ME(mizdZM!dfxL4hC>%~1?U4xBg5O6WRBFVASv?L?It$@ke0~v;7bat;={^8bh zCf{a;7ZJ3_VMm=4-H(3?ykQ393=w_>q(5&*_;t zZj}gby6yhyI~;%P*DrnY>6a?iY8X}xNy76ozK93M393R{Sl~ef3ia`T#W1#kf~}pi zii%bUF6RN!eg`c zj<_J$(EJWr0(5vRl1a4TFmfV3^hiI%;r0dRLE4Xnd>T0itR9&a1U<=^0)tlyT5?l# zTtZ7u_cDc@YjOTy<$&_LC%M94J`SPri?)|RnE4sSno5RWQfLGP5)CqQP9dSoFy2?> zM73}%&^^Yr(Sr89&b3qER6=WFL6s$BfdHm$xuq@BR)CYPPRMoC#PtDyC>us%Z@kUu zi3&kMdNL%Ms2QONxi9!FB@GxiWB|c!z&D9X4S{t$hmdP*Y$3Jh%ec#$jEk0p!Y~C{ z+GGxu+I@wVh$!2raBRT6$kC%%(1LRS^xkb07*naR7wE_4PJGb|IiaP=_I91 zNG54T$wCrW)4W%FPz9%n!Y3%^05Ym!A>oyU#192ZMB~7vK>nvS7t*j}Upkk;hM5pd zlFAlv0s@kdf=4MtX`wlx2y-t`3n|(F(p>nTpnMZy9roFpK}Dmb!8ZH20RoLV7WUK5 zXr#hK@MsB0lrh{u2@BLklpY7PNP#%ODlreGaCJ1ngq0~*^(g-M^y}5GE@vAhmUBY> z(HMT0s&DV<5fIhodlbtkgrcVfh0IF)hs4u-Z@W|3YNoUh)q4A@uP*!a-Y2h%Dif!U zi;XvLbFa?f2w5|fGCS34lbm_%G}=H7Pylcj$Gu@5r6>tHED3`Tn(8SNu^q8>*@I5&E=D$ zC?-Qms~OOjrfTCL|18vTY!kL=o^cKrBS4z%+k}b$Vvj zNgRLuiwEEEqi=3_{q5FJD+sE($ekgzSt55{$|Voryska7V!Ja3?h@=G%Znt98$(4a z8`04|Y2J*93ufK-=YJh??DFmq(Qh8)-1=FS|;9 z7A56X?s9TsxPIpe#UYNHToDM`W2Xc+I7-0Yw#X z4AK(_;tu4jOaEe!X-VT_az!4MCzG{PEjwty&^*CQ3q&UY3kcm6!D@XxI2cu{oH7*PiYtYw1!ZrZa!|!# zWQ1yo>=eXUkoc6iEUXS$Tn%w&I7n2Geba29d5S_%o}bqU2~0`Mf!t}fh~P++0<2OY zT#3ppd{36{H)uH-6T9-hL<(57kCB* zMuy~Qb?$~M8XOpCa_J`%*bjK zJ^%8Xdmi?!b=}<~$B#^hn%Z7z=DJmC)HvJxs;fS@X0uxR@zYP1(je7pHikBBXzy$<^Fh<=vFB;CXV*E=|KwHqv9NsIY zppw*4`q%rr*Dw{ z^Sf{xX6OPyNtU$+n?gq=6SPO{ z0h0<#HVqUA_1o!wh$mawq9Q|)QjuOc54WUF;1LoHC#^+{qUG|BBT4f(FX+w&d?tw% zxmOf(W!Hk9SyCkJw}@VWaK=aj&y>6bJO#8SEN_C07Z?B@Iz{miBQ#rZb`A+>Kz5j| zp$ykLYA#|S74*$O+eM&noB5`KlI}8Ku@c1a$mR9>i&(~CdMt9su#QlC^b6JRnGdoI?%JhtNUJwRYtvc1#5xqJcZ4+#ppsO@$a-_@o!Dk|58N z5E@HXuxw5fT|vuQ5?)z~wBiQgK2p%qu!l;e5hu^RvZAZ2?poa-`6%24DE2Xdh-y{) zw$QvWcOe`_)J4LDVD68CRzj4C05SkJB^pQ6kAj7XFY4x@XL|T*ObVdLz z9KRZ%8d*I*%dIHuDGY$dN?^y5%`of2>r!&hT+%G$LgcQXNkG}sB&%$^1f&)4doBH1 zXkrYWsGy9Na11YLr!23gXR=X3Q;nf4<@o|hu_%caOqd}?pmRWYi7UekSsE3mV+gHi zv#|ezEd7oPDRD5!O*H$2C9cNX>?sJQGbEE1{23H#$|5V8{hO;D^*piheE2+t=O|P% zG&FZY-?*`Td6EW-2S5NUDQ+w%$b-QrNoXZ0)^3eJRuq*=_{=|-9(wqh@rY5QM)xFx zv4FxGYsPYSj#U-1sJGRdtJY_qtbg=@tGC^9Rx3?{sG9rpN{+)gn92TUuoj zToh@_wRnuwAWtsk`S+LKvA()ewuGI%4R>n9yt5f68#nfE7#!NXu7B04%^$wGa@9*q z)lhQPr6)ab&y~|Bj<%h`1IxV&auYN~M+FKQ>axOmJ=<$FNz$IS+C%qUF}b^I^_wf} z-R+sXOwutoR7tZ!>0tl(c{3k*_O-8k{Rc@=gfeg~!r*=?iQ=MhiwV9F*#H21nnjbJ z2-zUQQ_$2Pv}K`RK76m=-uC@$^_q`A-dO2qH@``;ydcM}04r5EFVLPZfZt$EE^3sc zTggx>OVg2)$BbDp?aCYP*>(TZo`31BdZm))gF=4L4K2!KI}>3ttLlDBymrH@FWOR@h7xt=x$23a2iCg#NBE2$lIj=409O`&?8>q6b$UC&KQSku| z?cd@W6ceaxdOST-B2ZB%&p*o1N=nvwI)+U!Im+*`-Ul&gLhuX4Mi2H2=U>VRks)BB z2ST9u*p>F;fU4xUK@JSqwFC!)C)7}(15=LGD@0`$Z?TEy^#*hR`yB2K1X}4&1Jra=UV3N`c zg?Dt^3rmrIUU+^S8-G!%bktzFX@?krBtwZL@hh!?_G&;dBg!8od_@5~L1DjNU)$=< zJX~Z;q9ajwXr%6Gh2Lyrz&_qMP!wsUqI8}yG$0dK;XpH<>Ee6LKDYU22oRCCH=tAKa&Lf@OaA$JZnlMC|(WdUFzrOqNq}~>| zyQ%&kWA7bkSyAMVclSBxhL_hK0bx-AMMYV4&7!Ue z*GO6gQ9(cvB}irv5SSSzF*&_(?>(u1r@QJ?eV*Tces33N=G}YG?NH%UpQ^6LTisvc zSoONO>g9(_opSI%|3Nb*tX?+f?PtCCj_bbo_#dzO(7Vn`qNs4kI6d7$he1KiYq<*0 zeWhX7z+@Ynk1XxZm^O6h@4hmx74Ld_Q{PZu;ksivKhBSFdttgGWAhF>;QCwcdB^)d z@6eDx<;RSh@OY#EI)p*=3s!!3ZRnELN+eG)D6)=t?R9&vI(hZ&zxvYjqPJxWy z3=SmiMEl08v5Pb-AmKVPIiFHe&Ph7B70@boqos;WuhXqwT5#CG&u7IcuYTW`zIkn< znK;j$yYhY>m0^oy*c?KBX(Nr58M4FC*hMc1MuSo0Fd>+DHNLl;QsUDHsgyNZL@{Nq z;V%3W(T~tDbf7OqN*!5lYE8u{%(@Q&8iJgQJ>z^AjB_nq(89IiokEat_#2UGBmd9# zMAu9;mOF$ix39s*ON**$WpVRVU1L*6_(9gjR_00gj^HI4h#)rF)iB;a3$EM z_8_AHs(7j#^w+<|3SXgZ9mv3fi<4pT=8)viTEQ3+Bym+E=;A(%=B3$S8Xd;fn%n)4D!9kqVe@KGkQDbpLan5#jFqaLXs}33DrUCa2Ti?Z26iKiwJwJ| zzFPb#i(z9x8CfqSK3X#=4DccXPeSBl8^9le5@GmWgkg|abOdckTw;-v5sm~d$zu%9 zVGG@9d4?J|L~CjVr$L-*9*L4|r)vVWp)OP56cCplS{O*Fv{1tP@aZhzRVky>0ca^1 zxU0X8wfWncXS>~Ef-yaJUdZ=~B2!P-MM*_1eul0Ch(An`_u{7H-I zZjgzSUY1qy;vawe)e~R(p3To}n!RLhcmD_@3C;PDD2~#xboNmzuD<@Rfq}1nGjf8hcElf@4oe(i@$QiP4^^& zea(qOQH3-biFJJr-N!1Bl+Zm5?%GLT=vkDMnDafUT)d;)acKASZg*_bj4A2li68#N zH}8Ms*&ko^QJYurEcb3qhuSx&0S2rPx*Ek87>7zp)-BYG53p$T@D)tyRu88gh-1Tz zVq{4`+bi*AmUW%hhl~QAt_9X(fQ^$4qHHCK3k7K$I3$# zn{z8g8&=w+(n|q zG(*=A4#$HW>}zx%htiM__2nyU{Vg9)=I<7+$BNYrERkZ{#c>YmEF}HKy2;BKoJDO9 zc)v=8^EY@=G@CX79g-EWrwSpv_$UjIz^+72b^(Wy4&l*`X2->JfxX7~#Wc>b)`%Zt;#rgDEgVTn3qg{>ywZfVIGB2}cU*GP{J0}+T zT{m4>fs8aun~Cc_F5##c560(EQH=~5$Bb6iL5uxXI{ZKF5)HD<^J?~A|K=~&?-}WH zu|mO;69shzxe(q@4e+K=bm}u z>{kDzte8C9n=;lN+Bed_e?)J3e#awEuYYLmhNm}nhDVcD(j076@vp-e#w)*D0AG8h0GuzxLY!KxgztM*}17iLLtELK7nUx~;YEsv;M2anf-DzJ^Akun1U z-WGlip{Wh$W7uE9i6d}_`48>@7Nd@LH0(LN9h)u9gY{on{V~wrm_BP}cX&85v4%mg zUVZZ{YYYu+*|GQbJN{PvHs>A^iX%@57CVgA5%}S?C?$b`?UXNJu~guGM6Ve(giLI}r?%!l1TbkOw~uJf$SV1u zVwY;A$gf72xrNB`B55{0f7SJC)^3sgEF5Q+eUK1rpN!C zyKf1Br6kSB(^^lx<4cv?_07#@`{rBkd-M61#`ES*m^@H{jM$$XEzzjlzqM@i zH@83c{1k2ebn}-N&70Bfb}F3iV>^H9%-9e`F>^;tDBJ}+D_>a5Mw@RFXKB|^H4ad6 zhk@F^|I-8i{k@xJ9lWSFk{VGm(#%G*Z|lzER~@o&!R)fk460~N5=n7@e`e&Ys}6n# zc1l6jEMyb1!s_M^mllOPS=vn(%$<4n?O%K0N$=dXX~&cW)4KaR?wZKl^$#-Msuk82 z-Ol_~D=z=)HLZ60;tS5L5KrX$rh?TK>j5$6K%GySfmRtuAc&n{opJAUmsY#;CTVZ= z;RhXk*fLfu+{9JQck7Pbe|uuXz4tu6_1U%eJi7LYho5Zqw}X2a( z%xeS{WJ>+3CD)&8UI|tSUGqo57#OixTE5Am>a0d{(+6=oGRc{?xO9L)lIO*^F>o2= z0BmQ;hj2p_2WN)VZ`c-HA1NRNudAy4o=ug)?U8j&Rcz^*7h=<*`KFd&N`f+L_EcII zMbV6#=bm-)#h?HFgqbsnG;EV*a{WRms3q89DYT_?@0#OovO0vYXm$oAc1qzUIYe4Y0k~?0#q3<5 zNg}22bo_g1{zPvnxe!iU5nC;WkZli=*|N)mXV~-zoKdh;BE%f1%UJz=S1h2|Ms}T` ztLrF_9*y2RgposrfyK~@QL1a51&JbdR6(I@o{`WhPe#<1AvABle-QG;)VxdBRE_mw z&BvjJnr;9zi1nzc3j-Rq{FVgPz@FGOs5o!3UE)1;wVvWP|r!jQ+Y`!)hH(2R#cla^-$ zA;y+NK`|zXoet~GCksn0Bq0wU0|=WI!lz-@kY7P`lx;_ySn) zlXr(&({iZ4y>QNqZkAIhr|T1v4fkE}1flUpRfa~D%_P3@*1w+j)=%~=STH!)UyP;7 zcUL4X)K{Cj=9umN{+-WmoZD{Sb<4L7Tr{iO>m_k44uKIS=cq(sg5FBR!Cru0sBzx5 zMz`VioXT6qjpp9{!*4kM;tf69KWU;WN)@5j&%ZB9qCMMptvq1vYfe3}a;~wC+?~uK zxuPu+l0vYs7Ji*XakUJck^)XdwT#)Tb7GuXS#iLE+kXA!p?!Pz>>6pdo24y$;}GHx zy)Kt7XFlt=6&HN`+u!)s^{sZxm$0x)#2v#vWuWOm52-u94qm_lSyEK#ml*Z|;^dwg zx%((%&(`wt_%*dNd;9J!Yo1B^`m`e| z3SYUT0lD2ij_n^?yy~C|gTDW=?v9sKVFC;;Q8?s@ISwt}6 z5_gS?eeQ!d6g1Ar^!>;rU zDUt!{T0mfxg!tl`F+U|R0#dJo*y62LG4LfXOiM0#2(7T>I?xytX+gZS2(Oh*ukD#4 zsYkyA7)?MsGSb{aKtr0BOq$*~FoN&s}uhU3Xk{=1Y&>@Zg%XnM!tP`2yBbLyDOU zi{jq?k-3L2`@t{&^6&4xqF1W8k@WJ6B~omalGO-)4YOv`#wk8tL@n#CYV*~2Q6?`F z49te*U1iG3`<2?BYowCuzAkK@ReIbbQ7EtLZ`D4?)b-EFi(1xNyp;Pd zRqht+y~CYXoqoYRkFTG%VqSNo<684*rd}!(VQi7Kl3g2joqWQfFa4L}szAuNtclCl z)o2QaaTeRDAoe98~~fK zG_ov9id^GnB>rENN^ovQ0SdBtM+uCC1#lCvTw*{3;;DZU4j8G3u~fJgRWZ^7gm$ZJ8F})U!zMy?ELb{a1sU>y*`ru+x-3#Y9at+H!;hZVmtQRLu*B=<0%;5tBPu01}K+OT4isXvrEzwNRf}nL>hHVnX zonH6Mvp)RiC%4W%a7i}Sby2^&b+sfX>@HSqHFj*CAZ39Ys#J;Myo86Buca1s+G&H`RQkh&6|dYvpA`+pfwVpyMv9@ zc#G2JbB*XXe&w^c2E$n6?r+o+8pn0b& zZKRZ&&l6P8&GjiQi*7HSGj+nx|L2mQe)HnJPd>MA$L?mU#b58%BeHZfz~~B>3@usk z*7tqkiFI2V71StlT?&7Vb6pl3rsPjaoU!uYV+imv#mj{znk|S1CF1AG$HMsO!E;!w zRM1B;tMm}mQCpY^vU1`A!4BbI7U(@TB~VXDH?y@cs8-3^!fe3;%UJyY>VY09q~=pQ zuoNXc1DvneQ7h>&4j^?+jDa_p$pKoiuJcVV&CWaPB}X5&aNqi^jaIYpHx~QR8B>9B z2g9R$WO&}{L;mN6Kb>**ho0TEz1?aTPOS>Ij=WHOUA0j)!LRuw0tK{m^f3bmB)KsK zVBknQvdyKKKsnk2LdJ@!@;`%&TkJJRA7Cy{^S~k2fB-8{PR&AC! z!-@`WO9D370Z50|3U%I!6<+&{EqiK!F6w{CQi%Xs5 ztG~E&rl!|je!vX>oRVb>C=@bPM}zciQ|U>g)w=1{yWjHfSM)EOH_%_jsVOmh{E)(J zZCZKLR(tc4&m6jF#;<>R#f&KvyS;AWiluW!HDg#*&c;HPWdOC6K%PlMlmQm zNBDuL2)Hn;kRE4NtmHEk72|4IMlWTSsuO53aU7><@1-w1;%DExB;ByF(=DPXE=vy) z{Zsw5P_c5qQnObd`u2BS`QxA8(rh;~-|58LEhUy2!V`oDv+xrzxGEHmnGi_0kpfl# zW}79~2T#E>Iz#A-v189jRpWodnJ548rZ4wr`HoH7qjsw(NNpJTC?&4373U z-gN#aJN}xwg6@^YaRxRibroiJ0NGO@q&2_?hF8x%2u-M!OiB1CRulMQe3=+!EFRpu zXn+Ml0}ntk9&0)2z8pyqBN@I!yaw4WC9c&^uaupFN#Os-h(biKh2>_NS2j!_WmyV> zC;`zK1X05qmR}emEqO}5s@_to+pm271EYKP6j>P=R4e&rj@(8sin8v=g2R^o<;l&* zzT{mu-FA1Q(KMAXS90kV!-wRW&wqGUlhl~HB3Z@PZA06!($KoFy?)%5#XGo3-UHsi zny?3tSraO&;qw53w8BTE%LRQwId1ci{D%9q;^gpo17E5GYFF&v_+?|Y9LaHYS6Zcc zp2SI`+5E4ou0QeA4{VK+nFr2KhlgD=V%G}W;7$}%A@W9l->zrYzu~NtPk;Gwy|h~e zCyL;;MxzSD03t{#eBg5O8x10BH-uqb#9`kfubR9kxb;g@Q#pvnyD@akFGTO^r)q*78DB=Y$>!kt=+eI%@eB*n0wQ;SI(X~p^9tyj#KZv40h8ZfCScr9b|Sy2?EC+Q4Aw4 zip;pHIyH2YlAD@()tMLk;j#6z4?k#Z|48DYE1x9xCm4!6O9uM4Jp9ZD-*(oERvpso zb_}&otszBn#2S`cHUrgTI&6ehHE0MW@*ovW09DW+51iff3mciZ*XzCVC98k<^$SLx zeyUe}UF=3zh&gb_ZguG{Ue^nbT=|x_f9@B*zO&VC<(WSYz=+rz6w$45U8#c27Ap$V ztc9cU!dSyl;uyun2`R4;8MwBpIx@P~?H<2+`5iZYW${pJ`-Ux1t6f&|Mh@FkLs4Y% zvF_ZZ3m$xY?bp9?Z4@VkF1&8C6;aY**-B=~|G_<+C?Ah;(k%D{5^G9{kkJM@EEqM# z$x0mpWtc;_wc1x(QA30EvkF;EA5y~zF!Qg1@`_w=ycgVNFpyfzGw*~g;VguD2p*Ka zpscB;STZ32`E~`%JrLkHOEE5lMA?EU#6#>qX=-rtkyX`(9&^}1AAQH!8y|Vn3^v@I z>xS-p_XooGz+#kjI@6ZSFD6br>)gxU{H`l@?cU$+b8X9u8ZLFCk~<{G{}IP)G!TPA zoNEEW$S_-IfU%hAxO|0`PX-55k5b4DXg0tcWouBLj4?fVMQ=c{Zy918u{``7RhJ)j zU8t>B!pSOxoxZ7EK_JWBHm^HrR*7q?)q3=)4X3>JLlyEXv17XRmS4L|nC2Xsb1*P*X$b*T+60TO`b0XJ3004|( zyENp2BY#V|K&DNslFR~>-ariDeiQ_fI0{-Ca!j-+LVs#4f)|9cHWDxsETJ0dC#?bh z*lII?Q<`f{{UB{9*B_TS(SidQ_j*wGcrE|DnFTkf~d z4T^zUyntvQ1uNAX>!_&kcOZ%K(8qnCmY0Vtp09WXwCD&FjeZPGtNN)z{-n|P-5>t; zmUn(SUO2lwVW3D;;Zgjk3r|uN&B1|fkN@MuBM!Xb=T}Y}>`SvOjwmO=gJr8~c{;p7 zurZv&WgxA6yaoGhMa(qE6r~3_I?9UD?NFpoeeFknci-O^A9+x3--z`cZM;q3Rm=;U z3=VC2YVE5}Jos~${d=1A;y3}v#)>7S9=0Y)8em6$c*zXA4MEkKcT{vo$;Sz^SlC_H zn7r3L^ED@Z<4YIpfAUE;#H1DBaJ+Vdchz8dnr96=Sx6FgxACYDlN3GH1d<60<{8lSo>I;ZP)Az+!WvKjyS@K7PD9}Ze}u$um=l+|0$XJ zS4zk@4V}|$$XLGk>PMzaloko&Ux*=9KvuN78upj*fI`Yf2ZP6EPr(dnX0+K`2~ZFL zvOdtNQFZ`=0;|y?HDDM84F+7qR?}LK>v~v|RO<18GH^I{tI(N@-atzo#Zi`}pS|S# zm%M1j_NUfGgZ&lEMJ5jQYRZ$LW8Hy??U^f={p7dz9(uytzx17JN76ir;tGN0uHB4P z+!^3W3cQFUO^T0tERZEPJqiY%JlJ;1!iPN6ULai6~=(l~p+3q*T3% z;s3F;;%UL-E6Tq!J1D-3b{OjCk*brd+~!qOU?SV!YVF-OcJUQISpAas-TUO`xvLMU z9#e%GHZqFKxO`2P_lS)~oQ`Fkjhlb)t&3+&p4iKB_LjVqG+iVAB*4x)%cD2q5f~RE zOF^Tft_R#Bz%t^fadKM01=GJ+a_Y;(l4r(QWgstGS0;s3mfeJ_5$DUehp7UsBuQ3N z0k?l8M1p=>vr=-$AY)eQV`FgjXt?T$)Y%$>ASmt> z5@qt-Hsa*A+wXtF`IqY1bNYw+i;nLn1BXNmO|?}?U*E{{~d?)T? zV^MPsq$NNRih~8|UdN*a*rFjTyp1=VB~+KjN5q9^E28-HvoHGH-=1D@#6hFOBgWuZ z7VnE|P1+c2?ccg{aU=fjRhP2FYCdhC(XPxda2YTz3r|f_p};f}cbpUb$8|uJVzhz* z1k|DwjvKi#QMcPU@9dX<;qv$Ic=)kc`C?SBC)KMFb91h=HEzeVmoNI)^Dh1UT@N=K ztzJ&Y54ChY7x@$6w)ke&nwkp=62k%<;sd~FgAEH6-C;)jsIt|JvR=A${)}HH4NrV4~Me=PzGuXH31|6W=@T#qa+1PkvwcQm4peQnJ$ZibawbB)PY5 zV$7{51;R%TI23-ztc1vfwg7tM*(q$2rzjl)Gk!P=m5^4oZG#gd7hq6>$HABadV#mA zb62ui8Wk}TS-Nm1&sEVY8c`!|G&|kmb6>sY_>%xe)H+6!{1b7; zKIv2$+gSHX{rn?OeCNv_KIwROi*+1FI_w*Or5|>U%m-lA;+av!$XiWuI^iD$)gg5V zO%E(S5~R7JmM4wmulGH6=D%GM&70FV z)XX}Wzpa>*Oj#J-c7J>0WB+*hkq2D&zn`Bp)UIM9<1R5SE#I_6bKz}gR*QFl&xh8; zjYAQZ9Yve0Sq%*7r(4&uDE*!E`c<#}=x_eIX5o>`T-S4dojE-Pi&{3?jnO^(%&uKO zz54Q*(8$DD#)?c^F;EfEvHi65X*4s5`r00&7Z81{G1P zF{pKNefbMlIi0I!6h_0ElUVA&gA$nj!0g#3s;#4Z{}5 zWT|HuM}nG3b>ZE_bA;_8u@jgfzZT`Dz#?2H1WCm^ZT?#l|TBrF9yBXPjO|l0mC1G@DXq{S{q!FL_x{v(k?#CCbTG1OGt)i`%4UVBABsYt8GaDY+ z^US8}fBLx-j#=Kzdkwk`RdhHcpu(XivDCr+VN)&48jyS4WrTRZS`l6U8^bQNPUBYV zSy`wPk6T$mrkk$0ZR(PFMHLWba z6{?8swW;~@U?L%R{7Vf-rNc$W+#j`;nN?U7NOffxBNIne;I(YYg4`B2-+0I51+&UD zj|`H7{@qD49vSWJ*|_oS*S<{C!5_tzz_M=?gCd$Pp%p}*?|h;MOSgPmo3W}{9r{Q( z1?~>R9Luy3Bq9#P0@6eQU}RHhDz))I zjl^QU?3oRdr%hfsce-}+5tX^SA%_NG zbWm{>7)^+m)VqPAQRAQ)@3IyUsbCZ3^$=Qc5?+T@XVJ1ClQhS@AzFiY1XF9na*?^9 zV{7!Cj(N=7F_N+h#-ga4)5lbtu45MO@eN*yokbRLQ&EZNDC_<22(JF4b!r+ z(_+(19R!4tLt5C-Vg;&5JIjJCL~OxkM--f#LU2+-_xr9_C0r93Y6~Rc|D@Jttj;h% zWm!@KL2!wD9XaP_sUA|qTwD83|MGwOGLAAVxdm%SgJI-K(5ZwPD1nVy2OP*XAz(Z; zJeq85P=gw*@ixTTs0!wz;gRmjm%Vpb+rgoMw3`!s=^j{xEJ-r5Z?xZ-`)~fj)QN+6 zmK*MDz$bA5%-l-GalC)5v+Bj~-mrgc=Hi*1{hcU|sM#kiwJubyZQR$|{LoXcf7LNR zzUtyi+wwe*jBvT2AwsO?`;o)$*NjStCu&g!-a*$s`J)>&(9(A`H&J}X*%#gT=QT@K zAJQEj*1l%Lkfqf&tG*{MqgGswc6Y3K=GtF;_OzEA+w1l!Xks}M;cPs8la-1KAVP^_ z!`MXftO~$_9b;{xBEP|nTM!KXVq%KlSOZ-NXrqx_eEIi3_qCtSU%j$7HfC&88X~^E zNLJ6yD?HcUvt!qU?$~dx{lcLKEhuu=F1_$=-ZfeifaWB4uXSW?Z4bsv4eK3GQd^vT z_8HE|6@7Yf#nni>CAEMFI#?FDisMsW{ei!&-#&T%EYn5%j#Q+v31S1s&FZl zW&44`b;RC56ARYT{Brb;T@3g z(0(O|1raiWC#tz^0U`zNge{~%~;lZj&^=C#n^?XI@XZBp(dfHQi$n#% z81vwa33XD+3Y;XxEV5Lb3+zC>%Fd4~a3z3YVB<7mgrKJKNqBh(89wOOmSKSvlwkSl zRWHO!pb1Z$#>8drrOYtA!9PEY$zsLW8kC&>wZXL3C~%nB5J_4{f}k}q_P}C1v(gpl zHFoXUx8&q^ClgxkjC)q_LiuS{PIuq)I}VvY=hkblXe);jc#}mF-3cr2T1r)!jdS1o zrK@kab@AcL#(XmwzSWPEpm6HkXt$qx@bR~tcEVL(y|5kW%oY)(R_vn4zaaD4RB4ii zvq@}(QMnWXGP+WM3C+UI*i( zZv4roU-jZuoo=@g8^P$drb$Z4V0i0{sEGydOIipf$0`_uGQf#{5_(&cF^;0^mqDWAObd;nbn$3@URv5JI#=oRG=*Lq5>LGwGfe}qmSZKdEy$NEYFK(vvt=! zkG=Txk4`;wQ3XIN6hYPKj!!G|q}|@We&b74A9CZ5KA9KY$RGDAk&3ZUK~db`9D9lU||yg@I@K?qrd_y5p$vGVaTv+EVCN#vJ5c9HH$#XpkyCw|K@dv9Pl&5;*_k$ zmdmCT3?L|R%YhyJvliqSO`i?`NoK3UOyt_=uu)2>V88hHhC+X_F>)}Q-AOOY`daO^ zn|FTj{a60_jt6G0IykAEVlQ`R4E&o)mRc8)^F+P2L`hObBb9UAy>rjl)@{}#r=D`; z(MPU0<;0_oJ!}c%BX=KikrqXfm9Z+TXx`;mOX?_W9l8~;Bpei-tMP!ww;mR2g8P?w zA|j#iLM%-NzEokqnIx4`8B15PN4|M2Ypef0H_=KNd=rbrO-}@F=iYrc-}=zQ53jl9 zwuc{oc5`c}nM|8BdGb&d>}9>oM_j&r=eQWe7Nl~Og2Yjy)!M%CdAohr|NZRKFFo<7 zDhi6-DOU1v2Dh2k+yl!mF(AZD!i3zBwSKnE}>^gLCut2#o6UYz$Rte5zt3`h|eAj{h1inEqIX;G72M*gc z8|S{`vsZlQho1ldAOJ~3K~&%H$EC*}Haa{;J_?t%y2Z+iqBYol{)x>mSUT+CNbj@WLYrBDSsT>q{r z;AtdDvyqOaJGbuW?i!xlj_1stvSQ_mx14kGLGxxznmjadsGr5JtV~gsJ27^dxX7Dc z?Nu5zicDLSzT6+cg9AoRELt2F3_B{;m~^}rjx!85*nyght)$)hWAY_eu{0_(8aGLL zI$5@7_ud^l_g(XwyKleivF%&8t=+m)$Bjv|rwk4aR3j_0>Zj1S;LLCoi}->=OE>0b zUn@(~Eo+`$y<+KizWR~F4qnvjrco6JIr~{y#!hVKEg%&cOFvvG*2W~*viUidO8#!C z5sHNm3M!;)zY)m}@YM!8!MX&lj?Dt&AImtC<=(OYi&`4?!WLt#3#j<;nsp%AEJ0Dtn?257dW2JV} zFsAgN*Y8f{tr~F!HFiGop(ocpyE)H_ ziBl)7UcG$r^og$5tXqHA8PrXqkXlZ^7G)VH&4->?`{I}VM|;^)n`I`Bz0g`Zlho>K ztb26r#qT}qGar3R+UZs}rsP|!i88do+>jffW6Q7-cmo8UsauQMWe~N2NHCzqfQAr@ z2z6Ns?PM*NWDzJp={Jl80BJy$zq9p%EJ~pQn5wcO2}B=B%qHK5Q3MDO*3JS4@g7?Q zWh^4@ZDqLSFZdLJRUxz#y%X*SYbyUj?pN2MNU_8&jR6lrl%Kn?j3$`&ARpLHtyK8^^f;H^`}RkE_>am)wF|s z6NdWx2m7i|mRXtgQsTdT=UnA0Ij9YkH!@tw?x>NZVWMVZ$GR=)uDu_9_c@ndbZ!OK zx@oTwH;ti=9#*`Pk|05#rwReLwg~7+z;w;RDao4zLPU@AI4rN?2?f}Q$zp+4C8A5q zHAqT{WV7_Kx2%0p%?^p9=drR=3~ZbC(J;lqEqGk+BvN2Y$esaz)s@J9mV;qXVb+R( zlYYk_J4o6LJALRONpERF0+daEU~p+NK!HJstW~lMQt+S|k@zPwsj1mii)B*SXkISh zGeYyK9)*u{ojRCQt77((I<^spTZz_YWbc<`4-Si)%*4|8G zdN89Jjp)qRUwGpk4=;G(q21AuIQFXPHko@)SL3V#sVW-V`sfqaU;W7nWc1Rk*=X<; zoV<_dpbx?rzYp{Zjsuev`iYanWaTQwiHu7I)gK4?jsA4cLc&bqPlkB77%g^pn-u^1 z{Y!dpx%7rVJiPeW1G|pZ;G^oK1S&G!;n69}7k>RGx4h$Rrw#VCiX!vxQ7{?ypT`4` z!9r}67$~wsmfA{Mn>1VB`SH!){O+|+ZrIw}n&kBxVigh(uc-lr&@e59O0Yq6dzLQ} zhO|Nw5pv)Xa6MH*(0$`Y^?@pyFpjA@?#P3Gd((e^^&8jx*SD_O9yewzncZr&vR+qt zAVU4;7?>3btiB^Bs$b>Z$^%#LiY5;APn|MYO+QP^9s7sB{L4R-dpo9K7SEqPf7;N% zgrSv39DLkS%T^sUzki^w`h7ELCKL~_tM$rVLEW4VuN6HiljfCUlfquWaPuu3M06vH zoiWrE@^Mw_+BeD90ag}1m6LU{v61d$>o)!6!6zSkWbM8!+qUl9^UT)0y-uq78bcEY zr_7(x?C;a=HpvR`>$FoL@63Heq+*pginO3;-gw;QJE!rDF=YiWk~rGAWB0yw&z$gr zL%#5{%U2z8V38Gti!KsX3Wo)*7b2m>FOq^&Rzrc}=hqDOpY09VWAF(g7-FC3Fq2Tg zRw;3gkSB7I3Y?V^5?8AXZ5c2y$=r04}^-ZHc3-=60wpuINCGV(Sa^?VlCpq+9ZVr1z1q3=H&ui5JG5P z9E+~*R#E;^Bb!BhAj&z}qR|Lc;M_oO%5cOCViJtc*q4#L0!C&322J7JL9{EVOq%lW z2bssB?Q?yek~seR6VI)B$vda4Jh1HcxWv`lnaXZda=w1e`Y&GirVqXMtg&vd8S_O1 zlAiIJTQnQZSG?xEx2@YXbG{=pl%%=+;gt%@Z@mBU3*Ys+&wc70X_^v&W=I~XizozE z3FKo@W7CIY^eTjI8pahik2D7e!c@URBY>YHUa1t(`^ z8cEsh?s(+M8-DiLSH0o|V`IHmE2iemkR*O11)gC6pnnQ(3$6zU&k7Tu!6$MUU6wFe ztYBIT-GS{!)(MX`s;<#AI)81WqfMhEIsJ7P-uTx?7aX}P?{t+I8Q=EIxSmLM$7AcB zd+>X6=FZ4^y~=hX8mAaaf#!z9%J!^xN_~U%mL8Gfqg;US%!`-a)+G({h_NlJ=key5^))-#h=fBl3|BSOM~{ zF4Wun)W$#GaOLqwE^|HHpsm*8gqItb6zhno3KVhh#kGGbg-SrO2_j7Y6jc$_=LRWI zi<$;wPf7b_*+h^TIScI(2H+VqpFJ%Y9r>XfshhO$luB`ND%-zcEdos;I-rmdz&2Wi zTvy#>gx7(D0-G~V1hC->riw;c52@IuS}{#tb1T89Ce~^+*KOSP@hg9P?RB@8{f!w* z=QrZGJJzk<8M~4R&7A>UVC8s@>f@Y8C1B_7?(xUODvgcZQIratmSx%*O^0_6SI;q7 zr&UQs(kxo7X>+D8TR7*KWpkIzo-%Rb1QjO}rcInSX>jtSp$S6+tq22E|G$0&!gjM_ zq}$uMci-r~v3+|-M@Pmg7_@80uD@^G^2k4)e|r6nz5Dj)bhJ#1u1(5zv)O9)O&sVS zXhyMXM^xs8Bi&u2JXdAmf9Y62isUM&Z5;?QXl#RBwPCAe+mSe+1u?$c3KU5T zI$^g{%Ljz7qGy%BHR!1dKg^G+a}wiJRSRS`3XT;5sFX|FCQ&bL1(LZ``wS;_UQUK%NJ$69P{*< z`Lc)xT3gnv{kOAEsX#`~Cm3nH3GMo+qA*@5a^)gy0-GQZxNuIFHQ*dDDy?Z$cqOb% z)0yX7c=Mf)Ej;$HvHimiUZ7W`|0bu;aWn2#cI1(@zqtBS70Bpzx~)cReZrXCim8Rj zN?eZu{Nb?@=47?wd>0MP__TD1QECW04PJRxVn3=+fu5?VLDiLhh<|cws8pYP8yAXKeHOE$YZ+)jw4d3(iuq@6`20 zV|i)q{M10ZY1j>`7^YIwI?^35mnt+}NBtD-I%9v$>n-Vn@#Hc86@Q1vwPB#hcG>Wf zMefEYc4{u&zlAQS0=CdKOsD~TM9pCWh(`nIDZs?ZVToipTTEc4071g&*^D5-fepb5 zlEem<)a#QV8|O1!5R;|p!nxCa^0kk=`^~TX_V<5%^{;M=2L>k1ozWg>6=g191cXM!^vWo>GUuTi!+^AmZR-6pZnMxHI6<&9>8og}q-qAnbz2>$*-sjH5 zrm4$|_V-U2Y|R*KOc|QcZrH(gUw^ArVIMcXX7$X-tuUo+Dt}+(j_Gtq-)&jJ@Lrau zMHQKhj*ji`W!v_4_l>2Uu~cQfO1M>G8V!>qjYg~0o;tbNKRb@2*tf{5a78tMBCQ78 zBS)eMK$M=5D_k2Jf4PD7_Y6{)$gx(Ll~E&3`jWV?ySDBg-tgr7d9yCL;ytfF?WMMWrK#akKDe35H`3^)^0XZhbY z>d?uDGYpD5x>$J_oV$|e5c!~}85L^+OsP|X(jxufkM*irs2+fj1@=M8f$_bl37ZE0 zX1b7+6~HRG2IzuqqBQ32M`Hh5e?N)oq$y;PhG23(Mm6piZ-l}Hb>%zUzk zVh9CW!{4-R_kQIgW6GW?%JImtwX{fD?ktu&KEmBx`3rsUT48nd)MIP2!qc8M_g#Cv z(Qq9<8+&)}TRL;%m#%o9@<+ZR=cuHCrjoiRS)g%d+BKi}qkFYKu-M_zbid>lPd!DhC(h*huw$p5Moo1cnv9GAE>x3Zb%{r(bLe_ z(nN8u*J-!=&imI_-1dPlnK{$k^7xdJuYIpn#R0Q4(#>{@#>(D?@UP#7QrxA2fYyY` zqS(h*?u$bl;W3AG#ztL(EtkV#wW{9J9qu$*jd`nkWuX5xC$IXsK&i_1Vf3)}d=aTjzkZb~#%P=wfKgPV!?v@RJK z_;{8kfC|vUN=a%KVHTb1_S;-4E;m;2P6~91Qo+`U48j7k-9+f82`UB{VZ|-cbL=<< z3!$V4dGHf8YgJ<<`C-0rp^D}!NOAnCgO5Jypif-*=1V^Jy<7kI$cDY0{<%}9&Y0vn z<#$sh?P}e{DVi@I_lo0Juq1b5xxCpGuJzKA0hezU(r6~FzNX8ex|JekrgHRI*~_-) z*@j(vD(7#r?Ws%Iq9m7YAuNHU9lhY0t2nCuKXH||rjbNR!!^H3`dgDG^-pUy-5EOH zXvY?0;@ky*u3vI5%alJcr6f_ox9Sl5qFNbmv`Rid;NR$o#@r31k;J+J7@gkwC)PDP z>5@e=-}m1idE=QU^tbyeAXNb$M`Oeh)jiuln?WHcP_fuGb}kaxa!rXALY^eUD)g6w zIS^PaPD(EEv%vsjqs2~>pztq3UXyhvWb4$p5Gj1p5123QP*%(kmx+QvXJf1acHxDv z940|ItmdiR zaY*@;j2duI=v4n5B?wAT2z<0yDHJPOcn4k@P?|h2ZGbGX{QwEDQ{ry5h9n?#VY?I@ zSqY*StAGtx0(Xqhj;gJ@_9`9GGfL|J%u_Jr(fj+`{3(r27ciWWiF0djyz~B{$%C#H zpsVCkzQlvu=j$x_x&K4eE*40RBoT%#6MZXqfv{1aoiM zu&*gQEg!&9gsU@g$u`$_7+SNKA`!ks=% z;@7?TvKwx{chTw<=}0$LrjW8_?-t!ERDzM^x{=I0dd0uL^GcJe^Ur(5Sf|r$HkBvR zs5MO`Kh*$Mz3`~U|J>*fm7qY%2Mkf3mCY$rZ@cTEPPIGjW=VD51Q-BFah%I=`9QEg z!J=B=>Oj$27)ZhKFnat$sl{Ml$e?)IR7xhG*6`%s{s`Sw6Y4;kdXG~wPsfH(%f=d+ z5}SI9`zOXtOXvm-$@AaM9o*|2pLiqTHJOkUV^;TBl*tzQmz@*p!hwt+b&82TA+1?- z1^UrDqa>*m&6slW!dXB4_9bhcd;W&&ZoT2=zdm%&W9=zZ`lnACoY1Z$F3YmKDBUeR zBtiniG+)p`$kDyRUHFPfM+`R{Wmknft{}@syaq1W(rhNpX3GyYGL=S{GI$0u*v8#r zrl^&7^?*DvQRa9CDU5QpFkU;V5#~B$2dXjfgX3)p2(`Dr;YXD zTF zI;qW`MYdfGgAb~~g{kp54j6$@%uJq^C02_lu^0+(EAhNmVZ-T%0yS0Z!Vz8tGSId6 zD+_!UhAw)f)%f2qQsG=j*oT^s*9Kz6d2mxjW)h*a{x2TQ{umTWxV)u9Yh2B zViDW&!(?bkmVg!&73Yvm*BD;|juwoLmL-C@;CJray)Unjvf|W^peyUHcvev}o-%cU z|7{%N7v!xQ&3Mn=;lJMhRBPIV!czf$%iIlZaUAd3v1irNxoed$vTH1ibp=4Ts zmUk%qbQH20&Md`F~-xhGR7#s5ph^7T0{Wq2IPR#yYV@E8TJ22Gm`iGK(CC){$ zxUuef_eqDvK@nK&mJ7Tp5O?~&e(a_{KeXtmgS#VReo0(5jIRuL|5uXXso+kLRgx9Y zJ!bh^-~aiMbo701e_fvTv^xRBShrg6Dp-536%i(zDHw+(eJ z6{YeQsKjNNJ5o0?zU>vcQ>(aK#+{eR65=@uPoESK>4`rVr&&58&W!pd9<(k3JxM@8 z)ACvwRMu1L_9RMFE3RNrHa5C*+rG~3{gabu@w~YoxZo`(y-@+vqc(axrfiwX+;D;fE(c?Uxu73$r8p4gqTeOc>14oEQGe(F1 zXPHwL5L5?;3$aAN0PPSc#fB8fMf@FLk7vRV1JZW01hd+RmB47~_$3hPR!pJ_(Z2gt ztgxQ!sc`n!#Q5t71h?T#S|J4Cwe6ckZMv3NXSVu4f?X4rC}eh zl+ZM_<>zWLjxi3pJq zN_U;Hf!OlqjB6~)f+Divh0TT%NX5G)$p=WKKT;RzSU1g?l^6WugNs)mI=X+vxT+KD zTA$OoCD(PJj2lVWNw+`z_zge#^y#mDQK#E!SMIGK=*JL>Yy{^_z`KBxvLbXk=!s(2 zBM{0$Xu}*!Xlkv^HjtoXzr=IZJ&h7i0nErDFp0X0jC{J*9mS6-6RP>Bpc_MGZ6j`s z?Ad$fxv#3wUa#AA_bnkFW^rbIqeh?kZzmgXT=uL?k_wEf*PQd8H~;C8rK=Aabq!TX zZ3^ZB2|1Kxvs^)F_0PP>88Ed-2oT*g{WYKPL!HCXa2K) ze{NtwU(t27#mw#7va-h`X>s?OXI_2M(XRN^ha_c<8N|}~dYF z`mwssRE-OyZICtr9N-Y8pB9c9DP}iIR8MI-i^9#5q|gWMew@*ULkDXBy96GAtTuNo z6r)cDmlRi`TH#7cLCFE2+K?#`*dQLl&)tAzw|I?>LoHFsFX4+QiG!L%9)ZkDkqEhu zB$4ZuQMu3w6Z(!lcIC0h9-8O&M>pO1$KT#{&%@6=^U&I;Kkl16p>Jrg)viK#M^EPN zM21^&pQFSExz&$Q4dTsu5e^u5_4OTe{4X5sp~~Dhz;T~5B^f_jL@%nI%uw#UjM(|= z7k&wep47f@)wd&*;=PhBp)^Ogz*tJWm8E`B)-~LZoeiuYLwBUJcf*EsUw6WU{udv) z^w6UYeal&=EL$*}9^C7tsj1?EC^8%aTWS!6!U+*arf@kF@cK*z&^$mXFV-*~UaE{x zuqbB~K9t)S!3;@U#aAF%7I$D`8!`n7tO}qmffOO}6gur%iO^x-*kLhVvwZlt-pnAl zGQ_`#DpZh4F{p}WB1Z?rhLV*C9p(gYFo6r}$Kb(Y&10^ct!XVw9@rsFh7Z38(ox}% zGyxlOcpo(yBX9|q4ui+{Sgfa2zuDgs)c|zXIC>vM?ZI>~DE6Fr_rY{Uc-kLO{bS9eDunA71HrUppBZXhB~6_xiIv z)gOfy%x$}eqr@i7BpuD7$md@wy>jPJbTduQJmqNRds5e8d9imIPz&x;s2koo*hbR+ zI{FG!okupFYmMUQwQs)U##`=NeB8?3=t#`if};+nh7Z^U;<%XZ~!To`rt@Pi9G|zV4(q}M7%l6uAHrq zE>ILLIWzAkSyV3H?T^WkB=ABKRdJjeEoRT20qqhi!NQ__KD`u2s5BqI_X3(Z$5|On zbJ}Y!{Qck7EIww%=)Pg!*wOm-SypyNg9&kTw5um}roGIZC7*Nrs*il^TUobz(TC2< zvMeo&%J#Y=B}G~}pyLle=+E~(YT{W|_2>e{+|5NbwCR-g{s*6|aE5D-;EyHL3WsI7 zGeKVf03ZNKL_t(TG+QeKay&;BW~9aNieqJ!MgG#iwG3!c9&MoF^laK^D6|+r6>Jm& zE-kDODV~;8sknO$i3r{6@x%Y-dM0ngk+ERQDlt+p!)zRal~r~68ggUD4V$0j=MEQX zRNanQCcBgZoMIVf*~WZ0u(vk&F_CJ;{VI~m;}+JHDjRpc{ruBTeCz2aJ-2Po(@(7X z^SuxK^v1tzdv^W)GVjEF(NO=yiG%%pjkp3RDs~M)3s-EZTyt(Gt&x{Dr?Qc&33bUf zLzdn*OjN#qkJp6AooQhqbtRj=O^~5GvkJ?7fi1PXlB}#Ro^?-GxkVH63Oy?=-BXZl zFe)!}xRly;AGVJFHPy(oUT0)uxu39RLk_bI2yX=;^RNB;i~;cR6B9B+v^iAe`xP+(v(Ui&ml=t? z5reb3N&g$z2v$LG%)*wMU_Gp_&rs~dX);=NAh>5ZjG8*tFRGAN6h7>SRr-oP>g`9F z3g#FYZ9tnPSh74gEfeE%55?*F@rut2$DV+Zhm^{)3$wM+!(3WfdK)%_Si_*tGzx!K zM6N&Z`o)m524=F{gsL{}z9E(}(s|C>iC2t#o{7Lcc%Qz*qrDp3m^F+q}bi zysjAr`3Rv>-Xc$wIds_~1rRZ=Y>cgNX~&iK+uCk{Afj$se!vztREd6R*N?JrH5o>o zb?#-?-*Vrg7aZCd>7xIgrYOK~XBjn`X|K2Ifv0}`i_gC1UydCe?Y5c`qfo^6HDW~& zo6rq4nU*oKu4P3HTunv}NMXZwe%Kzk< zKNaHN$b7Q{5bpF`t1)ec>w{wWV1TY8eki7wQo}BY-r;V4ZN$B9`ij?HaL4^mEP{LZ@$i|aOQRosF`5E-^+7V?z)XqF30o1^^&-OmO*l*{j8j(3cR3u{nhO zWk1EE4jdSs#zQXEI6FaSX#*@~$YxVUtCJeL(`dh6QcZqWc zQ53nZmT_<4w zcwg!15L8U-lMvzHPl=&d&2aUi&h-6Z`hBEnzyVsNmwW+#-GV5OxCosb52#R^TTEJCol;K_U-nL!{GR7NWRa|=l{ zbmmD1>9ueQ8a2y|a^*MvkyJ3Fp@fQ1(m1cg*~w7-svOP;;}eIVn7~yqo7^XqX;LkH z8-d1o^dJqaY>DAG6f~57X32hzg9;d96{;!#8Wg*J$=hRc@E%4M6gRkl&ZOn9;S!6Y z4n=KrsVJKRaEI>-1VCOkS{2Ahw>|LWFR%Vo1u}X)2Qq4~ zjC!zu0u|HF+u zYQ@;T5o5TT$7+9>K@|jMWirql86NF*@~P7%Rcjl0vGiS;{6ngbxb{MN-m!;&<-5Py zy>tJ!zIIVx(nx*pT7IOnA{n-yk z7dX%AFXYp-0zQpGmWnei{`y6lZejV77-N0k&+2!PNmN`$?tTX4^T5jHMQYX9@JO$d zmRYVlV-97gcwoZN3lCj#^6F)ir%hUXz=ER>TRPBckz`hCkh+e^)!*G|*eXH;>l2D2 zwc^%c!V+i%W8xO9h#d9^zp>KJn`4|Zm`^c1g8ej6YOprq&TAYiyJ-}Cv3H^;@EJy6 zhMHblBO|p6*QyC#3F&C5cT!Rup@artHI=GUV`~5cfi#1Wx(h=FYw+(tIN(7_4MV6jhijm?Xeq4}hm>rKhy^I+$q*hilwb$Iu^c3=24yi?_ZgQ+ za86iLB^2c|Yw}PjQLB;kx0}B9B|_Y-<%!kXI=!CnrsF(L8EMXOR57#zDH4CWgC?A@ zRszOoG!|94fRmQHo-r$61%6q!?0kIJrEisE8soFxeA%_P-m~DC!_v_)FS-Um*)5D~ z`_PK>UcTdjr>^0pl7 zZxL5dYxavSM05?~E5Ul{t3UXM2mZ0>*yUq;M<|~XbH8XybY!cqxpU*T*%JmQFPMJc z{r{M=a!I;>RO4C>e?1zK-reqkV-Ekx&3Ek{x#a3^UplFs_;^lD85%6Ar73L0+?+qV zQ+>Cq$xpJ;4yhWqWoL#H{DgwE101sA1t}|ovMbSArm4gbC=qRX7MNq&P@@3-=!1Uc zN`^$9JFJ;*4Hm^)Vlmnh-NTA7Ex>3dco~cZ7Q@S_4)FuO#X!iEQn((K@04NFz>$*# zZUA74$aRh$#2{&U5GxMGiO111nI{g=qc&y%(){i6YJF-JV3}-Z;fs-tqab3E$TBZ- zRoKGiL#GTiUvbh=)*e|sVx-p_-Zk7E=|1p}=kB=w?@vCpe(#p86}sIs*4@<2^32`1 ztdh9d>g#Jol@E`ShK{4S5hWFtX^`FVMw$e}dkpV!+zv$!r`X)9j~kt{8l|iI$ZV14 zwpXOxJS}@REk-*%+f7wkRJdcXT>(Qz@=ib}hGt-ka(u_3H z%t%5RgoGr5zyuRb5+WFpvyI3gFiB)Y<_CypOimWaNEi@c1R@!*$vIhoP(V3O>b~(* zy;FOywd=I(7rys>@1OU*hSBtNpL@JIyDf}>1=6voQps6&J;K3<>;%4vqTX{#C*I0o3fGBG$&5AUsgfx|o-($r(`m=XaF z(9;GACRXTT6-|X9gMET4?07gFh#8IMQ-yKe`V|;9nuUUu9Z4KH!3rW9a1Lf&EDSkO zMk$<%vNGk~dK#tK3*GI5w}_?#F0nUihewYd$q3g$hXz!*mZWZUR*eklPz(usHth%& zwmUV$*gYxTb)6D+ba*m1I8m4DkrgM>&UB3s#WaG1k*Cz6QPWurMYKKIrRBj@%`El? zy}YGxI+6{mjxmt7@ynm+S5@AZk}x<6G_~;;2|k-eJScJA9D%JXlS=B#*_Gs22$Ql@ zHcj5T*6Tg$@n@d@)gN!a)9uE~OVS@GC6aZr0IA>aO~&!sU;g1=KK_bFJm{~6<53Hq zGHZyFWI-8Qbpq*?XfK4&i)v-cR-Az$-p-eYQ7{CaH`m#&@e(BhM^h$EG7~Ac;_(V8 z;t4oHRu1G)L$A`aT$A*)kuCxG`_|^(JZg6C+2b6W|2u>U2B3i*y^&|q8{Su^KKw;r z|MBm3-0611%w+gTdm^-PXqu)!KX=RZH_cDR=l;`MZhy@7dq3#(Z~Xk?9mgNhUavig z#7qX;|1w!#KJd23eEs{sx$nbY^!ZP`aqH%FE+691t9yf)v^$iuefj#@`eio5cndG) zjXVYdOVrnn|Lf$WfeUHPnJWQL%BzYwhXpCYgoS_XTGT-XkxR)cIhR<$&$UvfcZHbP z-AQ?n9peCuDq-T-nZHTY9QpwCjqs%}lP7fSN+VBy)=#Lt^d8k+^iFgzK=;TB$BwMH z4kjZOFFREzv5pd3_P}5_Ffe`|i>H-M>KEjp16Maa*&-Ixcr?}`(1p6UdjEae;p{kU z>%$*-7oC`$dxn3$^14edz3R#JP@ij(g;b93YPuvEy_u=99884^4!YPRrB+U3xkb|t2S@gcm3k3{Wq=N zv|-&~&ANRL*m&^v0}j}C?coP)kxeCK>p))G*o;R*InzETZsz(GmJtj}l)bc$EST5Y z?UK$kaaTsjyN=vA0+bXwhbBRk=nI`Avn}r38(ieFIQnE77?04&SwVnz1Rr*;8Z9%2 z1}G9p8pP)jH#QBN;xP` zo|(Ro#8v1pFkDoApJ$2L7>-vFO=M-GL6)*kGHW~{F(ETblg23{PW60KrdzqJiLlVQ z$V{B>S!iP(i*@QoXJ8_jAT1 zUVGh58}?b(MhvyohkI)k<~+L{!jMvR%+48crv}hrp{3Mc_9EnNo{xOonde{lgM&`K z{do6Y2|1gBZ-L>a{J%kS(k|9=F7p)%;NwTmGPn`)Kj=e>B_Q zN$ja9rCsHnS+nO2o8utgB5vic)cuawnfHbgyKWg1%yyJX54qwp|D=~YounKlC5pB* z18uJ#E=_K{ewVyplQmkyAqKn(tw`DB99V8XIH;ff!na@e??2jc@=3$JOOY_!nL);N*Dp+GU;gYnT9DB+@k{5u^O28#<(Izo^Mmht?9#5~j5I1tpG1#&;%39) z=A(}M%^xnl&qJQ~)z7~DpaVCxq3mFOu8kdiZp+xnaDW0UEyq)B>y*o5E^QsOG>@c| zhB3iji4{#H3Fm-Na2L4`Q6LsT4oyMyfR6?&Dzh^TZ+rnhMgpjo@_wYf>=ffd91}Vg zpkw<;Fad;5^xrcw+TG$oHZm% zo&ub#D{CrxpRbX47t1G{q6(r^Z9~aqyxADnl3B}p5C$Yv9|Hsg zbg~Jmb9OqHNxw&Ez0yWgA>=7q({7lU&NC0LW{{qUdiXl2!+2ubNavR-vrNPB&8TRY zD#Zn5)^$Y6=^6#33$v2SR2O6U3dMFs@pvIooFnXTc&ay_i=XL1#=6_A@Dr|ZWs04h zw}~whR#^pG|jxC2_W87d)XX*@YXgEnB}&V ze%fF`niO03KB)&Ezu-UKa`YilGCAN$v|t9tT35@kuKN36oQJoU(3<~z7(i~A6MA($ z*FW{Kum1c+KRNj1V~2Z}gLM5D1_Qpc^{1`n7*A%`|N4*To%5O&WGpW)&CkunCStZ# zdlJ(Vx+}hDJ8URpLiH8&ahA*hrXlW7NJ6ttOHiD+8EdP4PIPUZEFH8-?<~hqqCF7+ zGSfDiRLZqzV#L?(v)&E*xi&sX9?LN*t?KqRdv3Vd1gN;9gNd#qS;5WXY%myn z`g7lS-^aeZ_0A_umPQpNSKqS{hcLH#)lHXOxz@W2&V9>qNADOeFZc4v;Ngqszx{6? z{mRdL{YMAg>6po$Wp%E)O+ytZ1~=NX=YYd*bLpj*-SNJs|L51vUbC>UG-=jUf%57U zXk^S9LapJIZgjG&gNMn1i%-5-Q-_$oB#+VN9vBjoD)U6i0XqYF1AY*IrgHiV*48;A zwbXdB5hT1i`7evT*!c#2#ivrn57T7h_9R0E*%Zs%fgqkXR@5hO5Zf;t$!uYC5GK8PAqK-|Bu90NT9y#mbu8bi zvAn$=5$KhZ(*?r}SoWuVIUx@5-nN!m~VwBkxJ(xgR zis$#JwFpz?)!cUz3sc)Yl*43#ug#r}JhjJy9I7Rpx4f_@fjlp0HX;c8iv2-fThHdQ z+G$hE)<3C!C1ER%jGSuKsDw0v?NcD(N1#fLDuFqE;6`vZkab z&PAe)$v;@TxMo_(#yBbRbTtu+gp$^8ISt?o<GG@g-FN*o&NAPq1ItWE{$NuQ z$vWMMfs9jPNr7mg1aOgAjAVXKj1dF34r2w&fz&qBkT$L2VyRj*%xZ?rr1B3X**u9D zTFZBM7!xkE*&AJm1R&>C>d2$f_RBRPC0jhX#yXIfA<(Cr@pPs`oCfEZrlF0s9c#h} zGFt*GpQx?~N`Z+?7R`cbnx(j!4rJ%Icn%$#=g^GU(WUjlZj5E~AZb8p(b~5@wZ*rs z_zmWyEVSQGa&X{eGR+%0CgaIuG#(Gfqv2?@JQ@zi`TwK*%_#rBwG0#acl%rUN&fFt ze%@Y_Z;(qf8X-YL?wyspjP?etV{hS1`|K*P6v<+ygf)^m;YKsB7Q{1UA<=K587WpT zf2qQi*`jzu-x178!mDXfPJezdo{o3#Uf#WTsdd=xJj^oV!v%u6cnE>4BpIW$G8Y#J z4$MWPaYvx4c=Oo!u!>@Y{32Gy?<2jBU`Q1WtGmG757SnFM*=P9EEIMY6nS+pMZ588 zjOGgjNf2!n+kj!%Y(~>i%Uc>@2!&BI1Lh>z)6D#s&)~ckPfXO{>FcqUso=Ckmy%!r zildQF(MvnE!3aiiXiqS{Da~@<>rO1ho+FMh2{-y~G@SG_)-aUt!O_SzV_cw3ZG}}9BH4y6~lhGoN z{kH7$<3C>hns=Pjs^oOiPztpOBW)}`lW3-X*ppxL*^7R( z<1R-px8ZUXJdOkx0GdPXS=H;iNxbeyzxmg5UVG|;{%Uz?sqXbeU1-F+HrN)Q7+tkT zor$1|K)wt3#3rvR?(*4~3PnXYsn5XP1IPLZrHp8GDSi&GF8H2E*$2%+n8UYiTemRESz%`vrCi=HUAxcPPk-$vyOx&nL2+VGKw>%W5aZ)xYgJKy8ZW=jm8o}dytRPk0cD{ulmjJ4_VXu@)zEH|*nDm?7Nr(65437# zQ;!BGPJ?-mBGl9wb@`&@wyii2UAqBrAk92B`mezH&d6B6KSyZKFgtS1uyC?g%Y&KZz!jIF zAdfyX!9E9ZXmyo4f9BMO{An>kug?F=|L<4*ex2F3+;X%1fBv==d->|Oe?m{cujE`2 zYt;ml%hkr(sH!p^)t5B0j!bzn{*j1M@fh%gFHgu9qYH@$il-TJyiabgk;S%YVms=c zyN54-_4^Jy;mHRa|M<U6X;RP z8sEzJl^h~npTl?9t?f+@J6xCf))HJf<3l_^sppgg_OvMb__sn zkpG7k;ZynEX!#JRnH^)OV~J%&72+0HRA^KK6iHDOvA@+IBQzrENwWcD#=roBPb8M; zgUYG#IC25b+AA8D`&FI{1YsJ(m>{PTjMuMPb=tj;yZQQE()LECIe=>%k0$#cw(YHF zpZm3M|9CJMOmNg0^-2L`Ar>HDzB6Ach``QBSeJS>8*@^y z-Gc+en;bF$>O-8-ClUgw^(J4POj$9lYVG7t0$!psv#qb>|Re$JUR9#2U@ZUi9jY|R*$wD`a@^v`@!l`aLd(n5t>val? zTV)oG9!*tRC)ZG*%CYW}2!;u}k695;bNuRks}817JCo=T^H;RhwYl>}$&yXCAxVS= z%#22AEk(;SlETnETbX(&GgMc-bul@317Z<)8$z!lq+p;-G|e*TBh1e^Orxq&bl!pl zMfvjVNJ>gZ%xx`Qie8=>W=Sc5fOt=L2WSQbh68OlI_VxM$;dZ3@%Y2z^01P2(XuXx ziKH2L80^3Ku}^#b1z-E&px19A8F>6R6&vD9uQ6r~b>8wn)Y-K}@gjNv03ZNKL_t*X z$U`4<=I1W@@qs5DF&vHs?h-E-(p>-ZKb-f8*FOA|dksgUxwwVFr~Lbr34~%#Ani4mBIq zS0X%cajxoDdv@(Q`7XyDbik&`c-qsld>Y&&?U8a#MR23h=)Gs1{)!hq`N|*vA~$oZ zD#WF%4wZhP)pR!NNhYLn($W zz31m(=aHxInvf&xPoaQ`#2rfd*1B!2Yrbjg@Kji$qW*@2sP5i@2QVC*#RA8)CLY1w_`S}!- z15;X}P;&aN{5aSh8fQQnU{NwpVjn$amV)Qh>MOZOEGK+evVx(=J31}Xlf>$1);#T* zum8o);lX#m!XHlmjufL4VAtj+dN1wHLUF za@ZO{9-wHwK{0$*{VXtR;`901$#*81w!@MiG8Sp0U+PXM2&N0kz!n)Bct7oW%lQIK z?3$%~lS*ceE?h3n+)N+XJSNa09@67AluT0NZP-RWn>|7s@6KZLzz5y^q{H^R<>sBa ztCy>y4mkPjYG!fOx>ePdEsuKK%m48sUl`<*L>iRydC$V+)CFD!RN00(S2pDqIsN`4 zAM=U}zVXu?cRYHwJgHR*@`zLybBmr9h|H$(+F$?n{7;_wh=<&LJRJ60|ElU?P{|oq zV%ZKo5KKqP2#FLUEixGg&rA-l=gs&}s#79>DL*j4!3e;V!t+LWNXJYjZ0spv8t$hb z#(t9AT|D3O@u%E<-Zj%kaUz1H>}6&%zhUt+|8fy*KyK8`ez!FBeBJ!_#&xSQTu2-% zbR=Imn@l$!xZlfOe)c=x`|19mHQ~ag zs?L3*ag2e!Tt-OPjhq(~uPIlESssnIZQp_+XbfO1A0|xy8KKLTc}-6{hV zXqmVXaE^$?cVLQh_JS!nKF|J8t@Pb+j0xEzN2KQoI-KSsxFq)fWG~IwwuDA-NL>F! z2}uTu&1Dh6K!OUyGfzcF9{EU;u#BRTl`*@S zZ*CCd6cL0_(XDZ9hLir>{Dxx=f7T1%^2)P5)*s9@vI{I9q?}bMc#9GgFMy%a5rtVk z)FQ{f4|vqezVNMIY`@bHlck~d9WF1Qi&dLyelVU)uKvk?edgn5o%)cwkA}lsr6I@F zE7;Z;=+v9GeYOG+q&LCUlNGc>n3b;_}{MRaaB_c^+L=&1RDg`>p-$WmoMn*=KA^6y4*g@>6tnxV?ym4yW{2?=0*ndRXXYTBb-*S zCVHDhi$=QxyhkqH5q6l?&;*$)NVbfQQJT5J$RNOX669u>3Yhfx+Y~hc9#P+5Mv@(e zVrHR$O44I^t%NAh7uJ9RLeVR>$vg58KA8>BM|Nu4yY`=wDq^ZH<~g!kxqZeoDLP^! z?>H`e#2}9)u${Fo78{IX6OAlaZTE@2l{s;o7|turU@ATV3&n|nYa#b!XoEBC;MxqP zspSJ`K($b!?oslKWjDMfKNY6kiW;$6jvJ8qjvf!`Oa&IT)Hd?N;NHMr$#(MW)(}oh zBp$shLy(7rpf)Gp>-WF=bAQ8{IL&q6*u^S4^4x5;W^w)3e)i|9ZoFk-ehx9BN5MS< z{m5woT@|GvYT`l`FX`0+6gezNizvWCYJ(33BMO<60+C^&2H=8Z7s|kp2vB(uHe5vm}orbkrrB0wNgBm5{=fE1fHe7Wp*_^1MlTsn=Gm^02Jf z7_0}Ll`yn8<&L}4`xK>E`Fu@)2HV%Fau^hNb%3V8I_zfCQ*J!!U{OuoUYd_MYMK{6 z_iqo|vTpa4H}v}be4ZCNw#b}SzL`zxx<2SGC%y4)pLp&|-qoLL-G7`;XHMI{@=cJ< zXd+Ivcd?mG`@MRW(gRO<;f4S4>m4T^G1@&$#Kp2DL6$Q%RqO4B!<&A7+2=p=hDSW; zk{S9LN9{XNT=vhyG*oV%3>CzuAS=zJQpO+RU6^W9luLU!$Q;{1$ zSGmYzkldY*Jwz3rFI)&iRe@C2NnN2&b{G;|Izcy_VW$x}$~S2$OFYZ9O5FejH6&o> zJNgA!f@hQ!)c_sT5SPjZ6HPE3t-3ch)6A9E@p+7ptezu=QBEF=b+U&NP{G2Q z$A;Awv5PQ`J`{P@2YXA!*x>k;I!4-cijKUE(isX%3fF0COb1J3M_x&l!_&Gt*ocHl zA-T#KvdMB~v7vFSyUjz%lJhsPCiSBg3M;+Ax)4 zrG@u4z(hTE8aW4ZVBXA*84WCNQYT;vcF8q6L!D8(&4|8vY+`SI?#89jFgMZ-9HKAN zO*t+Oj?xQape(QGTA(z$Vk=CaIMu#bF@vVC#i)l`4T0Huy#>OC|*#>l*Jpq@O9H`{^D z`+*jYFGCrI)e5|wbpFr19o2>r^r?6S^mt3DV>&sPs*(8|)HtZ?cfaF|TduewAG|J` z+(r9yP9~R5_|VLnIGgP_`S`OxbitFK^%m!IDfevF*l}RAdtUa)=Y6nwXY63^+M9OW z_ivv2&0k-B;PHno?H#EcCvQdXa_CmSnl6p5|K%m;|MROJdjC6*CzCv)8Y)X1I|rV6lRo$QHOO8L^5-XbZ_B~!u&@=2V$Qgai3Q=Er> z@s!2#4E@YZx}`nzekY7>ys4GdO1pz=XS(1fOC8?UVHORdwZ+;O$#(t+A1_DR=lpI<@v;%I!s5?SPwR? zTND652NJMv$oUm)kNxFMtpMT8G+EBqw9i|-Xap=1c>bOE*=k)Zh;k1(MH2GP~PCKMFLL2ldiTV;ZmvKft=v|W}<4`esUQtrrwS?mvMEaDqMTVmkLk~kid_<|_|jsaJNaK|oG%M) zdl?Lf>eb#`5{W-kZSjfgjy6%89gRmz#VQunM&${o;B9@$KzK*AuZQJzqk`m72jc06 z0BT9yEz`!9z80mtiNA^BE}d&;A9xDJNTW*zI{Q?a*b zn37>YKCd0L;8b_U{5|mL1a{i(Ud27l2?|z5(zWs$){@}N%uJiHC z4cEqt&GdOk#CUmm`(2Lv*k`}}H-Gz*%dWnm-|IKItxRMPm0QkCrtMeWX)u^y`2J5X zzV`#3^_@$vJMfr8r+b!L#}kn1lJ`mZ9Ou@R=z|f!>9FlB_LQK`;gcl@~bh{W_kU~>s(Ck4p?^pzlL7+^WTZYM8B7LX{{r`wr zXdMD2pm3D(@m^la=8ktg?y&9q?cBLj)>o@D@&}sfw7+U@G#tJ6gP)b_BWH)>Am2Oa z)#J(N8Bct`;~szCOTPEZRjXGe_Ho6~^9j9`6vR{;Z+FP4PkzmX-~QQPVZKSz6f&Cy zBdSgF3N8b0|?w(y(WbSRdf1% zS^>{R@1WqF$Cz0M->Un<3L6L*f=V|))DFqzfqXhL||9F!rKw`H)d?@SM$@R}+*{DY|i_9)nUoI=}!>U;l@Q6nFD%wjXVX?hM z9gcQG-ieVVCWiha0=0(j7WJ>*Sqc*d1K{8jcUy(%@c z+^?LQ-1RK;(P*^ogu}o4`%CY5@6*rw!nb?zA*jexS%)L)} z{uR^ez{3t1?p?~HOOx_(N9La!*YDSp<)v$Xed+n1dh>(sePSE3&-dpNU`rHNiv1#q z5)rHilBZ$uWlX${^^uM-$#hEEA z-Uv1o&rDSGMEmN?&07?H^#8K2pvtoHxyV#F9fdG^sqt$T z*KFPYk&k=D_kQ~O-e7(%N=g}?XSLPVfW6fFTG}A_54iQ zCfcr^oWm0;sqwk|XV0!(kGjwCb?~$4)IgOf6tRGnL738Zcwfc2)L#%G$*dC$8kGzd zAkln~`}cqjBp4aIBvKAYw^7>xejLN+NEKHhFq0~OwA2hM9cTz0cj*<9gK@suH*}R{ zN(Un|j%h)R$dOZgtayPxIhfOP#rl$8R5P!7jv|-M$D8! z1%k~5M%Z~rI2C89ILx~ujYJ6GOB6>0SPm#9q)FryIwmvO5>PG-L(+OC13%y|;5;EJ ztVrpGhrt=jNWfNfI|}zi&{?va@L%beN$lilAi8WFMNv2>37K-Wy0rffkW_ITLY*eb z=C%fyTc$NHoG@!paVrcc=!sv+<{eJcn{wnWrg`C_Ra1i5cWeL%nj`p*GxYXS<_zKO zRN}NK%aygH(RKD|4-}t#IVjr`JX-l!q9_O^%oDol+TVgN{ zPpd5KkVb$8)NB$vghc9MWm8+oJ24P>5UdnO0qi8qP{sl6w^eRYpftCqOUr*ZwGVNs z&BSxxT?7G~Hx&#ia?h94RTvE?FMZyl-}KsNT=~6UNVP|me-)hGS;f4S?(yEye%lUg z)-FEg@85jNQ(yOkpZ)I7S6+L~jkjEN!!5tN5d^T*~7K5*UU zeP+u``D}7I$t}vUVbRx_%%7`=dxtmt>B=ws%j+I;-xEi}p#=10W0FiPOSh=ha7xLX z2}m->>!`6|I=UQR?Rm!!&|P`15|WRRQs&uc=X|ix?DEj00e~2 zTf=gCIz30x>SCNJBgc#`3%-2rrKSQ5tyr0fsfoI-6D2tW~ho*;{Hrk$`sOY*b+1y9;GPoc9+dn4Nol_y31}FCXHbaeq$OYpHk^+)Ao3bILz|sPdJRLg@JhFD#G~?f81pooea;r6nTuAQ= zYXYM{Wrh{S^I})$pjqm<;Uvphh!Ow6MvSPQZ8Di0b?5;n-sQM&{rGqL9I`zPmz~#k zGr8Z%XnDHz&~4{^?mOq7`kj2R+<25v&32u!K%Z3W{B%0~)Q8U;FTMP8-}%k96Av5h z+~X=KZ;xoC*IqXnkJfMAbnWHWKkCsh{kJc^d-M9m*>qCXRnntmLMTu@lN4dJynMiZ z`+Vmc@4v_Wo_ocgF5maCZR1_bb-o*p$I9<+GzR4=LgyONK$Lio(JzX6#fjXE-fzYT_4nCraXKI80EuuiXM&wF$r#Gi_bwFcQo#cfS(q?|hE<_9@ zT4Iqv4K^h@x@9%p42fvLdB+a$Hj`KcFF6|!^_3P=E{jQKV&= zX`GOZ{-Bt2?4{!YW~l4t!Xj?Jr+Y`Sj)J}9vJ5=wL}@>QrT8bkK%IZm5FBJq$k~y z7zq{tm*5FRXqXGZBs!W0VpFGrt z4m{wX}%+QoCOn=R^O)bb6k4A%jEr;QD ziud4&;8a$U;gmCPQs#`u=`InblMy6SV?>;^g5JEI_baq0Id1_F>*KqUZWhuItqx1Q zkavanN(ki>swf;SAd`*uYb^$O)$<-R*)GcMY`5lDNu29UCxY^lka_%{=zyC?Mx$LL^HCVS=b1|AbRI^*xgURw_^NuaQzHay9 zo^hHPSUBfPclnU<)%~doxF*zjw|pt&bEob9Ld`#TbBRP z*qhL_yTY$QGtp;kC1-AZ7!yqcb!7!R=ZFtH`p_YqO?bxy7n`Vz_zVW&P>uScX8BAQDf)I+o)t!O`OY})PtKfw0o3G&3Uj+ z(sAtU#F&!B+n6Mh>>X!azyek5R^mb5M@RzGn0Qch`K(vx!PH`xqTtRPclkfnVutoFnxILk!j@!VM*x&}6TIr*=v&SRCN=r@Flc@u<3P(;uuO@*pa7YQ%uM z68m8npM|wtvC8F7XBOmX^6g-*=W?X0FQEB7m_A>H;dr)Z_g*>cShrPm5=`Dv_2BPR zPuj^FE)Sn_+WpS|=&P5mxNh(DJLgx=>oG(z&9q|%dh~@hyk4FThhb39ty!2`J>Pnh z@o+j^9_7OkeP$-A3gL>{>e$4=nl-zwzMjlHO17iQ zIonX$DivwUFPz(%w2Khax#ymBwOuD@h zJdTr)&-q|_P}1ujp8`OVFDYEI2+7g5QS1rtLKzQuD&G|u2O|`CI$~h-P6-Q|`65Q* z4b+W=&W+?(f!P$SK`@{}%pO24aRO|Iiw)k&=@7r;nI=Rq+Pc-8b|2wtbR`c3-%IWb zbS5DQ->-bHN})WO9+2~i2_fc6-FdgMfmDg0sI=lEl{lCJ*m1fgBsQO?vt`m1U}o8( z+Bhe(sTNSXE|kHdbfRp2Ko@{zE?rCl!N4UQ|LRLt088X4;KXz7)wON5D2~7zj0FL< z(oHZ9^sX3tGfrx=RK;P_NV3`bD28yL_vq7vCIVL>C+&uS3z8$qHXmh^m;mxU`ZjVf z$&Q}ZFK}9%a1Rn4#ydd#6BU4QSrG#d@S?-;zSL@nQui{yJ#BKq<}62Akpq;2D#o+8 zcR1d6?Lu~7Y}M?ErC>Rbi~z&bI)y>MHy%$;ec;KPKKI5aKIIKp|M}{zha9lHXIUGg zwJ+UBp9Yk4d6|bD zwjO!VkAL-t(_iwg5540B)5)lj-MS=kU4hKG>uX-G#oplj^Uk{01D<)wWmj)LXv<`2 zm;!n?N~YF_I*j)$Z9o3#&tCYWCp`7FpZM^r$K!D?kSk4Ktx;MT(je61>2&?tRp0*7 zyZ-8Lp8Ka?{(jr-j*PPw`J{!x;L1y`-e<0U@$(+pPHbJ($&)=oaA$V9XuhM#X)$VJ zp>;?CSP=RfS!3i{J9^|?ip#&V3 ztfpp`lSs7~FfK+^jy(4f7|1bjsjDwp0fHJ;M~`7lLRs@dn-N5+TpRKR=!CDMsWp(4 zv!iBA%c80lHF(uPwhMisI&Rt1(fU;WRu`8D`-le1Q$#-kJK_=em=`DInP_X(1Q+ot zahw69Jm}gL{G%>2!4g2^bq*QLB3lNS=l3k~Vvov>tl zWv2)&(HCEg1=Z|wrMXV(0mWhovU>*$W%3u1Q zzkcAoZvWwbI&;5`Ye(ZzuV1%LC4ih#HyOIt+?g5EsfP8n%32Z$9g-p64Vfg(mnJ>- zvSX<1<{I%Jq*jk>bW)e^fuO^fmUNqOH67pvryQ8gbSi%k7m73|-weK9)?Sy-lMA`7 z;TWM$Upyv(}nUqFO1Zyh#M^YYp|x&-ZfP1m%|mI*HsO!fEdFGN@}Ff}}a1 zk4Mm9&fT(0j@X#D@$@l-;Xoy75rg_H);J`)jNvW8Ac|EqIx7A=I5V6HY_blAp{X%U z9bXGastz z8k!CR!5o+@UF0ES3~04pFn_Ys{M_lRd1$=_B}5MignKfR&=p{>kqWD4Snki*S*;A2 zSPY)Fq2Mw#QIyHpyy|67`sz1+digciENr*gKAA zp7Hp0v06yi+UTe~-GR$QaHGpduudjN9kTV)pFHc7N1U;@U$5G*el{Gd1PUzA0IkJ> z%X@~~?s~hAe(b`1RxQ5ujepky6rs9;NxiI%VAB|Tm7mV08y4rk{Monv>jmHV$~S*8 z8cj|*_K-(E@_x73vHxT;u0jAK3N=o!Yt&hcRGPH(>ddpB|J5J<;HSSG4JUqnkWtc% zJsdC!sT!mDz_WKj;mHp)nDT)IG&Gwc(!wxllLgdukiw;Zb84v@rsMSN zcsWVeo57GgTFB>o=G*3G4ULl;#OQ0%cp}bnC~$P1-Io)xWPrjs*v~!cY5CNA(-C|2 z;7#UxJW@!Q0fY_`pi88lYWZ7^ybr!f{eC?d4A!k49CGlMyPt6M<_&ABI%f^W<4L7m z>YOu6O;Tj^@!xwY$8wK%?+HUSpjAQ4Rz>Jlg*h*%j5 zFx6o|!Nt@WMJLd4o!4-HcdopRk$Gz6k}ZO_2Yd22k>MN=L!#BiIGFW7H+w?{I`N)n z)}~hNu#!-)9YHrFM$eW?jEKA(hT#eiW#XVy?9m>~ zrjP)Lq>q` zpDRtrXRX!v)JI?SfO9W=`RhM)+2vPnzRkA5;_5USrD^VQEmU6XOPV}{?9;0@*lm$S zJLmZnv_ZXe%buGrzW9h8Th9B!+wODMJG2pSI|X$Bh$AkB<b^lYkLK=R1if`zQR&6WJhcT{*c}l z3fU1Jxw0M7csgBNHTRykKl_0Xf5B|yhIV$fTWdr8&ssf8``!N7SH0z&tFFHOZEt+` zs(v+{Ho_kS5~U3-b80cfa5Oym_#;2_sW(6L;b)8ogWml7Y&gnWk>mq_dnt`3lLJpW z>TUn{nZ-?OU-|q;k0+BlG<4iNpNsIh%9~wh3%&kR9{Z3doc5shXLYDrbTSo?q3+e0 zOv{X@`7pX7r=?@l>koeUUzb1m?_T@sKU_ZR&9~wUEAJ8#!io&_U=4s#`C(AR;VJk; zapH5KKb}}s^(1!ae1gP|-J#ay2Z|#O9@zk^#!oa|1~a2TMC&99FoZ|AU?4l2KXVSawy zy5~LdZyxrbyB@gzzSCwhZCqVz9OF%uW#11rCLj(-i0PnS_6?k~WoKN8KIlG@>)1k2 zp&hRZ<%Wmj#*?Hht{3Xnq=5pbx7K{Pc`k}S{+-n`HqD-;VKv{I%^D0vVX0)D+xx9u zm~RdCq-nC=CPyAa*4ZL?JeJ&wJ|%+6FCjY;zn=a_8x?f%t9_Gi6lp6HK_@4Qo>CrM z3fI&tN4uAixfbPH9Ob|x$?w@<#_S~khE>zxjsz+Wo?8%kGGCwoCjcnpY-K09>S~c5 zP9Pm5{7v#~-NiDZYzUL(yAgjTiw^Z8g-NHucFyQeMWaM=Phc&&8lQKD*5mQ`o+sb#r7wQ+Yu@~^ZFj!iaOa-J z!^{9VWq;XhKmMo>{>#^Y_RBw?_sLgp+kfAt#fFo-F;$SCj|M7J%B@1jqkG=zwjcVZ zSN-i{U$N!Hqw?|bO_Zt{o%>vf+74!tnyn`tbLQ(muy%3oIZrudI3D$-8Zn^AfJRIv zAXGUnTON&kY}!bA(v0d}T?K`R8aEf(%#j1aa?0%2z22@pdmr`a7hN(=2c2+ip7B|W z`I(}(Lq}EhJB^;5PIw-XG+*)D=8yUYJ7P~q0O%S#(vGd0&RuA7C2S=iH6-17scHd- zrj9l!YVoCWJaV}$oYLd|Dk+{+TCbf^*(#tp@I12u|6)GIPCgxFCoPROqTW389Pd`> z2*Ldw1Wt^aeUg*x)Y$0hwCz7hj@?yAUe*6GfR}Z*jE-cVL!Ou zX~i6%{zrVKj4O1X=z+ji%tVLFa4?R^d)hVM9k4HO&Vi}$&caO2z9-l#Ymz6c_8rfx z)lv!W7*RXnjNBY)dCw4>_e`+t7NDT$A#^4JctXczQ9t<#Bj3%;d;6@dmbzf|d>oLz zEWCy`ad+G|Y5ch}j+k(pnAU#kKu9WsO{fvHw7etB9VwOvDP~@`W|i#zXavAwMnvtk zzBMlGUUE>E0$FrbAVn%hs#Ki}9;Zlrh)?73qdvi;IM5QMuTIQ1}~lMGA8|Xj6Wd50RNpU-hEL{p?p4|J%2JzWJDg z$GdY;OHwng@Fu45bb0IXNB#bfSDtv+r@r)zCp_zEr}XFNWBbX;ESJ~iPAVGV=1J}M zs_At4s0W{X^Lt4v1ZDL=;fj0%9mnl}&F&f2z(Q6xg2>^QCj7uU_erISWt$SCa|)5D#!Y|MNO08 zT28GYpqi_O$`X|GO$|DQu)|WKC}$@ND3o7Qy7eXmm*T1OBQs*DGR{bbWC2_egQThB z+la_Y9KrNNl^f9HZtxl>Fvirg|E4IO6)>X_ruQ>c;Xs7NPY09%M?I{&;9U}@;JBhz z)l0%kWIkCyooE0nIcH8KTY697@LtraYcaS>y2~Ak$uK~ylu!K>dK*@6*s?K>M(_KV zZ+_uR|Ni<{Kl3T4-FGsYs(mFD>@>k;!5gKCYTE?>2#XcHnF+-^!jRMA8-%3;GPX>8 zO-Vv>wXhd}V`)*T;44oFB3!bh858@uQh`X^1)B3q!L`A_#}xq1Z%l{* zI>i(n*it-^UYLl=iYAp6RlDuIy(#UN{={SlUNMQXO-KVY*KMcA;0Eo9J z5DpbL=&ruLnQf$Bo8RFEzFmuN$*hJ@$7!cd!!%`*)eWLfVExJm5x#DFy z5i__hVg>4|4`tR-Pw%+UF4^3b1;bE-q|Mhau4!YRij}myp%B`l=fkCC{Z;k>5JtOw zR1GZK0X)$fggMWd?w#xP!mN#$#-oF`ZF$yHANuU4opS9>yTAV3AOGT)m)v;WEj}M= zl3P|+{rOcJHXMKaVGp_22^$wzDSV$yMxpB0t`VBlz^9>!=x|(^diAF5Tc>-6b%q+sjcaT6Fy6hie%pS-rO}IC z|Ni%XuVVNW~#bqD_IJ5Rd9F~jk2P}M~DoiHR{9br0=EDyzEbHO}T z%4UwHPAu7PfBO5yE&EJI%f46p+^mQmf(lz>_!xVMPG$Gv>bx^{G|uf0iSqJm!Dg*O09DY%IoNE+5{u6epXyzLrSi-bh3Fd z(VQwWa=KkpoLFFZg-A}SE@TrH4t@&0YGfmr6g%XMqi*QpNsC^yrsAlo+@d}YA!}NO zLX8y4ds%u4Y5NYD?aD|iGtlk3G-`__6{SQJG{pCOnz2!hyky7)GQyKc_er=J0abPT zaB0Angef9ty6RsXz1Vtz1iIIUB{--Z?RSbz|?6jo?(W8UeCz3i?=(` zDMh|?^N=2j*;OfQ$h=l;s$R}y0n$p_gWSeYUa;=<95u1@_H!7NmQ?Yv$q=Pe-<-(R zFoJ{;#V3r^cSH(KKhvEV547Ns+~ZxS%i!LUg-f;!Fb;^N=qmk+fLb9CI5f42#DASB zHJ7eriN37YiVb85J%?^~ldmjuP?w}a2^1Z6mdej#(x$Mq^!j@GEu;ZcL5rvR?!bAN zwf1n=1yFIMc5fp#^rf77KR6r4%vg*3y>{nFoG`nCx+MZ&V#u8I)PkxK1i*eN*<^CU zFk4YGwj8PFGjwQjteoKW(^`6JuhBSn;5Dz9&3F@j(;rgqasLZ7T%z2J>;|) z^w)LHCcF;$tco`Jt*d=EtbW`nfBo2p-pg1P>YH%4aWp#sluj@R zv4R`+j4=?Q=wi@FfMY0nu8>1?RbCPlalOs?~^Aq-3ve?{Qe)^Clc)6E;#eDS=u-tE56zU7K5Hf}$7 zws%Rx`oL6I`)bqCWH9I*e1~Iiy8hUnSd=dFhvl*UuWdQMD#_IB-BFRU8u-MsabNBzTvUp)JEM;+Wu zC%MKjJ3fazwAaL$atIKe$UuW2nM9sTto%lFl(RX5{-3YB{>nYO=jT_+j+21H&2-~X z;eMp!t^C}>{wWTP9XsVA|Ex!z%Ih-=hD{ffrCQ?Nds^GOlwG$_yT;%!;mI~y0r^t z*y)&pV}k_AMC8XcfI&ebAK_aywc(X@6GlW{Sq7lxpq{VLLbALNji%kA+G;6p4G6QM zHe+ar&NP>%hdpQcp_W#`b0eW+`%P4-NcyJuq)_E@jHXGGJ)?fF-f`z+-~Zvy$MNI? z?|I2|I!ShbBn=ZSq9shsuF%J&qEi;15l}em45k)ED`JqWH4o>(3wXwzh(}cDsm5CW zS_)5DW`I@2LzI70n%XUmCSLND>=LS`BPZQ5CTwD@ExZ^4Gx&+1V1@Gz1E2;pTN zuCmZ536lbXQGSAA1Td7v(ZR`@Mi)JnPer`D@BTs+J~?<`A8`}jz-nj|V3Imx=x2C6 z!7q6Fp`;^`Nx&{b0zr9Qjso)F%W&%iXaEl(_T9{&{;1wkMOV0zlm;uOQ;#^P3zYq=Ip!>Z8iR zW=gsfZ4&ito5-`YmCI~Hu$*tnN3;Utdo)+%Abp3Lb{#Oy?Vzgb-k$F$iZ+uTK+swB zkYf;2(3!1JDfA;~@f~x*46oNPk;9?LdB!-Z&+6JC8we#hR1jL82~I zBTl+_H-|pJdHd*SG(B|NmhWA3_TB#a*|%JF#fBYQCrir`Z3mTiWw+W74wv@MtzW%; zzoW0cVfQCK_nq^;aM57ZsyiHi^n>qp?7{nPO#S{`J*fI&I!lw`w3lX^)~(%l-wmVj zv>)K1F$NLRx(d_LXzf00u4yI@KJ_Kv`_}sp+_JHSk3nNDTMb_fgCioNtb)sRL~x#( zYY{;+oo(E>Zm}P3iN2RlA#AiIdq|8?J>ri>D;~WkB1}BZD=9pPlJOBPggdOM`$|xm zF|&*Vm^39?7|MyzgoN$4`Xi61!=SQq7&%^7y(6N&1|B{Gi=ImAdQkZMM8#99I71&w*#2(N04b7mr8f6zf{61;t- zW)_!6+fTm32haKH;YS|&qGz5uo{W8{U8Oz_`e>d3BH@7RJSu0zw9r38odO^cC(4`} zPpE^^!{+INM6_H>ES!_2caCg_`FjyuN;edQUdAbdCF8$&_uhP;7CugAp5@LmPcBow z$_W8c^ahei24UY)W_vZ>nek zVFPE-!=%~$=|yZ(xg;GQPf$d$1IDoRLna4Z)bXkg!~h*E%k$*kwJ(kwaLa}a)I>wV zDV2f8;`Bfp*jPChXO@smPWal$vxSW$69U*wd;&)NyrI z%hA#~2X7R;MT>x4CYvlqh0Z}-isvy~#2J(@Mj_h#{2;erj5Ajd2=CBZrGC9DT$B+(Qo9|C?WV&nb_2*(JaJ!-2;fFfE1~PNxH$+si~O3b9LB!ty};_-lB@h@@W4PkAC%=KYahY-~Q;M4jxZuRU!f4 z8GzI5!|^0X2xtxt7efCN*$z4mhhY?R1HVhI0_(>o#*J2 z@{C@2{mrSFw!xUBGqo%^h(U?E>vPqrRlG~GSxQ}#;aqV`MDM9ggc?M7~HTSDXrYG;~q_n2r)cDK-zKoQ6d2OWJm^nlsnPj zoWXYJOo7luco^KNgpRdix`s%gJ8^;a7!*N|T4m=`=T@DiEdGP?g|b@nD9M{G))~OK zJ7KZSb>N$NnnYJ_ogAeLpom7*<1``#yqI-gT(39mR$i_9RcJ8seP!^Sg>XJOcDrjm zP~GH8du_N8&=OFe6=Q!ecg;<^Ik5(B6#RjC=X{fBeTFw@vyWguOq7 z`=Wv5kj!d;s`MSiYv8CbAgS|QglnC>ox#)iv}kSCf_-M~WK(Cf zkWLv#eCxo2DJU%}HbBH~EQVY{@gQnf)kX%}HJ-G-!9D^{(CH_tT}|u6mriEq*?=$Mf|dupBh3a==9~v7#Vp20AZL2!lauNHu1s>m~=*%Ni(*Z>2%0A@g$zpO;wg_!Vg9ExER$+OfEdg4LF5Q(_N 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ℜ43>Ehadu)O^kJ8kxDn;XM;|)22BWeHLCa7 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 CJdk6`1m#Ow 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", replace, markdown, flags=re.I | re.M) + + +# ----------------------------------------------------------------------------- +# Helper functions +# ----------------------------------------------------------------------------- + + +# Create a flag of a specific type +def flag(args: str, page: Page, files: Files): + type, *_ = args.split(" ", 1) + if type == "experimental": + return _badge_for_experimental(page, files) + elif type == "required": + return _badge_for_required(page, files) + elif type == "customization": + return _badge_for_customization(page, files) + elif type == "metadata": + return _badge_for_metadata(page, files) + elif type == "multiple": + return _badge_for_multiple(page, files) + raise RuntimeError(f"Unknown type: {type}") + + +# Create a linkable option +def option(type: str): + _, *_, name = re.split(r"[.:]", type) + return f"[`{name}`](#+{type}){{ #+{type} }}\n\n" + + +# Create a linkable setting - @todo append them to the bottom of the page +def setting(type: str): + _, *_, name = re.split(r"[.*]", type) + return f"`{name}` {{ #{type} }}\n\n[{type}]: #{type}\n\n" + + +# ----------------------------------------------------------------------------- + + +# Resolve path of file relative to given page - the posixpath always includes +# one additional level of `..` which we need to remove +def _resolve_path(path: str, page: Page, files: Files): + path, anchor, *_ = f"{path}#".split("#") + path = _resolve(files.get_file_from_path(path), page) + return "#".join([path, anchor]) if anchor else path + + +# Resolve path of file relative to given page - the posixpath always includes +# one additional level of `..` which we need to remove +def _resolve(file: File, page: Page): + try: + path = posixpath.relpath(file.src_uri, page.file.src_uri) + return posixpath.sep.join(path.split(posixpath.sep)[1:]) + except Exception as e: + raise Exception(f"Cannot resolve path for {file} relative to {page}") from e + + +# ----------------------------------------------------------------------------- + + +# Create badge +def _badge(icon: str, text: str = "", type: str = ""): + classes = f"mdx-badge mdx-badge--{type}" if type else "mdx-badge" + return "".join( + [ + f'', + *([f'{text}'] if text else []), + "", + ] + ) + + +# Create sponsors badge +def _badge_for_sponsors(page: Page, files: Files): + icon = "material-heart" + href = _resolve_path("index.md", page, files) + return _badge(icon=f"[:{icon}:]({href} 'Sponsors only')", type="heart") + + +# Create badge for version +def _badge_for_version(text: str, page: Page, files: Files): + spec = text + path = f"release-notes.md#{spec}" + + # Return badge + icon = "material-tag-outline" + href = _resolve_path(path, page, files) + return _badge( + icon=f"[]({href} 'Minimum version')", + text=f"[:{icon}: {text}]({href})" if spec else "", + ) # {_resolve_path(path, page, files)} + + +# Create badge for feature +def _badge_for_feature(text: str, page: Page, files: Files): + icon = "material-toggle-switch" + href = _resolve_path("index.md", page, files) + return _badge(icon=f"[:{icon}:]({href} 'Optional feature')", text=text) + + +# Create badge for plugin +def _badge_for_plugin(text: str, page: Page, files: Files): + icon = "material-floppy" + href = _resolve_path("index.md", page, files) + return _badge(icon=f"[:{icon}:]({href} 'Plugin')", text=text) + + +# Create badge for extension +def _badge_for_extension(text: str, page: Page, files: Files): + icon = "material-language-markdown" + href = _resolve_path("index.md", page, files) + return _badge(icon=f"[:{icon}:]({href} 'Markdown extension')", text=text) + + +# Create badge for utility +def _badge_for_utility(text: str, page: Page, files: Files): + icon = "material-package-variant" + href = _resolve_path("index.md", page, files) + return _badge(icon=f"[:{icon}:]({href} 'Third-party utility')", text=text) + + +# Create badge for example +def _badge_for_example(text: str, page: Page, files: Files): + return "\n".join( + [ + _badge_for_example_download(text, page, files), + _badge_for_example_view(text, page, files), + ] + ) + + +# Create badge for example view +def _badge_for_example_view(text: str, page: Page, files: Files): + icon = "material-folder-eye" + href = f"https://mkdocs-material.github.io/examples/{text}/" + return _badge(icon=f"[:{icon}:]({href} 'View example')", type="right") + + +# Create badge for example download +def _badge_for_example_download(text: str, page: Page, files: Files): + icon = "material-folder-download" + href = f"https://mkdocs-material.github.io/examples/{text}.zip" + return _badge( + icon=f"[:{icon}:]({href} 'Download example files')", + text=f"[`.zip`]({href})", + type="right", + ) + + +# Create badge for demo repository +def _badge_for_demo(text: str, page: Page, files: Files): + icon = "material-github" + href = f"https://github.com/mkdocs-material/{text}" + return _badge(icon=f"[:{icon}:]({href} 'Demo repository')", text=text, type="right") + + +# Create badge for default value +def _badge_for_default(text: str, page: Page, files: Files): + icon = "material-water" + href = _resolve_path("conventions.md#default", page, files) + return _badge(icon=f"[:{icon}:]({href} 'Default value')", text=text) + + +# Create badge for empty default value +def _badge_for_default_none(page: Page, files: Files): + icon = "material-water-outline" + href = _resolve_path("conventions.md#default", page, files) + return _badge(icon=f"[:{icon}:]({href} 'Default value is empty')") + + +# Create badge for computed default value +def _badge_for_default_computed(page: Page, files: Files): + icon = "material-water-check" + href = _resolve_path("conventions.md#default", page, files) + return _badge(icon=f"[:{icon}:]({href} 'Default value is computed')") + + +# Create badge for metadata property flag +def _badge_for_metadata(page: Page, files: Files): + icon = "material-list-box-outline" + href = _resolve_path("conventions.md#metadata", page, files) + return _badge(icon=f"[:{icon}:]({href} 'Metadata property')") + + +# Create badge for required value flag +def _badge_for_required(page: Page, files: Files): + icon = "material-alert" + href = _resolve_path("conventions.md#required", page, files) + return _badge(icon=f"[:{icon}:]({href} 'Required value')") + + +# Create badge for customization flag +def _badge_for_customization(page: Page, files: Files): + icon = "material-brush-variant" + href = _resolve_path("conventions.md#customization", page, files) + return _badge(icon=f"[:{icon}:]({href} 'Customization')") + + +# Create badge for multiple instance flag +def _badge_for_multiple(page: Page, files: Files): + icon = "material-inbox-multiple" + href = _resolve_path("conventions.md#multiple-instances", page, files) + return _badge(icon=f"[:{icon}:]({href} 'Multiple instances')") + + +# Create badge for experimental flag +def _badge_for_experimental(page: Page, files: Files): + icon = "material-flask-outline" + href = _resolve_path("conventions.md#experimental", page, files) + return _badge(icon=f"[:{icon}:]({href} 'Experimental')") diff --git a/docs/assets/stylesheets/extra.css b/docs/assets/stylesheets/extra.css new file mode 100644 index 00000000..97033243 --- /dev/null +++ b/docs/assets/stylesheets/extra.css @@ -0,0 +1,60 @@ +:root > * { + --md-primary-fg-color: #292F36; + --md-primary-fg-color--light: #ECB7B7; + --md-primary-fg-color--dark: #90030C; + --md-primary-bg-color: white; + --md-accent-fg-color: rgba(209, 10, 73, 0.5); + --md-typeset-a-color: #d10a49; +} + +.md-banner { + text-align: center; + background-color: #0A8754; + --md-typeset-a-color: #292F36; + --md-accent-fg-color: white; +} + +/* Custom admonition icons */ +:root { + --md-admonition-icon--deprecation: url('data:image/svg+xml;charset=utf-8,api-off') +} +.md-typeset .admonition.deprecation, +.md-typeset details.deprecation { + border-color: #ff9101; +} +.md-typeset .deprecation > .admonition-title, +.md-typeset .deprecation > summary { + background-color: #fff5eb; +} +.md-typeset .deprecation > .admonition-title::before, +.md-typeset .deprecation > summary::before { + background-color: #ff9101; + -webkit-mask-image: var(--md-admonition-icon--deprecation); + mask-image: var(--md-admonition-icon--deprecation); +} + +/* Hide In/Out prompts */ +.md-typeset .jp-InputPrompt, +.md-typeset .jp-OutputPrompt, +.md-typeset .prompt { display: none !important; } + +/* Clamp notebook width to Material content width */ +.md-content__inner :is(.jp-Notebook, .nbconvert-document) { + max-width: var(--md-typeset-width) !important; + margin-inline: auto !important; + width: 100% !important; +} + +/* Use Material’s code font in notebook code (inputs + outputs) */ +.md-typeset :is(.jp-Notebook, .nbconvert-document) pre { + font-family: var(--md-code-font) !important; + font-size: 15px !important; +} + +/* Remove the frame around input cells */ +.md-typeset :is(.jp-InputArea, .jp-InputArea-editor, .jp-Cell-inputWrapper, .cell .input_area, .CodeMirror, .cm-editor) { + border: 0 !important; + box-shadow: none !important; + outline: 0 !important; + background: transparent !important; +} diff --git a/docs/contributing.md b/docs/contributing.md deleted file mode 100644 index b6c74006..00000000 --- a/docs/contributing.md +++ /dev/null @@ -1,35 +0,0 @@ - -# Contributing - -## Development dependencies - -To contribute to this project, you will need to install the development dependencies. -These dependencies include everything needed for development, testing and building the documentation of the project. - -To install the development dependencies, run the following command inside the project directory: - -```bash -uv sync -``` - -The development dependencies include `ipykernel` to support Jupyter notebooks and integration into e.g. VS Code. - -To view the full list of development dependencies, you can check the `pyproject.toml` file under the `[dependency-groups]` section as `dev` and `docs`, which are both included in the `default-groups`. - -## Testing - -To run all tests in parallel, you can use the following command: - -```bash -pytest -n auto -``` - -Some tests may not be thread-safe and therefore fail unexpectedly when run in parallel. -If you encounter such issues, you can run the tests sequentially by omitting the `-n auto` option: - -```bash -pytest -``` diff --git a/docs/contributing/CODE_OF_CONDUCT.md b/docs/contributing/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..fc9c0b6a --- /dev/null +++ b/docs/contributing/CODE_OF_CONDUCT.md @@ -0,0 +1,136 @@ +# Code of Conduct + +!!! info + + This Code of Conduct follows the [Contributor Covenant, version 2.1](https://www.contributor-covenant.org/version/2/1/code_of_conduct/). + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at + / / t.brown@tu-berlin.de. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.1, available at +[][v2.1]. + +Community Impact Guidelines were inspired by +[Mozilla's code of conduct enforcement ladder][Mozilla CoC]. + +For answers to common questions about this code of conduct, see the FAQ at +[][FAQ]. Translations are available at +[][translations]. + +[homepage]: https://www.contributor-covenant.org +[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html +[Mozilla CoC]: https://github.com/mozilla/diversity +[FAQ]: https://www.contributor-covenant.org/faq +[translations]: https://www.contributor-covenant.org/translations diff --git a/docs/contributing/contributors.md b/docs/contributing/contributors.md new file mode 100644 index 00000000..920eccc6 --- /dev/null +++ b/docs/contributing/contributors.md @@ -0,0 +1,8 @@ + +# Contributors + +!!! info + + Up-to-date statistics and a complete list of contributors to PyPSA can be found under [GitHub Insights](https://github.com/PyPSA/technology-data/graphs/contributors). + +TODO: Update automatically and list all contributors. diff --git a/docs/contributing/instructions.md b/docs/contributing/instructions.md new file mode 100644 index 00000000..6ff8fe60 --- /dev/null +++ b/docs/contributing/instructions.md @@ -0,0 +1,188 @@ +# Instructions for contributing to the project + + + +First of all, thank you for your contributions to `technologydata`! + +We enthusiastically invite anyone interested in `technologydata` to share new ideas, provide suggestions, submit bug reports, or contribute code changes. + +## How to contribute + +- [Code contributions](#code-contributions): Implement new features, fix bugs, or improve the performance. +- [Documentation contributions](#documentation-contributions): Improve the documentation by adding new sections, fixing typos, or clarifying existing content. + +## Where to go for help + +- To **discuss** with other `technologydata` users, organise projects, share news, and get in touch with the community, please refer to the [Contacts](/docs/home/contacts.md) page. +- For **guidelines to contribute**, stay right here. + +## Code contributions + +## Contribution workflow in a nutshell + +- Fork the repository on GitHub. Please make sure to check the box `Copy the master branch only` +- Clone your fork: `git clone https://github.com//technology-data.git` +- Set up the `upstream` repository (see [Set up the upstream repository](#set-up-the-upstream-repository)) +- Fetch the upstream tags `git fetch --tags upstream` +- Install with dependencies in editable mode (see [Install dependencies](#install-dependencies)) +- Setup linter and formatter, e.g `pre-commit install` (see [Code linting and formatting](#code-linting-and-formatting)) +- Write your code (preferably on a new branch) +- Run tests: `pytest` (see [Testing](#testing)) +- Push your changes to your fork and create a pull request on GitHub + +### Set up the upstream repository + +To keep your fork up to date with the original repository, you need to set up the `upstream` remote repository: + +```bash +git remote add upstream https://github.com/PyPSA/technology-data.git +``` + +To verify that the remotes have been set up correctly, you can run: + +```bash +git remote -v +``` + +The output should look like this: + +```plaintext +origin https://github.com//technology-data.git (fetch) +origin https://github.com//technology-data.git (push) +upstream https://github.com/PyPSA/technology-data.git (fetch) +upstream https://github.com/PyPSA/technology-data.git (push) +``` + +### Install dependencies + +To contribute to this project, you will need to install the development dependencies. +These dependencies are listed in the `pyproject.toml` file and include everything needed for development, testing and building the documentation of the project. + +To install the development dependencies, run the following command inside the project directory: + +```bash +uv sync +``` + +This will create a virtual environment at `.venv`. + +The development dependencies include `ipykernel` to support Jupyter notebooks and integration into e.g. VS Code. + +To view the full list of development dependencies, you can check the `pyproject.toml` file under the `[dependency-groups]` section as `dev` and `docs`, which are both included in the `default-groups`. + +The virtual environment can be "activated" to make its packages available: + +=== "macOS and Linux" + + ```bash + source .venv/bin/activate + ``` + +=== "Windows" + + ```pwsh-session + PS> .venv\Scripts\activate + ``` + +To exit a virtual environment, use the `deactivate` command: + +```bash +deactivate +``` + +#### Add new development dependencies + +To add new dependencies to a specific dependency group in the `pyproject.toml`: + +```bash +uv add package_name --group group_name +``` + +To install the new dependency run `uv sync`. + +### Code linting and formatting + +#### pre-commit + +[pre-commit](https://pre-commit.com) is used to ensure a consistent code style and to catch common programming errors or bad practices before they are committed. + +The tool is installed with development dependencies. It can be also installed manually via `pip install pre-commit` or `conda install -c conda-forge pre-commit`. + +To use it automatically before every commit (recommended), just run once: + +```bash +pre-commit install +``` + +This will automatically check the changes which are staged before you commit them. + +To manually run it, use: + +```bash +pre-commit run --all +``` + +This will check all files in the repository. + +#### Ruff + +[Ruff](https://docs.astral.sh/ruff) is used as the project linter and formatter. It combines common tools like Flake8, Black, etc. +Besides pre-commit, you can also run it via your CLI (see [Ruff installation](https://docs.astral.sh/ruff/installation/)) or IDE (e.g. VSCode [plugin](https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff)). + +Ruff is also already installed with the development dependencies, but you can also install it +manually using `pip install ruff`. + +To use the linter in your CLI, run: + +```bash +ruff check . --fix +``` + +This will check all files in the repository and gives you hints on what to improve. The +`--fix` flag will also automatically fix some of the issues, if possible. Some +issues need to be fixed manually. + +And to run the formatter, use: + +```bash +ruff format . +``` + +This will format all the files in the repository and immediately apply the changes to +them. It is basically [the same](https://docs.astral.sh/ruff/faq/#how-does-ruffs-formatter-compare-to-black) +as Black. + +> **Note**: It is not mandatory to use either Ruff or pre-commit. We will also be running it in +> our CI/CD pipeline. But it's highly recommended, to make everyone's life easier. + +### Testing + +To run all tests in parallel, you can use the following command: + +```bash +pytest -n auto +``` + +Some tests may not be thread-safe and therefore fail unexpectedly when run in parallel. +If you encounter such issues, you can run the tests sequentially by omitting the `-n auto` option: + +```bash +pytest +``` + +## Documentation contributions + +The documentation is generated with [MkDocs](https://www.mkdocs.org/). The documentation source files are written in Markdown and are available under the `/docs` sub-folder. The documentation is configured with the `mkdocs.yaml` file. + +!!! note + If you are not familiar with Markdown, consult the following [quick guide](https://www.markdownguide.org/basic-syntax/). + +MkDocs offers the possibility to start a built-in development server to preview the documentation as you work on it. To start the development server run: + +```bash +mkdocs serve +``` diff --git a/docs/home/citing.md b/docs/home/citing.md new file mode 100644 index 00000000..5922dbef --- /dev/null +++ b/docs/home/citing.md @@ -0,0 +1,3 @@ +# Citing + +TODO diff --git a/docs/home/contacts.md b/docs/home/contacts.md new file mode 100644 index 00000000..edec8092 --- /dev/null +++ b/docs/home/contacts.md @@ -0,0 +1,7 @@ +# Contacts + +Please consider the following ways to reach out to the community and the developers: + +* To **discuss** with other `technology-data` users, organise projects, share news, and get in touch with the community you can use the [Discord server](https://discord.gg/T7YZbnVU). +* For **bugs and feature requests**, please use the [issue tracker](https://github.com/PyPSA/technology-data/issues). +* We strongly welcome anyone interested in providing **contributions** to this project. If you have any ideas, suggestions or encounter problems, feel invited to file issues or make pull requests on [GitHub](https://github.com/PyPSA/technology-data). diff --git a/docs/home/faq.md b/docs/home/faq.md new file mode 100644 index 00000000..f108a77b --- /dev/null +++ b/docs/home/faq.md @@ -0,0 +1,26 @@ +# Frequently Asked Questions (FAQ) + +## How should I cite this package? + +See the dedicated page on [Citing](citing.md). + +## How do I add a new data source? + +TODO + +## If I use the package today, will the data change when I update the package later? + +TODO + +## How can I support your work? + +TODO + +## I would like to get involved, what can I do? + +TODO + +## How is this project different to GENESTE or other projects? + +TODO +and ref. to GENESTE: diff --git a/docs/home/installation.md b/docs/home/installation.md new file mode 100644 index 00000000..6238f0c1 --- /dev/null +++ b/docs/home/installation.md @@ -0,0 +1,21 @@ +# Installation + +You can install `technologydata` using either **PyPI** or **conda-forge**. Choose the method that best fits your workflow. + +## Using pip (from PyPI) + +```bash +pip install technologydata +``` + +## Using uv (from PyPI, faster alternative to pip) + +```bash +uv pip install technologydata +``` + +## Using conda (from conda-forge) + +```bash +conda install -c conda-forge technologydata +``` diff --git a/docs/home/license.md b/docs/home/license.md new file mode 100644 index 00000000..ae029c5b --- /dev/null +++ b/docs/home/license.md @@ -0,0 +1,26 @@ +# License + +`technology-data` is licensed under the open-source [MIT](https://opensource.org/license/mit) license: + +```text +MIT License + +Copyright The technology-data authors + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in the +Software without restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the +Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +``` diff --git a/docs/home/release-notes.md b/docs/home/release-notes.md new file mode 100644 index 00000000..36a9d8bd --- /dev/null +++ b/docs/home/release-notes.md @@ -0,0 +1,9 @@ +# Release Notes + +## Upcoming Release + +!!! warning "Unreleased Features" + + The features listed below are not released yet, but will be part of the next release! + To use the features already you have to clone and install the repository from GitHub, e.g. using + ``pip install git+https://github.com/PyPSA/technology-data``. diff --git a/docs/home/users.md b/docs/home/users.md new file mode 100644 index 00000000..76711e86 --- /dev/null +++ b/docs/home/users.md @@ -0,0 +1,19 @@ +# Users + +The following contains a list of users from academia, industry, institutions and organisations that are actively using `technologydata` or have used it in the past. +The list references to specific projects to showcase the different use cases of `technologydata`. + +If you are missing from this list and would like to be included, give us a shoutout on our Discord server, drop us a message elsewhere or open a pull request in the repository, as described . +We would love to hear about your use case and stay in touch, in order to develop and evolve this package further. + +## Academia and Research institutions + +TODO + +## Industry + +TODO + +## Institutions and Organisations + +TODO diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 00000000..7efe43cb --- /dev/null +++ b/docs/index.md @@ -0,0 +1,6 @@ +# technologydata: Techno-economic assumptions for energy models + +!!! note "Under Construction" + + The documentation is currently under construction. + Please come back later. diff --git a/docs/class-diagram.puml b/docs/user_guide/class-diagram.puml similarity index 100% rename from docs/class-diagram.puml rename to docs/user_guide/class-diagram.puml diff --git a/docs/design.md b/docs/user_guide/design.md similarity index 76% rename from docs/design.md rename to docs/user_guide/design.md index ffcc09fd..4f01732c 100644 --- a/docs/design.md +++ b/docs/user_guide/design.md @@ -1,27 +1,21 @@ +# Use cases we have designed `technology-data` for + -# Design -1. [Design](#design) - 1. [Target audience](#target-audience) - 2. [Use Cases](#use-cases) - 1. [🧾 UC-001: Screen techno-economic inputs for validity and completeness](#uc-001-screen-techno-economic-inputs-for-validity-and-completeness) - 2. [🧾 UC-002: Harmonize multiple input datasets](#uc-002-harmonize-multiple-input-datasets) - 3. [🧾 UC-003: Transform assumptions into model-ready formats](#uc-003-transform-assumptions-into-model-ready-formats) - 4. [🧾 UC-004: Compare techno-economic indicators across datasets](#uc-004-compare-techno-economic-indicators-across-datasets) - 5. [🧾 UC-005: Audit data provenance and transformation trace](#uc-005-audit-data-provenance-and-transformation-trace) +--> +## Design `technologydata` is designed for energy system modellers in mind. It intendeds to serve common use cases encountered during the design, development and execution of energy system model experiments, such as: -* Screening techno-economic inputs for energy systems -* Comparing techno-economics indicators -* Harmonizing inputs -* Modelling of input assumptions for gap filling -* Transformation of assumptions into model-ready input formats +- Screening techno-economic inputs for energy systems +- Comparing techno-economics indicators +- Harmonizing inputs +- Modelling of input assumptions for gap filling +- Transformation of assumptions into model-ready input formats The project was started for PyPSA-Eur and has since then been expanded to serve more models and purposes. As such it has been leaning towards serving the purposes of PyPSA-Eur and related models. @@ -32,28 +26,39 @@ We hope to expand it to serve the wider energy system modeling community and a s The users we target are Energy System Modellers and Analysts. We assume they are all: -* Familiar with the concept of techno-economics on how to describe technical and economic parameters of technologies for energy system models -* Familiar with the methodology of transforming techno-economic parameters for alignment and harmonization +- Familiar with the concept of techno-economics on how to describe technical and economic parameters of technologies for energy system models +- Familiar with the methodology of transforming techno-economic parameters for alignment and harmonization The users differ in their experience in these fields, but are generally aware of the methodological background behind the transformations that we make available, like inflation adjustments, currency conversions or unit conversions. -* They prefer simplicity and robustness in use over being able to customize the transformations. -* They would like to be offered a range of options to choose from, but not too many. -* They would like to be able to use the package without having to read too much documentation, but require clear documentation on the transformations that are applied. -* Data provenance and reproducibility are important to them, so they need to be able to trace data back to its source and understand all individual steps that were applied in the transformation process to the data. +- They prefer simplicity and robustness in use over being able to customize the transformations. +- They would like to be offered a range of options to choose from, but not too many. +- They would like to be able to use the package without having to read too much documentation, but require clear documentation on the transformations that are applied. +- Data provenance and reproducibility are important to them, so they need to be able to trace data back to its source and understand all individual steps that were applied in the transformation process to the data. + +The users differ in their experience with Python and programming in general, we aim to serve three main user types + +### Programmers and Data Engineers + +These users are: + +- Well familiar with using Python and object-oriented programming languages, data processing and exchange formats. +- Interacts with the package through Python scripts, Python modules and Jupyter notebooks. -The users differ in their experience with Python and programming in general, we aim to serve three main user types: +#### Energy System Modeller -1. Programmers and Data Engineers: - * Well familiar with using Python and object-oriented programming languages, data processing and exchange formats. - * Interacts with the package through Python scripts, Python modules and Jupyter notebooks. -2. Energy System Modeller: - * Only basic Python programming skills. - * Interacts with the package through a Jupyter notebook or a Python script; may want to simply access and inspect the data without writing and executing code. -3. Energy Analyst: - * No programming skills or only very basic Python skills like using pandas or DataFrames. - * Interacts with the package either through a Jupyter notebook or wants to be able to use csv / Spreadsheet files for inspection and use of the data. +These users are: + +- Only basic Python programming skills. +- Interacts with the package through a Jupyter notebook or a Python script; may want to simply access and inspect the data without writing and executing code. + +#### Energy Analyst + +These users are: + +- No programming skills or only very basic Python skills like using pandas or DataFrames. +- Interacts with the package either through a Jupyter notebook or wants to be able to use csv / Spreadsheet files for inspection and use of the data. ## Use Cases @@ -66,6 +71,7 @@ Below follow central use cases that we want to serve with `technologydata`. - **Secondary**: Energy Analyst (if reviewing pre-screened data) #### 🎯 Goal + Detect and correct inconsistencies or omissions in techno-economic input data, ensuring it adheres to the package's schema and parameter constraints. #### πŸ“š Pre-conditions @@ -85,12 +91,16 @@ Detect and correct inconsistencies or omissions in techno-economic input data, e 1. User gets/loads or defines technology input (via JSON, DataFrame, or the packaged data). 2. `Technology` object is instantiated, triggering automatic validation. 3. Schema checks enforce: - - Presence of required fields (e.g., name, parameter value, unit, source) - - Consistency between parameters (e.g., energy unit alignment) + +- Presence of required fields (e.g., name, parameter value, unit, source) +- Consistency between parameters (e.g., energy unit alignment) + 4. User manually runs `.check_consistency()` or similar method to detect conflicting or incomplete parameters. 5. User manually runs `.calculate_parameters()` to derive - - specific missing parameters based on known rules (e.g., specific investment, EAC), or - - all missing parameters that can be derived from the existing parameters + +- specific missing parameters based on known rules (e.g., specific investment, EAC), or +- all missing parameters that can be derived from the existing parameters + 6. The User can manually update parameters, either overwriting existing or adding missing ones. 7. Validated and completed `Technology` object is now ready for transformation or analysis. @@ -141,13 +151,13 @@ tech = Technology( #### πŸ“Š Importance & Frequency -* Importance: High -* Usage Frequency: Frequent, core workflow entry point +- Importance: High +- Usage Frequency: Frequent, core workflow entry point #### πŸ“Œ Notes -* Consistency logic includes checks for units, and dependency constraints between parameters (e.g. one parameter may be derived from one or more other parameters). -* Schema-based validation is extensible to new parameter types and sources. +- Consistency logic includes checks for units, and dependency constraints between parameters (e.g. one parameter may be derived from one or more other parameters). +- Schema-based validation is extensible to new parameter types and sources. ### 🧾 UC-002: Harmonize multiple input datasets @@ -156,6 +166,7 @@ tech = Technology( - **Secondary**: Data Engineer #### 🎯 Goal + Enable the user to bring multiple techno-economic datasets to a common basis (currency, year, units) using explicit, user-invoked transformation methods, so that they can be compared or combined. #### πŸ“š Pre-conditions @@ -171,10 +182,12 @@ Enable the user to bring multiple techno-economic datasets to a common basis (cu 1. User loads datasets (e.g., from JSON, CSV, or DataFrame) into separate `DataPackage` or `TechnologyCollection` objects or creates them programmatically through the package's class interface. 2. User inspects the datasets to identify differences in currency, year, units, or other conventions. 3. User applies transformation methods as needed: - - `.adjust_currency(target_currency)` - - `.adjust_scale(target_capacity, scaling_exponent)` - - `.adjust_region(target_region)` - - Unit conversions per parameter via Technology or TechnologyCollection level methods + +- `.adjust_currency(target_currency)` +- `.adjust_scale(target_capacity, scaling_exponent)` +- `.adjust_region(target_region)` +- Unit conversions per parameter via Technology or TechnologyCollection level methods + 4. User repeats or chains transformations as required or desired for each dataset. 5. User verifies harmonization by inspecting key parameters and units. 6. Harmonized datasets are now ready for comparison, merging, or further analysis. @@ -209,14 +222,14 @@ dp1.technologies = dp1.technologies.adjust_units(parameter="specific-investment" #### πŸ“Š Importance & Frequency -* Importance: High -* Usage Frequency: Frequent, especially when integrating or comparing datasets +- Importance: High +- Usage Frequency: Frequent, especially when integrating or comparing datasets #### πŸ“Œ Notes -* All harmonization steps are explicit and user-driven; no automatic harmonization is performed. -* The user is responsible for the order and combination of transformations. -* Optionally, each transformation could be logged as data provenance, allowing users to trace back the steps taken and record them in e.g. a output file for documentation. +- All harmonization steps are explicit and user-driven; no automatic harmonization is performed. +- The user is responsible for the order and combination of transformations. +- Optionally, each transformation could be logged as data provenance, allowing users to trace back the steps taken and record them in e.g. a output file for documentation. ### 🧾 UC-003: Transform assumptions into model-ready formats @@ -224,6 +237,7 @@ dp1.technologies = dp1.technologies.adjust_units(parameter="specific-investment" - **Primary**: Energy System Modeller, Programmer #### 🎯 Goal + Allow the user to derive and access all model-relevant parameters (e.g., EAC, specific investment) from harmonized data, ready for direct use in energy system models such as PyPSA-Eur. #### πŸ“š Pre-conditions @@ -237,8 +251,10 @@ Allow the user to derive and access all model-relevant parameters (e.g., EAC, sp 1. User ensures all required base parameters (e.g., WACC, lifetime, investment) are present and harmonized. 2. User invokes calculation methods to derive model-ready parameters: - - `.calculate_parameters(parameters="EAC")` - - `.calculate_parameters(parameters="specific-investment")` + +- `.calculate_parameters(parameters="EAC")` +- `.calculate_parameters(parameters="specific-investment")` + 3. System computes and adds the derived parameters to the relevant `Technology` objects. 4. User accesses the parameters directly from the `Technology` objects for export or further use. @@ -263,8 +279,8 @@ tech["EAC"].value # Access the calculated EAC parameter value #### πŸ“Š Importance & Frequency -* Importance: High -* Usage Frequency: Frequent, especially before running model scenarios +- Importance: High +- Usage Frequency: Frequent, especially before running model scenarios #### πŸ“Œ Notes @@ -276,6 +292,7 @@ tech["EAC"].value # Access the calculated EAC parameter value - **Primary**: Energy Analyst, Energy System Modeller #### 🎯 Goal + Enable the user to systematically compare key techno-economic parameters (e.g., CAPEX, OPEX, efficiency) across multiple harmonized datasets in a tabular format. #### πŸ“š Pre-conditions @@ -316,13 +333,13 @@ techs["lifetime"].values # Access lifetime values across technologies #### πŸ“Š Importance & Frequency -* Importance: Medium -* Usage Frequency: Regular, especially for data quality checks and exploring values to be included into a model +- Importance: Medium +- Usage Frequency: Regular, especially for data quality checks and exploring values to be included into a model #### πŸ“Œ Notes -* Tabular comparison is the core feature; visualizations can be build on top of the DataFrame by the user themselves. -* Optional: Outlier detection and summary statistics could be a nice feature, but are also part of `pandas` already, so we can put this into the documentation as a suggestion for the user to explore themselves. +- Tabular comparison is the core feature; visualizations can be build on top of the DataFrame by the user themselves. +- Optional: Outlier detection and summary statistics could be a nice feature, but are also part of `pandas` already, so we can put this into the documentation as a suggestion for the user to explore themselves. ### 🧾 UC-005: Audit data provenance and transformation trace @@ -331,6 +348,7 @@ techs["lifetime"].values # Access lifetime values across technologies - **Secondary**: Energy Analyst #### 🎯 Goal + Allow the user to trace the origin and transformation history of each data point, enabling transparency and reproducibility. #### πŸ“š Pre-conditions @@ -344,8 +362,10 @@ Allow the user to trace the origin and transformation history of each data point 1. User selects a `parameter` of a `Technology` object. 2. The user requests the provenance information for that parameter. 3. System provides the information about: - - Original source(s) of the data (from `Source` and `SourceCollection`) of the parameter - - All transformations applied by our package (e.g., currency adjustment, scaling, calculations, including the values that were used for these transformations) + +- Original source(s) of the data (from `Source` and `SourceCollection`) of the parameter +- All transformations applied by our package (e.g., currency adjustment, scaling, calculations, including the values that were used for these transformations) + 4. User can export or document the provenance trace for reporting or documentation. #### πŸ” Alternate Flows @@ -370,10 +390,10 @@ dp.to_json("") # Includes provenance information in the JSON #### πŸ“Š Importance & Frequency -* Importance: Medium (for transparency and reproducibility) -* Usage Frequency: Occasional, but critical for future-us, report writing and rapport +- Importance: Medium (for transparency and reproducibility) +- Usage Frequency: Occasional, but critical for future-us, report writing and rapport #### πŸ“Œ Notes -* Only transformations performed by the package are tracked; user-made changes must be recorded manually. -* Provenance tracking should be automatic and cover all package-driven transformations. +- Only transformations performed by the package are tracked; user-made changes must be recorded manually. +- Provenance tracking should be automatic and cover all package-driven transformations. diff --git a/docs/parameter.md b/docs/user_guide/parameter.md similarity index 100% rename from docs/parameter.md rename to docs/user_guide/parameter.md index 38ae2a9e..0b1576f7 100644 --- a/docs/parameter.md +++ b/docs/user_guide/parameter.md @@ -1,10 +1,11 @@ +# `Parameter` Class Documentation + -# `Parameter` Class Documentation +--> ## Overview @@ -127,7 +128,6 @@ param_mixed_hhv = param_mixed.change_heating_value("HHV") 0.13 kWh/kg higher_heating_value ``` - ## Limitations & Missing Features - **Provenance/Note/Sources in Arithmetic**: When performing arithmetic operations, the handling and merging of `provenance`, `note`, and `sources` is not yet implemented (see `TODO` comments in the code). diff --git a/mkdocs.yaml b/mkdocs.yaml new file mode 100644 index 00000000..c20fb6bc --- /dev/null +++ b/mkdocs.yaml @@ -0,0 +1,175 @@ +site_name: Documentation +site_url: !ENV READTHEDOCS_CANONICAL_URL +repo_url: https://github.com/PyPSA/technology-data +repo_name: PyPSA/technology-data +edit_uri: edit/master/docs/ + +# Navigation +nav: +- Home: + - Home: index.md + - Overview: + - Release Notes: home/release-notes.md + - Getting Started: + - Installation: home/installation.md + - Reference: + - Users: home/users.md + - Citing: home/citing.md + - License: home/license.md + - Support: + - FAQ: home/faq.md + - Contacts: home/contacts.md + +- User Guide: + - Use Cases: user_guide/design.md + - Parameter: user_guide/parameter.md + +- Contributing: + - Instructions: contributing/instructions.md + - Code of Conduct: contributing/CODE_OF_CONDUCT.md + - Contributors: contributing/contributors.md + +# Theme settings +theme: + name: material + logo: assets/logo/technology_data_logo.png + favicon: assets/logo/technology_data_logo.png + custom_dir: docs/assets/overrides + font: + text: Overpass + features: + - navigation.tabs + - navigation.tabs.sticky + - navigation.sections + - navigation.tracking # Anchor tracking + - navigation.indexes # Section indexes + - navigation.path + - navigation.top # Back to top button + # - navigation.foot + - header.autohide + - content.action.edit + - content.action.view + - toc.follow + - search + - search.suggest + - search.highlight + - search.share + - announce.dismiss + + palette: + - media: "(prefers-color-scheme: light)" + primary: custom + scheme: default + toggle: + icon: material/weather-sunny + name: Switch to dark mode + - media: "(prefers-color-scheme: dark)" + primary: custom + scheme: slate + toggle: + icon: material/weather-night + name: Switch to light mode + +extra_css: +- assets/stylesheets/extra.css + +extra_javascript: +- assets/javascripts/readthedocs.js +- assets/javascripts/mathjax.js +- https://unpkg.com/mathjax@3/es5/tex-mml-chtml.js + +markdown_extensions: +# Callouts/ Admonitions +- admonition +- pymdownx.details +- pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format +- pymdownx.arithmatex: + generic: true +# Footnotes +- footnotes +# Tabbed content +- pymdownx.tabbed: + alternate_style: true # Abbreviations +- pymdownx.snippets: + auto_append: + - includes/abbreviations.md +- abbr +- attr_list +- md_in_html + # Emojis +- pymdownx.emoji: + emoji_index: !!python/name:material.extensions.emoji.twemoji + emoji_generator: !!python/name:material.extensions.emoji.to_svg + # Toctree with permalinks +- toc: + title: On this page + permalink: true + toc_depth: 3 + # Grids +- md_in_html +- pymdownx.caret +- pymdownx.tilde + + +plugins: +- search +- tags +- autolinks +- table-reader +- mkdocs-video +- git-revision-date-localized: + type: timeago + timezone: Europe/Berlin + enable_creation_date: true +- git-committers: + repository: PyPSA/PyPSA + branch: v1-docs # TODO: Change to master before merging + token: !!python/object/apply:os.getenv ["MKDOCS_GIT_COMMITTERS_APIKEY"] +- argref: + autolinks: + - reference_prefix: ":octicons-git-pull-request-16:" + target_url: https://github.com/PyPSA/technology-data/pull/ +- social: + cards_layout_options: + font_family: Overpass + background_color: "#292F36" + +# Docstring generation +- mkdocstrings: + enabled: true + default_handler: python + handlers: + python: + options: + docstring_style: numpy + docstring_options: + ignore_init_summary: true + docstring_section_style: list + filters: + - "!^_[^_]" + - "!logger" + heading_level: 1 + merge_init_into_class: true + parameter_headings: false + separate_signature: true + show_root_heading: true + show_root_full_path: false + show_signature_annotations: true + show_source: false + show_symbol_type_heading: true + show_symbol_type_toc: true + signature_crossrefs: true + summary: true + show_if_no_docstring: true + show_inheritance_diagram: true + + +hooks: +- docs/assets/overrides/hooks/shortcodes.py + +copyright: >- + © The technology-data authors diff --git a/pyproject.toml b/pyproject.toml index 70a7b3a2..299f7a5b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,7 +45,7 @@ BugTracker = "https://github.com/PyPSA/technology-data/issues" Changelog = "https://github.com/PyPSA/technology-data/releases" # https://docs.astral.sh/uv/concepts/projects/dependencies/#dependency-groups -# editable install of package and non-packaged dependencies +# editable installation of package and non-packaged dependencies [dependency-groups] dev = [ "ipykernel>=6.29.5", @@ -58,13 +58,26 @@ dev = [ ] docs = [ + "cairosvg>=2.8.2", + "gurobipy>=12.0.3", + "mkdocs-argref-plugin>=0.5.0", "mkdocs-autolinks-plugin>=0.7.1", + "mkdocs-ezlinks-plugin>=0.1.14", + "mkdocs-git-committers-plugin>=0.2.3", "mkdocs-git-revision-date-localized-plugin>=1.4.7", + "mkdocs-jupyter>=0.25.1", "mkdocs-material>=9.6.14", "mkdocs-minify-plugin>=0.8.0", "mkdocs-open-in-new-tab>=1.0.8", + "mkdocs-redirects>=1.2.2", + "mkdocs-table-reader-plugin>=3.1.0", + "mkdocs-video>=1.5.0", "mkdocstrings>=0.29.1", "mkdocstrings-python>=1.16.11", + "openpyxl>=3.1.5", + "pillow>=11.3.0", + "python-calamine>=0.4.0", + "tsam>=2.3.9", ] [tool.pytest.ini_options] @@ -100,9 +113,7 @@ source = [ ] # Static type checker settings - [tool.mypy] -exclude = ['dev/*', 'examples/*', 'doc/*', 'test/*'] ignore_missing_imports = true no_implicit_optional = true warn_unused_ignores = true @@ -127,6 +138,7 @@ ignore_missing_imports = true [tool.ruff] extend-include = ['*.ipynb'] +exclude = ["docs/"] [tool.ruff.lint] select = [ diff --git a/uv.lock b/uv.lock index 223004a8..d1d98700 100644 --- a/uv.lock +++ b/uv.lock @@ -1,64 +1,64 @@ version = 1 -revision = 1 +revision = 2 requires-python = ">=3.12" [[package]] name = "annotated-types" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload_time = "2024-05-20T21:33:25.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload_time = "2024-05-20T21:33:24.1Z" }, ] [[package]] name = "appnope" version = "0.1.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170 } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload_time = "2024-02-06T09:43:11.258Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload_time = "2024-02-06T09:43:09.663Z" }, ] [[package]] name = "asttokens" version = "3.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978 } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978, upload_time = "2024-11-30T04:30:14.439Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload_time = "2024-11-30T04:30:10.946Z" }, ] [[package]] name = "attrs" version = "25.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload_time = "2025-03-13T11:10:22.779Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload_time = "2025-03-13T11:10:21.14Z" }, ] [[package]] name = "babel" version = "2.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload_time = "2025-02-01T15:17:41.026Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload_time = "2025-02-01T15:17:37.39Z" }, ] [[package]] name = "backrefs" version = "5.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/eb/a7/312f673df6a79003279e1f55619abbe7daebbb87c17c976ddc0345c04c7b/backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59", size = 5765857 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/a7/312f673df6a79003279e1f55619abbe7daebbb87c17c976ddc0345c04c7b/backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59", size = 5765857, upload_time = "2025-06-22T19:34:13.97Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/4d/798dc1f30468134906575156c089c492cf79b5a5fd373f07fe26c4d046bf/backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f", size = 380267 }, - { url = "https://files.pythonhosted.org/packages/55/07/f0b3375bf0d06014e9787797e6b7cc02b38ac9ff9726ccfe834d94e9991e/backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf", size = 392072 }, - { url = "https://files.pythonhosted.org/packages/9d/12/4f345407259dd60a0997107758ba3f221cf89a9b5a0f8ed5b961aef97253/backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa", size = 397947 }, - { url = "https://files.pythonhosted.org/packages/10/bf/fa31834dc27a7f05e5290eae47c82690edc3a7b37d58f7fb35a1bdbf355b/backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b", size = 399843 }, - { url = "https://files.pythonhosted.org/packages/fc/24/b29af34b2c9c41645a9f4ff117bae860291780d73880f449e0b5d948c070/backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9", size = 411762 }, - { url = "https://files.pythonhosted.org/packages/41/ff/392bff89415399a979be4a65357a41d92729ae8580a66073d8ec8d810f98/backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60", size = 380265 }, + { url = "https://files.pythonhosted.org/packages/19/4d/798dc1f30468134906575156c089c492cf79b5a5fd373f07fe26c4d046bf/backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f", size = 380267, upload_time = "2025-06-22T19:34:05.252Z" }, + { url = "https://files.pythonhosted.org/packages/55/07/f0b3375bf0d06014e9787797e6b7cc02b38ac9ff9726ccfe834d94e9991e/backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf", size = 392072, upload_time = "2025-06-22T19:34:06.743Z" }, + { url = "https://files.pythonhosted.org/packages/9d/12/4f345407259dd60a0997107758ba3f221cf89a9b5a0f8ed5b961aef97253/backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa", size = 397947, upload_time = "2025-06-22T19:34:08.172Z" }, + { url = "https://files.pythonhosted.org/packages/10/bf/fa31834dc27a7f05e5290eae47c82690edc3a7b37d58f7fb35a1bdbf355b/backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b", size = 399843, upload_time = "2025-06-22T19:34:09.68Z" }, + { url = "https://files.pythonhosted.org/packages/fc/24/b29af34b2c9c41645a9f4ff117bae860291780d73880f449e0b5d948c070/backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9", size = 411762, upload_time = "2025-06-22T19:34:11.037Z" }, + { url = "https://files.pythonhosted.org/packages/41/ff/392bff89415399a979be4a65357a41d92729ae8580a66073d8ec8d810f98/backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60", size = 380265, upload_time = "2025-06-22T19:34:12.405Z" }, ] [[package]] @@ -69,9 +69,9 @@ dependencies = [ { name = "soupsieve" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload_time = "2025-04-15T17:05:13.836Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285 }, + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload_time = "2025-04-15T17:05:12.221Z" }, ] [[package]] @@ -81,27 +81,72 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "chardet" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a7/fe/7ebfec74d49f97fc55cd38240c7a7d08134002b1e14be8c3897c0dd5e49b/binaryornot-0.4.4.tar.gz", hash = "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", size = 371054 } +sdist = { url = "https://files.pythonhosted.org/packages/a7/fe/7ebfec74d49f97fc55cd38240c7a7d08134002b1e14be8c3897c0dd5e49b/binaryornot-0.4.4.tar.gz", hash = "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", size = 371054, upload_time = "2017-08-03T15:55:25.08Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/24/7e/f7b6f453e6481d1e233540262ccbfcf89adcd43606f44a028d7f5fae5eb2/binaryornot-0.4.4-py2.py3-none-any.whl", hash = "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4", size = 9006 }, + { url = "https://files.pythonhosted.org/packages/24/7e/f7b6f453e6481d1e233540262ccbfcf89adcd43606f44a028d7f5fae5eb2/binaryornot-0.4.4-py2.py3-none-any.whl", hash = "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4", size = 9006, upload_time = "2017-08-03T15:55:31.23Z" }, +] + +[[package]] +name = "bleach" +version = "6.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083, upload_time = "2024-10-29T18:30:40.477Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406, upload_time = "2024-10-29T18:30:38.186Z" }, +] + +[package.optional-dependencies] +css = [ + { name = "tinycss2" }, ] [[package]] name = "boolean-py" version = "5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c4/cf/85379f13b76f3a69bca86b60237978af17d6aa0bc5998978c3b8cf05abb2/boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95", size = 37047 } +sdist = { url = "https://files.pythonhosted.org/packages/c4/cf/85379f13b76f3a69bca86b60237978af17d6aa0bc5998978c3b8cf05abb2/boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95", size = 37047, upload_time = "2025-04-03T10:39:49.734Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/ca/78d423b324b8d77900030fa59c4aa9054261ef0925631cd2501dd015b7b7/boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9", size = 26577, upload_time = "2025-04-03T10:39:48.449Z" }, +] + +[[package]] +name = "cairocffi" +version = "1.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096, upload_time = "2024-06-18T10:56:06.741Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611, upload_time = "2024-06-18T10:55:59.489Z" }, +] + +[[package]] +name = "cairosvg" +version = "2.8.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cairocffi" }, + { name = "cssselect2" }, + { name = "defusedxml" }, + { name = "pillow" }, + { name = "tinycss2" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ab/b9/5106168bd43d7cd8b7cc2a2ee465b385f14b63f4c092bb89eee2d48c8e67/cairosvg-2.8.2.tar.gz", hash = "sha256:07cbf4e86317b27a92318a4cac2a4bb37a5e9c1b8a27355d06874b22f85bef9f", size = 8398590, upload_time = "2025-05-15T06:56:32.653Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/ca/78d423b324b8d77900030fa59c4aa9054261ef0925631cd2501dd015b7b7/boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9", size = 26577 }, + { url = "https://files.pythonhosted.org/packages/67/48/816bd4aaae93dbf9e408c58598bc32f4a8c65f4b86ab560864cb3ee60adb/cairosvg-2.8.2-py3-none-any.whl", hash = "sha256:eab46dad4674f33267a671dce39b64be245911c901c70d65d2b7b0821e852bf5", size = 45773, upload_time = "2025-05-15T06:56:28.552Z" }, ] [[package]] name = "certifi" version = "2025.7.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/de/8a/c729b6b60c66a38f590c4e774decc4b2ec7b0576be8f1aa984a53ffa812a/certifi-2025.7.9.tar.gz", hash = "sha256:c1d2ec05395148ee10cf672ffc28cd37ea0ab0d99f9cc74c43e588cbd111b079", size = 160386 } +sdist = { url = "https://files.pythonhosted.org/packages/de/8a/c729b6b60c66a38f590c4e774decc4b2ec7b0576be8f1aa984a53ffa812a/certifi-2025.7.9.tar.gz", hash = "sha256:c1d2ec05395148ee10cf672ffc28cd37ea0ab0d99f9cc74c43e588cbd111b079", size = 160386, upload_time = "2025-07-09T02:13:58.874Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/66/f3/80a3f974c8b535d394ff960a11ac20368e06b736da395b551a49ce950cce/certifi-2025.7.9-py3-none-any.whl", hash = "sha256:d842783a14f8fdd646895ac26f719a061408834473cfc10203f6a575beb15d39", size = 159230 }, + { url = "https://files.pythonhosted.org/packages/66/f3/80a3f974c8b535d394ff960a11ac20368e06b736da395b551a49ce950cce/certifi-2025.7.9-py3-none-any.whl", hash = "sha256:d842783a14f8fdd646895ac26f719a061408834473cfc10203f6a575beb15d39", size = 159230, upload_time = "2025-07-09T02:13:57.007Z" }, ] [[package]] @@ -111,83 +156,83 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pycparser" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178 }, - { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840 }, - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803 }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850 }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729 }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256 }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424 }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568 }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736 }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448 }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976 }, - { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989 }, - { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802 }, - { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792 }, - { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893 }, - { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810 }, - { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200 }, - { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447 }, - { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358 }, - { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469 }, - { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475 }, - { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009 }, +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload_time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload_time = "2024-09-04T20:44:12.232Z" }, + { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload_time = "2024-09-04T20:44:13.739Z" }, + { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload_time = "2024-09-04T20:44:15.231Z" }, + { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload_time = "2024-09-04T20:44:17.188Z" }, + { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload_time = "2024-09-04T20:44:18.688Z" }, + { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload_time = "2024-09-04T20:44:20.248Z" }, + { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload_time = "2024-09-04T20:44:21.673Z" }, + { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload_time = "2024-09-04T20:44:23.245Z" }, + { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload_time = "2024-09-04T20:44:24.757Z" }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload_time = "2024-09-04T20:44:26.208Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload_time = "2024-09-04T20:44:27.578Z" }, + { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload_time = "2024-09-04T20:44:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload_time = "2024-09-04T20:44:30.289Z" }, + { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload_time = "2024-09-04T20:44:32.01Z" }, + { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload_time = "2024-09-04T20:44:33.606Z" }, + { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload_time = "2024-09-04T20:44:35.191Z" }, + { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload_time = "2024-09-04T20:44:36.743Z" }, + { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload_time = "2024-09-04T20:44:38.492Z" }, + { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload_time = "2024-09-04T20:44:40.046Z" }, + { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload_time = "2024-09-04T20:44:41.616Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload_time = "2024-09-04T20:44:43.733Z" }, + { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload_time = "2024-09-04T20:44:45.309Z" }, ] [[package]] name = "cfgv" version = "3.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114 } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload_time = "2023-08-12T20:38:17.776Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload_time = "2023-08-12T20:38:16.269Z" }, ] [[package]] name = "chardet" version = "5.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618 } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618, upload_time = "2023-08-01T19:23:02.662Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385 }, + { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385, upload_time = "2023-08-01T19:23:00.661Z" }, ] [[package]] name = "charset-normalizer" version = "3.4.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936 }, - { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790 }, - { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924 }, - { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626 }, - { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567 }, - { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957 }, - { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408 }, - { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399 }, - { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815 }, - { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537 }, - { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565 }, - { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357 }, - { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776 }, - { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622 }, - { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435 }, - { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653 }, - { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231 }, - { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243 }, - { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442 }, - { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147 }, - { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057 }, - { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454 }, - { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174 }, - { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166 }, - { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064 }, - { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641 }, - { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload_time = "2025-05-02T08:34:42.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload_time = "2025-05-02T08:32:33.712Z" }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload_time = "2025-05-02T08:32:35.768Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload_time = "2025-05-02T08:32:37.284Z" }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload_time = "2025-05-02T08:32:38.803Z" }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload_time = "2025-05-02T08:32:40.251Z" }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload_time = "2025-05-02T08:32:41.705Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload_time = "2025-05-02T08:32:43.709Z" }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload_time = "2025-05-02T08:32:46.197Z" }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload_time = "2025-05-02T08:32:48.105Z" }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload_time = "2025-05-02T08:32:49.719Z" }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload_time = "2025-05-02T08:32:51.404Z" }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload_time = "2025-05-02T08:32:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload_time = "2025-05-02T08:32:54.573Z" }, + { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload_time = "2025-05-02T08:32:56.363Z" }, + { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload_time = "2025-05-02T08:32:58.551Z" }, + { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload_time = "2025-05-02T08:33:00.342Z" }, + { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload_time = "2025-05-02T08:33:02.081Z" }, + { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload_time = "2025-05-02T08:33:04.063Z" }, + { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload_time = "2025-05-02T08:33:06.418Z" }, + { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload_time = "2025-05-02T08:33:08.183Z" }, + { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload_time = "2025-05-02T08:33:09.986Z" }, + { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload_time = "2025-05-02T08:33:11.814Z" }, + { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload_time = "2025-05-02T08:33:13.707Z" }, + { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload_time = "2025-05-02T08:33:15.458Z" }, + { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload_time = "2025-05-02T08:33:17.06Z" }, + { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload_time = "2025-05-02T08:33:18.753Z" }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload_time = "2025-05-02T08:34:40.053Z" }, ] [[package]] @@ -197,18 +242,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342 } +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload_time = "2025-05-20T23:19:49.832Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215 }, + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload_time = "2025-05-20T23:19:47.796Z" }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload_time = "2022-10-25T02:36:22.414Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload_time = "2022-10-25T02:36:20.889Z" }, ] [[package]] @@ -218,150 +263,216 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210 } +sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210, upload_time = "2024-03-12T16:53:41.133Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 }, + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180, upload_time = "2024-03-12T16:53:39.226Z" }, ] [[package]] name = "coverage" version = "7.10.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/87/0e/66dbd4c6a7f0758a8d18044c048779ba21fb94856e1edcf764bd5403e710/coverage-7.10.1.tar.gz", hash = "sha256:ae2b4856f29ddfe827106794f3589949a57da6f0d38ab01e24ec35107979ba57", size = 819938 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/3f/b051feeb292400bd22d071fdf933b3ad389a8cef5c80c7866ed0c7414b9e/coverage-7.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b7dc7f0a75a7eaa4584e5843c873c561b12602439d2351ee28c7478186c4da4", size = 214934 }, - { url = "https://files.pythonhosted.org/packages/f8/e4/a61b27d5c4c2d185bdfb0bfe9d15ab4ac4f0073032665544507429ae60eb/coverage-7.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:607f82389f0ecafc565813aa201a5cade04f897603750028dd660fb01797265e", size = 215173 }, - { url = "https://files.pythonhosted.org/packages/8a/01/40a6ee05b60d02d0bc53742ad4966e39dccd450aafb48c535a64390a3552/coverage-7.10.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f7da31a1ba31f1c1d4d5044b7c5813878adae1f3af8f4052d679cc493c7328f4", size = 246190 }, - { url = "https://files.pythonhosted.org/packages/11/ef/a28d64d702eb583c377255047281305dc5a5cfbfb0ee36e721f78255adb6/coverage-7.10.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:51fe93f3fe4f5d8483d51072fddc65e717a175490804e1942c975a68e04bf97a", size = 248618 }, - { url = "https://files.pythonhosted.org/packages/6a/ad/73d018bb0c8317725370c79d69b5c6e0257df84a3b9b781bda27a438a3be/coverage-7.10.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3e59d00830da411a1feef6ac828b90bbf74c9b6a8e87b8ca37964925bba76dbe", size = 250081 }, - { url = "https://files.pythonhosted.org/packages/2d/dd/496adfbbb4503ebca5d5b2de8bed5ec00c0a76558ffc5b834fd404166bc9/coverage-7.10.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:924563481c27941229cb4e16eefacc35da28563e80791b3ddc5597b062a5c386", size = 247990 }, - { url = "https://files.pythonhosted.org/packages/18/3c/a9331a7982facfac0d98a4a87b36ae666fe4257d0f00961a3a9ef73e015d/coverage-7.10.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ca79146ee421b259f8131f153102220b84d1a5e6fb9c8aed13b3badfd1796de6", size = 246191 }, - { url = "https://files.pythonhosted.org/packages/62/0c/75345895013b83f7afe92ec595e15a9a525ede17491677ceebb2ba5c3d85/coverage-7.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2b225a06d227f23f386fdc0eab471506d9e644be699424814acc7d114595495f", size = 247400 }, - { url = "https://files.pythonhosted.org/packages/e2/a9/98b268cfc5619ef9df1d5d34fee408ecb1542d9fd43d467e5c2f28668cd4/coverage-7.10.1-cp312-cp312-win32.whl", hash = "sha256:5ba9a8770effec5baaaab1567be916c87d8eea0c9ad11253722d86874d885eca", size = 217338 }, - { url = "https://files.pythonhosted.org/packages/fe/31/22a5440e4d1451f253c5cd69fdcead65e92ef08cd4ec237b8756dc0b20a7/coverage-7.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:9eb245a8d8dd0ad73b4062135a251ec55086fbc2c42e0eb9725a9b553fba18a3", size = 218125 }, - { url = "https://files.pythonhosted.org/packages/d6/2b/40d9f0ce7ee839f08a43c5bfc9d05cec28aaa7c9785837247f96cbe490b9/coverage-7.10.1-cp312-cp312-win_arm64.whl", hash = "sha256:7718060dd4434cc719803a5e526838a5d66e4efa5dc46d2b25c21965a9c6fcc4", size = 216523 }, - { url = "https://files.pythonhosted.org/packages/ef/72/135ff5fef09b1ffe78dbe6fcf1e16b2e564cd35faeacf3d63d60d887f12d/coverage-7.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ebb08d0867c5a25dffa4823377292a0ffd7aaafb218b5d4e2e106378b1061e39", size = 214960 }, - { url = "https://files.pythonhosted.org/packages/b1/aa/73a5d1a6fc08ca709a8177825616aa95ee6bf34d522517c2595484a3e6c9/coverage-7.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f32a95a83c2e17422f67af922a89422cd24c6fa94041f083dd0bb4f6057d0bc7", size = 215220 }, - { url = "https://files.pythonhosted.org/packages/8d/40/3124fdd45ed3772a42fc73ca41c091699b38a2c3bd4f9cb564162378e8b6/coverage-7.10.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c4c746d11c8aba4b9f58ca8bfc6fbfd0da4efe7960ae5540d1a1b13655ee8892", size = 245772 }, - { url = "https://files.pythonhosted.org/packages/42/62/a77b254822efa8c12ad59e8039f2bc3df56dc162ebda55e1943e35ba31a5/coverage-7.10.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7f39edd52c23e5c7ed94e0e4bf088928029edf86ef10b95413e5ea670c5e92d7", size = 248116 }, - { url = "https://files.pythonhosted.org/packages/1d/01/8101f062f472a3a6205b458d18ef0444a63ae5d36a8a5ed5dd0f6167f4db/coverage-7.10.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab6e19b684981d0cd968906e293d5628e89faacb27977c92f3600b201926b994", size = 249554 }, - { url = "https://files.pythonhosted.org/packages/8f/7b/e51bc61573e71ff7275a4f167aecbd16cb010aefdf54bcd8b0a133391263/coverage-7.10.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5121d8cf0eacb16133501455d216bb5f99899ae2f52d394fe45d59229e6611d0", size = 247766 }, - { url = "https://files.pythonhosted.org/packages/4b/71/1c96d66a51d4204a9d6d12df53c4071d87e110941a2a1fe94693192262f5/coverage-7.10.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:df1c742ca6f46a6f6cbcaef9ac694dc2cb1260d30a6a2f5c68c5f5bcfee1cfd7", size = 245735 }, - { url = "https://files.pythonhosted.org/packages/13/d5/efbc2ac4d35ae2f22ef6df2ca084c60e13bd9378be68655e3268c80349ab/coverage-7.10.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:40f9a38676f9c073bf4b9194707aa1eb97dca0e22cc3766d83879d72500132c7", size = 247118 }, - { url = "https://files.pythonhosted.org/packages/d1/22/073848352bec28ca65f2b6816b892fcf9a31abbef07b868487ad15dd55f1/coverage-7.10.1-cp313-cp313-win32.whl", hash = "sha256:2348631f049e884839553b9974f0821d39241c6ffb01a418efce434f7eba0fe7", size = 217381 }, - { url = "https://files.pythonhosted.org/packages/b7/df/df6a0ff33b042f000089bd11b6bb034bab073e2ab64a56e78ed882cba55d/coverage-7.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:4072b31361b0d6d23f750c524f694e1a417c1220a30d3ef02741eed28520c48e", size = 218152 }, - { url = "https://files.pythonhosted.org/packages/30/e3/5085ca849a40ed6b47cdb8f65471c2f754e19390b5a12fa8abd25cbfaa8f/coverage-7.10.1-cp313-cp313-win_arm64.whl", hash = "sha256:3e31dfb8271937cab9425f19259b1b1d1f556790e98eb266009e7a61d337b6d4", size = 216559 }, - { url = "https://files.pythonhosted.org/packages/cc/93/58714efbfdeb547909feaabe1d67b2bdd59f0597060271b9c548d5efb529/coverage-7.10.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1c4f679c6b573a5257af6012f167a45be4c749c9925fd44d5178fd641ad8bf72", size = 215677 }, - { url = "https://files.pythonhosted.org/packages/c0/0c/18eaa5897e7e8cb3f8c45e563e23e8a85686b4585e29d53cacb6bc9cb340/coverage-7.10.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:871ebe8143da284bd77b84a9136200bd638be253618765d21a1fce71006d94af", size = 215899 }, - { url = "https://files.pythonhosted.org/packages/84/c1/9d1affacc3c75b5a184c140377701bbf14fc94619367f07a269cd9e4fed6/coverage-7.10.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:998c4751dabf7d29b30594af416e4bf5091f11f92a8d88eb1512c7ba136d1ed7", size = 257140 }, - { url = "https://files.pythonhosted.org/packages/3d/0f/339bc6b8fa968c346df346068cca1f24bdea2ddfa93bb3dc2e7749730962/coverage-7.10.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:780f750a25e7749d0af6b3631759c2c14f45de209f3faaa2398312d1c7a22759", size = 259005 }, - { url = "https://files.pythonhosted.org/packages/c8/22/89390864b92ea7c909079939b71baba7e5b42a76bf327c1d615bd829ba57/coverage-7.10.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:590bdba9445df4763bdbebc928d8182f094c1f3947a8dc0fc82ef014dbdd8324", size = 261143 }, - { url = "https://files.pythonhosted.org/packages/2c/56/3d04d89017c0c41c7a71bd69b29699d919b6bbf2649b8b2091240b97dd6a/coverage-7.10.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b2df80cb6a2af86d300e70acb82e9b79dab2c1e6971e44b78dbfc1a1e736b53", size = 258735 }, - { url = "https://files.pythonhosted.org/packages/cb/40/312252c8afa5ca781063a09d931f4b9409dc91526cd0b5a2b84143ffafa2/coverage-7.10.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d6a558c2725bfb6337bf57c1cd366c13798bfd3bfc9e3dd1f4a6f6fc95a4605f", size = 256871 }, - { url = "https://files.pythonhosted.org/packages/1f/2b/564947d5dede068215aaddb9e05638aeac079685101462218229ddea9113/coverage-7.10.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e6150d167f32f2a54690e572e0a4c90296fb000a18e9b26ab81a6489e24e78dd", size = 257692 }, - { url = "https://files.pythonhosted.org/packages/93/1b/c8a867ade85cb26d802aea2209b9c2c80613b9c122baa8c8ecea6799648f/coverage-7.10.1-cp313-cp313t-win32.whl", hash = "sha256:d946a0c067aa88be4a593aad1236493313bafaa27e2a2080bfe88db827972f3c", size = 218059 }, - { url = "https://files.pythonhosted.org/packages/a1/fe/cd4ab40570ae83a516bf5e754ea4388aeedd48e660e40c50b7713ed4f930/coverage-7.10.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e37c72eaccdd5ed1130c67a92ad38f5b2af66eeff7b0abe29534225db2ef7b18", size = 219150 }, - { url = "https://files.pythonhosted.org/packages/8d/16/6e5ed5854be6d70d0c39e9cb9dd2449f2c8c34455534c32c1a508c7dbdb5/coverage-7.10.1-cp313-cp313t-win_arm64.whl", hash = "sha256:89ec0ffc215c590c732918c95cd02b55c7d0f569d76b90bb1a5e78aa340618e4", size = 217014 }, - { url = "https://files.pythonhosted.org/packages/54/8e/6d0bfe9c3d7121cf936c5f8b03e8c3da1484fb801703127dba20fb8bd3c7/coverage-7.10.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:166d89c57e877e93d8827dac32cedae6b0277ca684c6511497311249f35a280c", size = 214951 }, - { url = "https://files.pythonhosted.org/packages/f2/29/e3e51a8c653cf2174c60532aafeb5065cea0911403fa144c9abe39790308/coverage-7.10.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:bed4a2341b33cd1a7d9ffc47df4a78ee61d3416d43b4adc9e18b7d266650b83e", size = 215229 }, - { url = "https://files.pythonhosted.org/packages/e0/59/3c972080b2fa18b6c4510201f6d4dc87159d450627d062cd9ad051134062/coverage-7.10.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ddca1e4f5f4c67980533df01430184c19b5359900e080248bbf4ed6789584d8b", size = 245738 }, - { url = "https://files.pythonhosted.org/packages/2e/04/fc0d99d3f809452654e958e1788454f6e27b34e43f8f8598191c8ad13537/coverage-7.10.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:37b69226001d8b7de7126cad7366b0778d36777e4d788c66991455ba817c5b41", size = 248045 }, - { url = "https://files.pythonhosted.org/packages/5e/2e/afcbf599e77e0dfbf4c97197747250d13d397d27e185b93987d9eaac053d/coverage-7.10.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2f22102197bcb1722691296f9e589f02b616f874e54a209284dd7b9294b0b7f", size = 249666 }, - { url = "https://files.pythonhosted.org/packages/6e/ae/bc47f7f8ecb7a06cbae2bf86a6fa20f479dd902bc80f57cff7730438059d/coverage-7.10.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1e0c768b0f9ac5839dac5cf88992a4bb459e488ee8a1f8489af4cb33b1af00f1", size = 247692 }, - { url = "https://files.pythonhosted.org/packages/b6/26/cbfa3092d31ccba8ba7647e4d25753263e818b4547eba446b113d7d1efdf/coverage-7.10.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:991196702d5e0b120a8fef2664e1b9c333a81d36d5f6bcf6b225c0cf8b0451a2", size = 245536 }, - { url = "https://files.pythonhosted.org/packages/56/77/9c68e92500e6a1c83d024a70eadcc9a173f21aadd73c4675fe64c9c43fdf/coverage-7.10.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ae8e59e5f4fd85d6ad34c2bb9d74037b5b11be072b8b7e9986beb11f957573d4", size = 246954 }, - { url = "https://files.pythonhosted.org/packages/7f/a5/ba96671c5a669672aacd9877a5987c8551501b602827b4e84256da2a30a7/coverage-7.10.1-cp314-cp314-win32.whl", hash = "sha256:042125c89cf74a074984002e165d61fe0e31c7bd40ebb4bbebf07939b5924613", size = 217616 }, - { url = "https://files.pythonhosted.org/packages/e7/3c/e1e1eb95fc1585f15a410208c4795db24a948e04d9bde818fe4eb893bc85/coverage-7.10.1-cp314-cp314-win_amd64.whl", hash = "sha256:a22c3bfe09f7a530e2c94c87ff7af867259c91bef87ed2089cd69b783af7b84e", size = 218412 }, - { url = "https://files.pythonhosted.org/packages/b0/85/7e1e5be2cb966cba95566ba702b13a572ca744fbb3779df9888213762d67/coverage-7.10.1-cp314-cp314-win_arm64.whl", hash = "sha256:ee6be07af68d9c4fca4027c70cea0c31a0f1bc9cb464ff3c84a1f916bf82e652", size = 216776 }, - { url = "https://files.pythonhosted.org/packages/62/0f/5bb8f29923141cca8560fe2217679caf4e0db643872c1945ac7d8748c2a7/coverage-7.10.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d24fb3c0c8ff0d517c5ca5de7cf3994a4cd559cde0315201511dbfa7ab528894", size = 215698 }, - { url = "https://files.pythonhosted.org/packages/80/29/547038ffa4e8e4d9e82f7dfc6d152f75fcdc0af146913f0ba03875211f03/coverage-7.10.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1217a54cfd79be20512a67ca81c7da3f2163f51bbfd188aab91054df012154f5", size = 215902 }, - { url = "https://files.pythonhosted.org/packages/e1/8a/7aaa8fbfaed900147987a424e112af2e7790e1ac9cd92601e5bd4e1ba60a/coverage-7.10.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:51f30da7a52c009667e02f125737229d7d8044ad84b79db454308033a7808ab2", size = 257230 }, - { url = "https://files.pythonhosted.org/packages/e5/1d/c252b5ffac44294e23a0d79dd5acf51749b39795ccc898faeabf7bee903f/coverage-7.10.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ed3718c757c82d920f1c94089066225ca2ad7f00bb904cb72b1c39ebdd906ccb", size = 259194 }, - { url = "https://files.pythonhosted.org/packages/16/ad/6c8d9f83d08f3bac2e7507534d0c48d1a4f52c18e6f94919d364edbdfa8f/coverage-7.10.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc452481e124a819ced0c25412ea2e144269ef2f2534b862d9f6a9dae4bda17b", size = 261316 }, - { url = "https://files.pythonhosted.org/packages/d6/4e/f9bbf3a36c061e2e0e0f78369c006d66416561a33d2bee63345aee8ee65e/coverage-7.10.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9d6f494c307e5cb9b1e052ec1a471060f1dea092c8116e642e7a23e79d9388ea", size = 258794 }, - { url = "https://files.pythonhosted.org/packages/87/82/e600bbe78eb2cb0541751d03cef9314bcd0897e8eea156219c39b685f869/coverage-7.10.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:fc0e46d86905ddd16b85991f1f4919028092b4e511689bbdaff0876bd8aab3dd", size = 256869 }, - { url = "https://files.pythonhosted.org/packages/ce/5d/2fc9a9236c5268f68ac011d97cd3a5ad16cc420535369bedbda659fdd9b7/coverage-7.10.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80b9ccd82e30038b61fc9a692a8dc4801504689651b281ed9109f10cc9fe8b4d", size = 257765 }, - { url = "https://files.pythonhosted.org/packages/8a/05/b4e00b2bd48a2dc8e1c7d2aea7455f40af2e36484ab2ef06deb85883e9fe/coverage-7.10.1-cp314-cp314t-win32.whl", hash = "sha256:e58991a2b213417285ec866d3cd32db17a6a88061a985dbb7e8e8f13af429c47", size = 218420 }, - { url = "https://files.pythonhosted.org/packages/77/fb/d21d05f33ea27ece327422240e69654b5932b0b29e7fbc40fbab3cf199bf/coverage-7.10.1-cp314-cp314t-win_amd64.whl", hash = "sha256:e88dd71e4ecbc49d9d57d064117462c43f40a21a1383507811cf834a4a620651", size = 219536 }, - { url = "https://files.pythonhosted.org/packages/a6/68/7fea94b141281ed8be3d1d5c4319a97f2befc3e487ce33657fc64db2c45e/coverage-7.10.1-cp314-cp314t-win_arm64.whl", hash = "sha256:1aadfb06a30c62c2eb82322171fe1f7c288c80ca4156d46af0ca039052814bab", size = 217190 }, - { url = "https://files.pythonhosted.org/packages/0f/64/922899cff2c0fd3496be83fa8b81230f5a8d82a2ad30f98370b133c2c83b/coverage-7.10.1-py3-none-any.whl", hash = "sha256:fa2a258aa6bf188eb9a8948f7102a83da7c430a0dce918dbd8b60ef8fcb772d7", size = 206597 }, +sdist = { url = "https://files.pythonhosted.org/packages/87/0e/66dbd4c6a7f0758a8d18044c048779ba21fb94856e1edcf764bd5403e710/coverage-7.10.1.tar.gz", hash = "sha256:ae2b4856f29ddfe827106794f3589949a57da6f0d38ab01e24ec35107979ba57", size = 819938, upload_time = "2025-07-27T14:13:39.045Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a5/3f/b051feeb292400bd22d071fdf933b3ad389a8cef5c80c7866ed0c7414b9e/coverage-7.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b7dc7f0a75a7eaa4584e5843c873c561b12602439d2351ee28c7478186c4da4", size = 214934, upload_time = "2025-07-27T14:11:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e4/a61b27d5c4c2d185bdfb0bfe9d15ab4ac4f0073032665544507429ae60eb/coverage-7.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:607f82389f0ecafc565813aa201a5cade04f897603750028dd660fb01797265e", size = 215173, upload_time = "2025-07-27T14:11:38.005Z" }, + { url = "https://files.pythonhosted.org/packages/8a/01/40a6ee05b60d02d0bc53742ad4966e39dccd450aafb48c535a64390a3552/coverage-7.10.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f7da31a1ba31f1c1d4d5044b7c5813878adae1f3af8f4052d679cc493c7328f4", size = 246190, upload_time = "2025-07-27T14:11:39.887Z" }, + { url = "https://files.pythonhosted.org/packages/11/ef/a28d64d702eb583c377255047281305dc5a5cfbfb0ee36e721f78255adb6/coverage-7.10.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:51fe93f3fe4f5d8483d51072fddc65e717a175490804e1942c975a68e04bf97a", size = 248618, upload_time = "2025-07-27T14:11:41.841Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ad/73d018bb0c8317725370c79d69b5c6e0257df84a3b9b781bda27a438a3be/coverage-7.10.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3e59d00830da411a1feef6ac828b90bbf74c9b6a8e87b8ca37964925bba76dbe", size = 250081, upload_time = "2025-07-27T14:11:43.705Z" }, + { url = "https://files.pythonhosted.org/packages/2d/dd/496adfbbb4503ebca5d5b2de8bed5ec00c0a76558ffc5b834fd404166bc9/coverage-7.10.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:924563481c27941229cb4e16eefacc35da28563e80791b3ddc5597b062a5c386", size = 247990, upload_time = "2025-07-27T14:11:45.244Z" }, + { url = "https://files.pythonhosted.org/packages/18/3c/a9331a7982facfac0d98a4a87b36ae666fe4257d0f00961a3a9ef73e015d/coverage-7.10.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ca79146ee421b259f8131f153102220b84d1a5e6fb9c8aed13b3badfd1796de6", size = 246191, upload_time = "2025-07-27T14:11:47.093Z" }, + { url = "https://files.pythonhosted.org/packages/62/0c/75345895013b83f7afe92ec595e15a9a525ede17491677ceebb2ba5c3d85/coverage-7.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2b225a06d227f23f386fdc0eab471506d9e644be699424814acc7d114595495f", size = 247400, upload_time = "2025-07-27T14:11:48.643Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a9/98b268cfc5619ef9df1d5d34fee408ecb1542d9fd43d467e5c2f28668cd4/coverage-7.10.1-cp312-cp312-win32.whl", hash = "sha256:5ba9a8770effec5baaaab1567be916c87d8eea0c9ad11253722d86874d885eca", size = 217338, upload_time = "2025-07-27T14:11:50.258Z" }, + { url = "https://files.pythonhosted.org/packages/fe/31/22a5440e4d1451f253c5cd69fdcead65e92ef08cd4ec237b8756dc0b20a7/coverage-7.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:9eb245a8d8dd0ad73b4062135a251ec55086fbc2c42e0eb9725a9b553fba18a3", size = 218125, upload_time = "2025-07-27T14:11:52.034Z" }, + { url = "https://files.pythonhosted.org/packages/d6/2b/40d9f0ce7ee839f08a43c5bfc9d05cec28aaa7c9785837247f96cbe490b9/coverage-7.10.1-cp312-cp312-win_arm64.whl", hash = "sha256:7718060dd4434cc719803a5e526838a5d66e4efa5dc46d2b25c21965a9c6fcc4", size = 216523, upload_time = "2025-07-27T14:11:53.965Z" }, + { url = "https://files.pythonhosted.org/packages/ef/72/135ff5fef09b1ffe78dbe6fcf1e16b2e564cd35faeacf3d63d60d887f12d/coverage-7.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ebb08d0867c5a25dffa4823377292a0ffd7aaafb218b5d4e2e106378b1061e39", size = 214960, upload_time = "2025-07-27T14:11:55.959Z" }, + { url = "https://files.pythonhosted.org/packages/b1/aa/73a5d1a6fc08ca709a8177825616aa95ee6bf34d522517c2595484a3e6c9/coverage-7.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f32a95a83c2e17422f67af922a89422cd24c6fa94041f083dd0bb4f6057d0bc7", size = 215220, upload_time = "2025-07-27T14:11:57.899Z" }, + { url = "https://files.pythonhosted.org/packages/8d/40/3124fdd45ed3772a42fc73ca41c091699b38a2c3bd4f9cb564162378e8b6/coverage-7.10.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c4c746d11c8aba4b9f58ca8bfc6fbfd0da4efe7960ae5540d1a1b13655ee8892", size = 245772, upload_time = "2025-07-27T14:12:00.422Z" }, + { url = "https://files.pythonhosted.org/packages/42/62/a77b254822efa8c12ad59e8039f2bc3df56dc162ebda55e1943e35ba31a5/coverage-7.10.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7f39edd52c23e5c7ed94e0e4bf088928029edf86ef10b95413e5ea670c5e92d7", size = 248116, upload_time = "2025-07-27T14:12:03.099Z" }, + { url = "https://files.pythonhosted.org/packages/1d/01/8101f062f472a3a6205b458d18ef0444a63ae5d36a8a5ed5dd0f6167f4db/coverage-7.10.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab6e19b684981d0cd968906e293d5628e89faacb27977c92f3600b201926b994", size = 249554, upload_time = "2025-07-27T14:12:04.668Z" }, + { url = "https://files.pythonhosted.org/packages/8f/7b/e51bc61573e71ff7275a4f167aecbd16cb010aefdf54bcd8b0a133391263/coverage-7.10.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5121d8cf0eacb16133501455d216bb5f99899ae2f52d394fe45d59229e6611d0", size = 247766, upload_time = "2025-07-27T14:12:06.234Z" }, + { url = "https://files.pythonhosted.org/packages/4b/71/1c96d66a51d4204a9d6d12df53c4071d87e110941a2a1fe94693192262f5/coverage-7.10.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:df1c742ca6f46a6f6cbcaef9ac694dc2cb1260d30a6a2f5c68c5f5bcfee1cfd7", size = 245735, upload_time = "2025-07-27T14:12:08.305Z" }, + { url = "https://files.pythonhosted.org/packages/13/d5/efbc2ac4d35ae2f22ef6df2ca084c60e13bd9378be68655e3268c80349ab/coverage-7.10.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:40f9a38676f9c073bf4b9194707aa1eb97dca0e22cc3766d83879d72500132c7", size = 247118, upload_time = "2025-07-27T14:12:09.903Z" }, + { url = "https://files.pythonhosted.org/packages/d1/22/073848352bec28ca65f2b6816b892fcf9a31abbef07b868487ad15dd55f1/coverage-7.10.1-cp313-cp313-win32.whl", hash = "sha256:2348631f049e884839553b9974f0821d39241c6ffb01a418efce434f7eba0fe7", size = 217381, upload_time = "2025-07-27T14:12:11.535Z" }, + { url = "https://files.pythonhosted.org/packages/b7/df/df6a0ff33b042f000089bd11b6bb034bab073e2ab64a56e78ed882cba55d/coverage-7.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:4072b31361b0d6d23f750c524f694e1a417c1220a30d3ef02741eed28520c48e", size = 218152, upload_time = "2025-07-27T14:12:13.182Z" }, + { url = "https://files.pythonhosted.org/packages/30/e3/5085ca849a40ed6b47cdb8f65471c2f754e19390b5a12fa8abd25cbfaa8f/coverage-7.10.1-cp313-cp313-win_arm64.whl", hash = "sha256:3e31dfb8271937cab9425f19259b1b1d1f556790e98eb266009e7a61d337b6d4", size = 216559, upload_time = "2025-07-27T14:12:14.807Z" }, + { url = "https://files.pythonhosted.org/packages/cc/93/58714efbfdeb547909feaabe1d67b2bdd59f0597060271b9c548d5efb529/coverage-7.10.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1c4f679c6b573a5257af6012f167a45be4c749c9925fd44d5178fd641ad8bf72", size = 215677, upload_time = "2025-07-27T14:12:16.68Z" }, + { url = "https://files.pythonhosted.org/packages/c0/0c/18eaa5897e7e8cb3f8c45e563e23e8a85686b4585e29d53cacb6bc9cb340/coverage-7.10.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:871ebe8143da284bd77b84a9136200bd638be253618765d21a1fce71006d94af", size = 215899, upload_time = "2025-07-27T14:12:18.758Z" }, + { url = "https://files.pythonhosted.org/packages/84/c1/9d1affacc3c75b5a184c140377701bbf14fc94619367f07a269cd9e4fed6/coverage-7.10.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:998c4751dabf7d29b30594af416e4bf5091f11f92a8d88eb1512c7ba136d1ed7", size = 257140, upload_time = "2025-07-27T14:12:20.357Z" }, + { url = "https://files.pythonhosted.org/packages/3d/0f/339bc6b8fa968c346df346068cca1f24bdea2ddfa93bb3dc2e7749730962/coverage-7.10.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:780f750a25e7749d0af6b3631759c2c14f45de209f3faaa2398312d1c7a22759", size = 259005, upload_time = "2025-07-27T14:12:22.007Z" }, + { url = "https://files.pythonhosted.org/packages/c8/22/89390864b92ea7c909079939b71baba7e5b42a76bf327c1d615bd829ba57/coverage-7.10.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:590bdba9445df4763bdbebc928d8182f094c1f3947a8dc0fc82ef014dbdd8324", size = 261143, upload_time = "2025-07-27T14:12:23.746Z" }, + { url = "https://files.pythonhosted.org/packages/2c/56/3d04d89017c0c41c7a71bd69b29699d919b6bbf2649b8b2091240b97dd6a/coverage-7.10.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b2df80cb6a2af86d300e70acb82e9b79dab2c1e6971e44b78dbfc1a1e736b53", size = 258735, upload_time = "2025-07-27T14:12:25.73Z" }, + { url = "https://files.pythonhosted.org/packages/cb/40/312252c8afa5ca781063a09d931f4b9409dc91526cd0b5a2b84143ffafa2/coverage-7.10.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d6a558c2725bfb6337bf57c1cd366c13798bfd3bfc9e3dd1f4a6f6fc95a4605f", size = 256871, upload_time = "2025-07-27T14:12:27.767Z" }, + { url = "https://files.pythonhosted.org/packages/1f/2b/564947d5dede068215aaddb9e05638aeac079685101462218229ddea9113/coverage-7.10.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e6150d167f32f2a54690e572e0a4c90296fb000a18e9b26ab81a6489e24e78dd", size = 257692, upload_time = "2025-07-27T14:12:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/93/1b/c8a867ade85cb26d802aea2209b9c2c80613b9c122baa8c8ecea6799648f/coverage-7.10.1-cp313-cp313t-win32.whl", hash = "sha256:d946a0c067aa88be4a593aad1236493313bafaa27e2a2080bfe88db827972f3c", size = 218059, upload_time = "2025-07-27T14:12:31.076Z" }, + { url = "https://files.pythonhosted.org/packages/a1/fe/cd4ab40570ae83a516bf5e754ea4388aeedd48e660e40c50b7713ed4f930/coverage-7.10.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e37c72eaccdd5ed1130c67a92ad38f5b2af66eeff7b0abe29534225db2ef7b18", size = 219150, upload_time = "2025-07-27T14:12:32.746Z" }, + { url = "https://files.pythonhosted.org/packages/8d/16/6e5ed5854be6d70d0c39e9cb9dd2449f2c8c34455534c32c1a508c7dbdb5/coverage-7.10.1-cp313-cp313t-win_arm64.whl", hash = "sha256:89ec0ffc215c590c732918c95cd02b55c7d0f569d76b90bb1a5e78aa340618e4", size = 217014, upload_time = "2025-07-27T14:12:34.406Z" }, + { url = "https://files.pythonhosted.org/packages/54/8e/6d0bfe9c3d7121cf936c5f8b03e8c3da1484fb801703127dba20fb8bd3c7/coverage-7.10.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:166d89c57e877e93d8827dac32cedae6b0277ca684c6511497311249f35a280c", size = 214951, upload_time = "2025-07-27T14:12:36.069Z" }, + { url = "https://files.pythonhosted.org/packages/f2/29/e3e51a8c653cf2174c60532aafeb5065cea0911403fa144c9abe39790308/coverage-7.10.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:bed4a2341b33cd1a7d9ffc47df4a78ee61d3416d43b4adc9e18b7d266650b83e", size = 215229, upload_time = "2025-07-27T14:12:37.759Z" }, + { url = "https://files.pythonhosted.org/packages/e0/59/3c972080b2fa18b6c4510201f6d4dc87159d450627d062cd9ad051134062/coverage-7.10.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ddca1e4f5f4c67980533df01430184c19b5359900e080248bbf4ed6789584d8b", size = 245738, upload_time = "2025-07-27T14:12:39.453Z" }, + { url = "https://files.pythonhosted.org/packages/2e/04/fc0d99d3f809452654e958e1788454f6e27b34e43f8f8598191c8ad13537/coverage-7.10.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:37b69226001d8b7de7126cad7366b0778d36777e4d788c66991455ba817c5b41", size = 248045, upload_time = "2025-07-27T14:12:41.387Z" }, + { url = "https://files.pythonhosted.org/packages/5e/2e/afcbf599e77e0dfbf4c97197747250d13d397d27e185b93987d9eaac053d/coverage-7.10.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2f22102197bcb1722691296f9e589f02b616f874e54a209284dd7b9294b0b7f", size = 249666, upload_time = "2025-07-27T14:12:43.056Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ae/bc47f7f8ecb7a06cbae2bf86a6fa20f479dd902bc80f57cff7730438059d/coverage-7.10.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1e0c768b0f9ac5839dac5cf88992a4bb459e488ee8a1f8489af4cb33b1af00f1", size = 247692, upload_time = "2025-07-27T14:12:44.83Z" }, + { url = "https://files.pythonhosted.org/packages/b6/26/cbfa3092d31ccba8ba7647e4d25753263e818b4547eba446b113d7d1efdf/coverage-7.10.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:991196702d5e0b120a8fef2664e1b9c333a81d36d5f6bcf6b225c0cf8b0451a2", size = 245536, upload_time = "2025-07-27T14:12:46.527Z" }, + { url = "https://files.pythonhosted.org/packages/56/77/9c68e92500e6a1c83d024a70eadcc9a173f21aadd73c4675fe64c9c43fdf/coverage-7.10.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ae8e59e5f4fd85d6ad34c2bb9d74037b5b11be072b8b7e9986beb11f957573d4", size = 246954, upload_time = "2025-07-27T14:12:49.279Z" }, + { url = "https://files.pythonhosted.org/packages/7f/a5/ba96671c5a669672aacd9877a5987c8551501b602827b4e84256da2a30a7/coverage-7.10.1-cp314-cp314-win32.whl", hash = "sha256:042125c89cf74a074984002e165d61fe0e31c7bd40ebb4bbebf07939b5924613", size = 217616, upload_time = "2025-07-27T14:12:51.214Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3c/e1e1eb95fc1585f15a410208c4795db24a948e04d9bde818fe4eb893bc85/coverage-7.10.1-cp314-cp314-win_amd64.whl", hash = "sha256:a22c3bfe09f7a530e2c94c87ff7af867259c91bef87ed2089cd69b783af7b84e", size = 218412, upload_time = "2025-07-27T14:12:53.429Z" }, + { url = "https://files.pythonhosted.org/packages/b0/85/7e1e5be2cb966cba95566ba702b13a572ca744fbb3779df9888213762d67/coverage-7.10.1-cp314-cp314-win_arm64.whl", hash = "sha256:ee6be07af68d9c4fca4027c70cea0c31a0f1bc9cb464ff3c84a1f916bf82e652", size = 216776, upload_time = "2025-07-27T14:12:55.482Z" }, + { url = "https://files.pythonhosted.org/packages/62/0f/5bb8f29923141cca8560fe2217679caf4e0db643872c1945ac7d8748c2a7/coverage-7.10.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d24fb3c0c8ff0d517c5ca5de7cf3994a4cd559cde0315201511dbfa7ab528894", size = 215698, upload_time = "2025-07-27T14:12:57.225Z" }, + { url = "https://files.pythonhosted.org/packages/80/29/547038ffa4e8e4d9e82f7dfc6d152f75fcdc0af146913f0ba03875211f03/coverage-7.10.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1217a54cfd79be20512a67ca81c7da3f2163f51bbfd188aab91054df012154f5", size = 215902, upload_time = "2025-07-27T14:12:59.071Z" }, + { url = "https://files.pythonhosted.org/packages/e1/8a/7aaa8fbfaed900147987a424e112af2e7790e1ac9cd92601e5bd4e1ba60a/coverage-7.10.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:51f30da7a52c009667e02f125737229d7d8044ad84b79db454308033a7808ab2", size = 257230, upload_time = "2025-07-27T14:13:01.248Z" }, + { url = "https://files.pythonhosted.org/packages/e5/1d/c252b5ffac44294e23a0d79dd5acf51749b39795ccc898faeabf7bee903f/coverage-7.10.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ed3718c757c82d920f1c94089066225ca2ad7f00bb904cb72b1c39ebdd906ccb", size = 259194, upload_time = "2025-07-27T14:13:03.247Z" }, + { url = "https://files.pythonhosted.org/packages/16/ad/6c8d9f83d08f3bac2e7507534d0c48d1a4f52c18e6f94919d364edbdfa8f/coverage-7.10.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc452481e124a819ced0c25412ea2e144269ef2f2534b862d9f6a9dae4bda17b", size = 261316, upload_time = "2025-07-27T14:13:04.957Z" }, + { url = "https://files.pythonhosted.org/packages/d6/4e/f9bbf3a36c061e2e0e0f78369c006d66416561a33d2bee63345aee8ee65e/coverage-7.10.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9d6f494c307e5cb9b1e052ec1a471060f1dea092c8116e642e7a23e79d9388ea", size = 258794, upload_time = "2025-07-27T14:13:06.715Z" }, + { url = "https://files.pythonhosted.org/packages/87/82/e600bbe78eb2cb0541751d03cef9314bcd0897e8eea156219c39b685f869/coverage-7.10.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:fc0e46d86905ddd16b85991f1f4919028092b4e511689bbdaff0876bd8aab3dd", size = 256869, upload_time = "2025-07-27T14:13:08.933Z" }, + { url = "https://files.pythonhosted.org/packages/ce/5d/2fc9a9236c5268f68ac011d97cd3a5ad16cc420535369bedbda659fdd9b7/coverage-7.10.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80b9ccd82e30038b61fc9a692a8dc4801504689651b281ed9109f10cc9fe8b4d", size = 257765, upload_time = "2025-07-27T14:13:10.778Z" }, + { url = "https://files.pythonhosted.org/packages/8a/05/b4e00b2bd48a2dc8e1c7d2aea7455f40af2e36484ab2ef06deb85883e9fe/coverage-7.10.1-cp314-cp314t-win32.whl", hash = "sha256:e58991a2b213417285ec866d3cd32db17a6a88061a985dbb7e8e8f13af429c47", size = 218420, upload_time = "2025-07-27T14:13:12.882Z" }, + { url = "https://files.pythonhosted.org/packages/77/fb/d21d05f33ea27ece327422240e69654b5932b0b29e7fbc40fbab3cf199bf/coverage-7.10.1-cp314-cp314t-win_amd64.whl", hash = "sha256:e88dd71e4ecbc49d9d57d064117462c43f40a21a1383507811cf834a4a620651", size = 219536, upload_time = "2025-07-27T14:13:14.718Z" }, + { url = "https://files.pythonhosted.org/packages/a6/68/7fea94b141281ed8be3d1d5c4319a97f2befc3e487ce33657fc64db2c45e/coverage-7.10.1-cp314-cp314t-win_arm64.whl", hash = "sha256:1aadfb06a30c62c2eb82322171fe1f7c288c80ca4156d46af0ca039052814bab", size = 217190, upload_time = "2025-07-27T14:13:16.85Z" }, + { url = "https://files.pythonhosted.org/packages/0f/64/922899cff2c0fd3496be83fa8b81230f5a8d82a2ad30f98370b133c2c83b/coverage-7.10.1-py3-none-any.whl", hash = "sha256:fa2a258aa6bf188eb9a8948f7102a83da7c430a0dce918dbd8b60ef8fcb772d7", size = 206597, upload_time = "2025-07-27T14:13:37.221Z" }, +] + +[[package]] +name = "cryptography" +version = "45.0.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d6/0d/d13399c94234ee8f3df384819dc67e0c5ce215fb751d567a55a1f4b028c7/cryptography-45.0.6.tar.gz", hash = "sha256:5c966c732cf6e4a276ce83b6e4c729edda2df6929083a952cc7da973c539c719", size = 744949, upload_time = "2025-08-05T23:59:27.93Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/29/2793d178d0eda1ca4a09a7c4e09a5185e75738cc6d526433e8663b460ea6/cryptography-45.0.6-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:048e7ad9e08cf4c0ab07ff7f36cc3115924e22e2266e034450a890d9e312dd74", size = 7042702, upload_time = "2025-08-05T23:58:23.464Z" }, + { url = "https://files.pythonhosted.org/packages/b3/b6/cabd07410f222f32c8d55486c464f432808abaa1f12af9afcbe8f2f19030/cryptography-45.0.6-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:44647c5d796f5fc042bbc6d61307d04bf29bccb74d188f18051b635f20a9c75f", size = 4206483, upload_time = "2025-08-05T23:58:27.132Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9e/f9c7d36a38b1cfeb1cc74849aabe9bf817990f7603ff6eb485e0d70e0b27/cryptography-45.0.6-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e40b80ecf35ec265c452eea0ba94c9587ca763e739b8e559c128d23bff7ebbbf", size = 4429679, upload_time = "2025-08-05T23:58:29.152Z" }, + { url = "https://files.pythonhosted.org/packages/9c/2a/4434c17eb32ef30b254b9e8b9830cee4e516f08b47fdd291c5b1255b8101/cryptography-45.0.6-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:00e8724bdad672d75e6f069b27970883179bd472cd24a63f6e620ca7e41cc0c5", size = 4210553, upload_time = "2025-08-05T23:58:30.596Z" }, + { url = "https://files.pythonhosted.org/packages/ef/1d/09a5df8e0c4b7970f5d1f3aff1b640df6d4be28a64cae970d56c6cf1c772/cryptography-45.0.6-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7a3085d1b319d35296176af31c90338eeb2ddac8104661df79f80e1d9787b8b2", size = 3894499, upload_time = "2025-08-05T23:58:32.03Z" }, + { url = "https://files.pythonhosted.org/packages/79/62/120842ab20d9150a9d3a6bdc07fe2870384e82f5266d41c53b08a3a96b34/cryptography-45.0.6-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1b7fa6a1c1188c7ee32e47590d16a5a0646270921f8020efc9a511648e1b2e08", size = 4458484, upload_time = "2025-08-05T23:58:33.526Z" }, + { url = "https://files.pythonhosted.org/packages/fd/80/1bc3634d45ddfed0871bfba52cf8f1ad724761662a0c792b97a951fb1b30/cryptography-45.0.6-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:275ba5cc0d9e320cd70f8e7b96d9e59903c815ca579ab96c1e37278d231fc402", size = 4210281, upload_time = "2025-08-05T23:58:35.445Z" }, + { url = "https://files.pythonhosted.org/packages/7d/fe/ffb12c2d83d0ee625f124880a1f023b5878f79da92e64c37962bbbe35f3f/cryptography-45.0.6-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f4028f29a9f38a2025abedb2e409973709c660d44319c61762202206ed577c42", size = 4456890, upload_time = "2025-08-05T23:58:36.923Z" }, + { url = "https://files.pythonhosted.org/packages/8c/8e/b3f3fe0dc82c77a0deb5f493b23311e09193f2268b77196ec0f7a36e3f3e/cryptography-45.0.6-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ee411a1b977f40bd075392c80c10b58025ee5c6b47a822a33c1198598a7a5f05", size = 4333247, upload_time = "2025-08-05T23:58:38.781Z" }, + { url = "https://files.pythonhosted.org/packages/b3/a6/c3ef2ab9e334da27a1d7b56af4a2417d77e7806b2e0f90d6267ce120d2e4/cryptography-45.0.6-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e2a21a8eda2d86bb604934b6b37691585bd095c1f788530c1fcefc53a82b3453", size = 4565045, upload_time = "2025-08-05T23:58:40.415Z" }, + { url = "https://files.pythonhosted.org/packages/31/c3/77722446b13fa71dddd820a5faab4ce6db49e7e0bf8312ef4192a3f78e2f/cryptography-45.0.6-cp311-abi3-win32.whl", hash = "sha256:d063341378d7ee9c91f9d23b431a3502fc8bfacd54ef0a27baa72a0843b29159", size = 2928923, upload_time = "2025-08-05T23:58:41.919Z" }, + { url = "https://files.pythonhosted.org/packages/38/63/a025c3225188a811b82932a4dcc8457a26c3729d81578ccecbcce2cb784e/cryptography-45.0.6-cp311-abi3-win_amd64.whl", hash = "sha256:833dc32dfc1e39b7376a87b9a6a4288a10aae234631268486558920029b086ec", size = 3403805, upload_time = "2025-08-05T23:58:43.792Z" }, + { url = "https://files.pythonhosted.org/packages/5b/af/bcfbea93a30809f126d51c074ee0fac5bd9d57d068edf56c2a73abedbea4/cryptography-45.0.6-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:3436128a60a5e5490603ab2adbabc8763613f638513ffa7d311c900a8349a2a0", size = 7020111, upload_time = "2025-08-05T23:58:45.316Z" }, + { url = "https://files.pythonhosted.org/packages/98/c6/ea5173689e014f1a8470899cd5beeb358e22bb3cf5a876060f9d1ca78af4/cryptography-45.0.6-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0d9ef57b6768d9fa58e92f4947cea96ade1233c0e236db22ba44748ffedca394", size = 4198169, upload_time = "2025-08-05T23:58:47.121Z" }, + { url = "https://files.pythonhosted.org/packages/ba/73/b12995edc0c7e2311ffb57ebd3b351f6b268fed37d93bfc6f9856e01c473/cryptography-45.0.6-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea3c42f2016a5bbf71825537c2ad753f2870191134933196bee408aac397b3d9", size = 4421273, upload_time = "2025-08-05T23:58:48.557Z" }, + { url = "https://files.pythonhosted.org/packages/f7/6e/286894f6f71926bc0da67408c853dd9ba953f662dcb70993a59fd499f111/cryptography-45.0.6-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:20ae4906a13716139d6d762ceb3e0e7e110f7955f3bc3876e3a07f5daadec5f3", size = 4199211, upload_time = "2025-08-05T23:58:50.139Z" }, + { url = "https://files.pythonhosted.org/packages/de/34/a7f55e39b9623c5cb571d77a6a90387fe557908ffc44f6872f26ca8ae270/cryptography-45.0.6-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2dac5ec199038b8e131365e2324c03d20e97fe214af051d20c49db129844e8b3", size = 3883732, upload_time = "2025-08-05T23:58:52.253Z" }, + { url = "https://files.pythonhosted.org/packages/f9/b9/c6d32edbcba0cd9f5df90f29ed46a65c4631c4fbe11187feb9169c6ff506/cryptography-45.0.6-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:18f878a34b90d688982e43f4b700408b478102dd58b3e39de21b5ebf6509c301", size = 4450655, upload_time = "2025-08-05T23:58:53.848Z" }, + { url = "https://files.pythonhosted.org/packages/77/2d/09b097adfdee0227cfd4c699b3375a842080f065bab9014248933497c3f9/cryptography-45.0.6-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:5bd6020c80c5b2b2242d6c48487d7b85700f5e0038e67b29d706f98440d66eb5", size = 4198956, upload_time = "2025-08-05T23:58:55.209Z" }, + { url = "https://files.pythonhosted.org/packages/55/66/061ec6689207d54effdff535bbdf85cc380d32dd5377173085812565cf38/cryptography-45.0.6-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:eccddbd986e43014263eda489abbddfbc287af5cddfd690477993dbb31e31016", size = 4449859, upload_time = "2025-08-05T23:58:56.639Z" }, + { url = "https://files.pythonhosted.org/packages/41/ff/e7d5a2ad2d035e5a2af116e1a3adb4d8fcd0be92a18032917a089c6e5028/cryptography-45.0.6-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:550ae02148206beb722cfe4ef0933f9352bab26b087af00e48fdfb9ade35c5b3", size = 4320254, upload_time = "2025-08-05T23:58:58.833Z" }, + { url = "https://files.pythonhosted.org/packages/82/27/092d311af22095d288f4db89fcaebadfb2f28944f3d790a4cf51fe5ddaeb/cryptography-45.0.6-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5b64e668fc3528e77efa51ca70fadcd6610e8ab231e3e06ae2bab3b31c2b8ed9", size = 4554815, upload_time = "2025-08-05T23:59:00.283Z" }, + { url = "https://files.pythonhosted.org/packages/7e/01/aa2f4940262d588a8fdf4edabe4cda45854d00ebc6eaac12568b3a491a16/cryptography-45.0.6-cp37-abi3-win32.whl", hash = "sha256:780c40fb751c7d2b0c6786ceee6b6f871e86e8718a8ff4bc35073ac353c7cd02", size = 2912147, upload_time = "2025-08-05T23:59:01.716Z" }, + { url = "https://files.pythonhosted.org/packages/0a/bc/16e0276078c2de3ceef6b5a34b965f4436215efac45313df90d55f0ba2d2/cryptography-45.0.6-cp37-abi3-win_amd64.whl", hash = "sha256:20d15aed3ee522faac1a39fbfdfee25d17b1284bafd808e1640a74846d7c4d1b", size = 3390459, upload_time = "2025-08-05T23:59:03.358Z" }, ] [[package]] name = "csscompressor" version = "0.9.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/2a/8c3ac3d8bc94e6de8d7ae270bb5bc437b210bb9d6d9e46630c98f4abd20c/csscompressor-0.9.5.tar.gz", hash = "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05", size = 237808 } +sdist = { url = "https://files.pythonhosted.org/packages/f1/2a/8c3ac3d8bc94e6de8d7ae270bb5bc437b210bb9d6d9e46630c98f4abd20c/csscompressor-0.9.5.tar.gz", hash = "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05", size = 237808, upload_time = "2017-11-26T21:13:08.238Z" } + +[[package]] +name = "cssselect2" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tinycss2" }, + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/86/fd7f58fc498b3166f3a7e8e0cddb6e620fe1da35b02248b1bd59e95dbaaa/cssselect2-0.8.0.tar.gz", hash = "sha256:7674ffb954a3b46162392aee2a3a0aedb2e14ecf99fcc28644900f4e6e3e9d3a", size = 35716, upload_time = "2025-03-05T14:46:07.988Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/e7/aa315e6a749d9b96c2504a1ba0ba031ba2d0517e972ce22682e3fccecb09/cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e", size = 15454, upload_time = "2025-03-05T14:46:06.463Z" }, +] [[package]] name = "debugpy" version = "1.8.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444 } +sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444, upload_time = "2025-04-10T19:46:10.981Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268 }, - { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077 }, - { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127 }, - { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249 }, - { url = "https://files.pythonhosted.org/packages/4d/e4/395c792b243f2367d84202dc33689aa3d910fb9826a7491ba20fc9e261f5/debugpy-1.8.14-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:329a15d0660ee09fec6786acdb6e0443d595f64f5d096fc3e3ccf09a4259033f", size = 2485676 }, - { url = "https://files.pythonhosted.org/packages/ba/f1/6f2ee3f991327ad9e4c2f8b82611a467052a0fb0e247390192580e89f7ff/debugpy-1.8.14-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f920c7f9af409d90f5fd26e313e119d908b0dd2952c2393cd3247a462331f15", size = 4217514 }, - { url = "https://files.pythonhosted.org/packages/79/28/b9d146f8f2dc535c236ee09ad3e5ac899adb39d7a19b49f03ac95d216beb/debugpy-1.8.14-cp313-cp313-win32.whl", hash = "sha256:3784ec6e8600c66cbdd4ca2726c72d8ca781e94bce2f396cc606d458146f8f4e", size = 5254756 }, - { url = "https://files.pythonhosted.org/packages/e0/62/a7b4a57013eac4ccaef6977966e6bec5c63906dd25a86e35f155952e29a1/debugpy-1.8.14-cp313-cp313-win_amd64.whl", hash = "sha256:684eaf43c95a3ec39a96f1f5195a7ff3d4144e4a18d69bb66beeb1a6de605d6e", size = 5297119 }, - { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230 }, + { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268, upload_time = "2025-04-10T19:46:26.044Z" }, + { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077, upload_time = "2025-04-10T19:46:27.464Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127, upload_time = "2025-04-10T19:46:29.467Z" }, + { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249, upload_time = "2025-04-10T19:46:31.538Z" }, + { url = "https://files.pythonhosted.org/packages/4d/e4/395c792b243f2367d84202dc33689aa3d910fb9826a7491ba20fc9e261f5/debugpy-1.8.14-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:329a15d0660ee09fec6786acdb6e0443d595f64f5d096fc3e3ccf09a4259033f", size = 2485676, upload_time = "2025-04-10T19:46:32.96Z" }, + { url = "https://files.pythonhosted.org/packages/ba/f1/6f2ee3f991327ad9e4c2f8b82611a467052a0fb0e247390192580e89f7ff/debugpy-1.8.14-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f920c7f9af409d90f5fd26e313e119d908b0dd2952c2393cd3247a462331f15", size = 4217514, upload_time = "2025-04-10T19:46:34.336Z" }, + { url = "https://files.pythonhosted.org/packages/79/28/b9d146f8f2dc535c236ee09ad3e5ac899adb39d7a19b49f03ac95d216beb/debugpy-1.8.14-cp313-cp313-win32.whl", hash = "sha256:3784ec6e8600c66cbdd4ca2726c72d8ca781e94bce2f396cc606d458146f8f4e", size = 5254756, upload_time = "2025-04-10T19:46:36.199Z" }, + { url = "https://files.pythonhosted.org/packages/e0/62/a7b4a57013eac4ccaef6977966e6bec5c63906dd25a86e35f155952e29a1/debugpy-1.8.14-cp313-cp313-win_amd64.whl", hash = "sha256:684eaf43c95a3ec39a96f1f5195a7ff3d4144e4a18d69bb66beeb1a6de605d6e", size = 5297119, upload_time = "2025-04-10T19:46:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230, upload_time = "2025-04-10T19:46:54.077Z" }, ] [[package]] name = "decorator" version = "5.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload_time = "2025-02-24T04:41:34.073Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 }, + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload_time = "2025-02-24T04:41:32.565Z" }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload_time = "2021-03-08T10:59:26.269Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload_time = "2021-03-08T10:59:24.45Z" }, ] [[package]] name = "distlib" version = "0.3.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923 } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload_time = "2024-10-09T18:35:47.551Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973 }, + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload_time = "2024-10-09T18:35:44.272Z" }, ] [[package]] name = "et-xmlfile" version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234 } +sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234, upload_time = "2024-10-25T17:25:40.039Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059 }, + { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059, upload_time = "2024-10-25T17:25:39.051Z" }, ] [[package]] name = "execnet" version = "2.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/ff/b4c0dc78fbe20c3e59c0c7334de0c27eb4001a2b2017999af398bf730817/execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3", size = 166524 } +sdist = { url = "https://files.pythonhosted.org/packages/bb/ff/b4c0dc78fbe20c3e59c0c7334de0c27eb4001a2b2017999af398bf730817/execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3", size = 166524, upload_time = "2024-04-08T09:04:19.245Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/09/2aea36ff60d16dd8879bdb2f5b3ee0ba8d08cbbdcdfe870e695ce3784385/execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc", size = 40612 }, + { url = "https://files.pythonhosted.org/packages/43/09/2aea36ff60d16dd8879bdb2f5b3ee0ba8d08cbbdcdfe870e695ce3784385/execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc", size = 40612, upload_time = "2024-04-08T09:04:17.414Z" }, ] [[package]] name = "executing" version = "2.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693 } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload_time = "2025-01-22T15:41:29.403Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 }, + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload_time = "2025-01-22T15:41:25.929Z" }, +] + +[[package]] +name = "fastjsonschema" +version = "2.21.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/20/b5/23b216d9d985a956623b6bd12d4086b60f0059b27799f23016af04a74ea1/fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de", size = 374130, upload_time = "2025-08-14T18:49:36.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024, upload_time = "2025-08-14T18:49:34.776Z" }, ] [[package]] name = "filelock" version = "3.18.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload_time = "2025-03-14T07:11:40.47Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload_time = "2025-03-14T07:11:39.145Z" }, ] [[package]] @@ -371,9 +482,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/b0/8a21e330561c65653d010ef112bf38f60890051d244ede197ddaa08e50c1/flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656", size = 15816 } +sdist = { url = "https://files.pythonhosted.org/packages/55/b0/8a21e330561c65653d010ef112bf38f60890051d244ede197ddaa08e50c1/flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656", size = 15816, upload_time = "2024-03-09T03:21:07.555Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/27/cd/c883e1a7c447479d6e13985565080e3fea88ab5a107c21684c813dba1875/flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32", size = 13263 }, + { url = "https://files.pythonhosted.org/packages/27/cd/c883e1a7c447479d6e13985565080e3fea88ab5a107c21684c813dba1875/flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32", size = 13263, upload_time = "2024-03-09T03:21:05.635Z" }, ] [[package]] @@ -383,9 +494,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/82/99/b4de7e39e8eaf8207ba1a8fa2241dd98b2ba72ae6e16960d8351736d8702/flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2", size = 31799 } +sdist = { url = "https://files.pythonhosted.org/packages/82/99/b4de7e39e8eaf8207ba1a8fa2241dd98b2ba72ae6e16960d8351736d8702/flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2", size = 31799, upload_time = "2024-11-07T02:00:56.249Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/5e/3be305568fe5f34448807976dc82fc151d76c3e0e03958f34770286278c1/flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846", size = 27625 }, + { url = "https://files.pythonhosted.org/packages/fe/5e/3be305568fe5f34448807976dc82fc151d76c3e0e03958f34770286278c1/flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846", size = 27625, upload_time = "2024-11-07T02:00:54.523Z" }, ] [[package]] @@ -413,20 +524,20 @@ dependencies = [ { name = "typing-extensions" }, { name = "validators" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/11/d0/c94675a1c1b8c12fd68489e2b4a924f80a2b122199cd986c58a5136197d2/frictionless-5.18.1.tar.gz", hash = "sha256:daeaf55f896eeb52b43e62600466af9528fe0aeeebd28b1b917e13322f370a8b", size = 74372478 } +sdist = { url = "https://files.pythonhosted.org/packages/11/d0/c94675a1c1b8c12fd68489e2b4a924f80a2b122199cd986c58a5136197d2/frictionless-5.18.1.tar.gz", hash = "sha256:daeaf55f896eeb52b43e62600466af9528fe0aeeebd28b1b917e13322f370a8b", size = 74372478, upload_time = "2025-03-25T21:32:50.081Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/7a/dac76d31584bb4f874ae860490c9465f5b59bd8c110f68fbbb07aba48845/frictionless-5.18.1-py3-none-any.whl", hash = "sha256:3f4c87469a89bdb88e9cc318088553a26f3d14839098f95c183ea01fc89628dd", size = 531615 }, + { url = "https://files.pythonhosted.org/packages/a9/7a/dac76d31584bb4f874ae860490c9465f5b59bd8c110f68fbbb07aba48845/frictionless-5.18.1-py3-none-any.whl", hash = "sha256:3f4c87469a89bdb88e9cc318088553a26f3d14839098f95c183ea01fc89628dd", size = 531615, upload_time = "2025-03-25T21:32:45.534Z" }, ] [[package]] name = "frozendict" version = "2.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/59/19eb300ba28e7547538bdf603f1c6c34793240a90e1a7b61b65d8517e35e/frozendict-2.4.6.tar.gz", hash = "sha256:df7cd16470fbd26fc4969a208efadc46319334eb97def1ddf48919b351192b8e", size = 316416 } +sdist = { url = "https://files.pythonhosted.org/packages/bb/59/19eb300ba28e7547538bdf603f1c6c34793240a90e1a7b61b65d8517e35e/frozendict-2.4.6.tar.gz", hash = "sha256:df7cd16470fbd26fc4969a208efadc46319334eb97def1ddf48919b351192b8e", size = 316416, upload_time = "2024-10-13T12:15:32.449Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/13/d9839089b900fa7b479cce495d62110cddc4bd5630a04d8469916c0e79c5/frozendict-2.4.6-py311-none-any.whl", hash = "sha256:d065db6a44db2e2375c23eac816f1a022feb2fa98cbb50df44a9e83700accbea", size = 16148 }, - { url = "https://files.pythonhosted.org/packages/ba/d0/d482c39cee2ab2978a892558cf130681d4574ea208e162da8958b31e9250/frozendict-2.4.6-py312-none-any.whl", hash = "sha256:49344abe90fb75f0f9fdefe6d4ef6d4894e640fadab71f11009d52ad97f370b9", size = 16146 }, - { url = "https://files.pythonhosted.org/packages/a5/8e/b6bf6a0de482d7d7d7a2aaac8fdc4a4d0bb24a809f5ddd422aa7060eb3d2/frozendict-2.4.6-py313-none-any.whl", hash = "sha256:7134a2bb95d4a16556bb5f2b9736dceb6ea848fa5b6f3f6c2d6dba93b44b4757", size = 16146 }, + { url = "https://files.pythonhosted.org/packages/04/13/d9839089b900fa7b479cce495d62110cddc4bd5630a04d8469916c0e79c5/frozendict-2.4.6-py311-none-any.whl", hash = "sha256:d065db6a44db2e2375c23eac816f1a022feb2fa98cbb50df44a9e83700accbea", size = 16148, upload_time = "2024-10-13T12:15:26.839Z" }, + { url = "https://files.pythonhosted.org/packages/ba/d0/d482c39cee2ab2978a892558cf130681d4574ea208e162da8958b31e9250/frozendict-2.4.6-py312-none-any.whl", hash = "sha256:49344abe90fb75f0f9fdefe6d4ef6d4894e640fadab71f11009d52ad97f370b9", size = 16146, upload_time = "2024-10-13T12:15:28.16Z" }, + { url = "https://files.pythonhosted.org/packages/a5/8e/b6bf6a0de482d7d7d7a2aaac8fdc4a4d0bb24a809f5ddd422aa7060eb3d2/frozendict-2.4.6-py313-none-any.whl", hash = "sha256:7134a2bb95d4a16556bb5f2b9736dceb6ea848fa5b6f3f6c2d6dba93b44b4757", size = 16146, upload_time = "2024-10-13T12:15:29.495Z" }, ] [[package]] @@ -436,9 +547,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943, upload_time = "2022-05-02T15:47:16.11Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034, upload_time = "2022-05-02T15:47:14.552Z" }, ] [[package]] @@ -448,9 +559,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "smmap" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684 } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684, upload_time = "2025-01-02T07:20:46.413Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794 }, + { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794, upload_time = "2025-01-02T07:20:43.624Z" }, ] [[package]] @@ -460,9 +571,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "gitdb" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196 } +sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196, upload_time = "2025-01-02T07:32:43.59Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599 }, + { url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599, upload_time = "2025-01-02T07:32:40.731Z" }, ] [[package]] @@ -472,9 +583,24 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a9/3e/5aa9a61f7c3c47b0b52a1d930302992229d191bf4bc76447b324b731510a/griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b", size = 395137 } +sdist = { url = "https://files.pythonhosted.org/packages/a9/3e/5aa9a61f7c3c47b0b52a1d930302992229d191bf4bc76447b324b731510a/griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b", size = 395137, upload_time = "2025-04-23T11:29:09.147Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/58/c6/5c20af38c2a57c15d87f7f38bee77d63c1d2a3689f74fefaf35915dd12b2/griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75", size = 129303, upload_time = "2025-04-23T11:29:07.145Z" }, +] + +[[package]] +name = "gurobipy" +version = "12.0.3" +source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/58/c6/5c20af38c2a57c15d87f7f38bee77d63c1d2a3689f74fefaf35915dd12b2/griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75", size = 129303 }, + { url = "https://files.pythonhosted.org/packages/6f/bb/b3784497115c64c2bd122cc9d411f167026d4ec42a26b1ff3c43a779275d/gurobipy-12.0.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:020f23277f630e079eac114385eabd1bd9fb4ac22f8796ed5ba6d915ce4f141b", size = 12222234, upload_time = "2025-07-15T07:19:24.64Z" }, + { url = "https://files.pythonhosted.org/packages/18/ea/c065984de5287c99fd30ee8d700fd78f83692e992471f9667ab5d36612b9/gurobipy-12.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:72bbf544bc05060bb93909b79715ace4c0f416198f7622a985cabb9e8e99aa1c", size = 62583866, upload_time = "2025-07-15T07:20:17.576Z" }, + { url = "https://files.pythonhosted.org/packages/9b/8b/2b9f26e4e19a258229b8a8ffc377ca372cc2059a22a0a7c67572efe308d8/gurobipy-12.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b3f971caf270f671b6ffcf5b937b3c0430a5264b0f01529dc8681d61c221f215", size = 14268480, upload_time = "2025-07-15T07:20:26.898Z" }, + { url = "https://files.pythonhosted.org/packages/26/0f/3544a323635f37cdfe1e011d2903b7ef94ba18e10224fa1419f64d0c1968/gurobipy-12.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:af18fd03d5dc3f6e5f590c372ad288b8430a6d88a5b5e66cfcd8432f86ee8650", size = 11121565, upload_time = "2025-07-15T07:20:34.576Z" }, + { url = "https://files.pythonhosted.org/packages/5e/95/f0e5b5cf85298f42482cf4e53d8114c45bb962f55195d531fe4e62b5afa1/gurobipy-12.0.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a8552e47673cb6f1fd351edf8fcad86b02f832cbfb57d90ef21e0397e96d138e", size = 12183439, upload_time = "2025-07-15T07:20:44.224Z" }, + { url = "https://files.pythonhosted.org/packages/61/6e/aea725b4143faa4eb6878414a91fa74e7871aba0ab9453803a9eeef781c2/gurobipy-12.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:be05c074141c8a126c8aaeccc41795ab091a666eabb39ca1ff98a74bde81e663", size = 62583451, upload_time = "2025-07-15T07:21:38.825Z" }, + { url = "https://files.pythonhosted.org/packages/75/47/7b9c63ce2cd85d796403b91a6d211d5c8baac7b694edd94e2151f365d6a9/gurobipy-12.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:79a333766e27fef7902ceeefbcf0279a1ca393a27a72ea62f8e301b21aa17d59", size = 14271076, upload_time = "2025-07-15T07:21:55.102Z" }, + { url = "https://files.pythonhosted.org/packages/2a/93/b10cd6112c05675fed5c817fd7933c9d4ba3a7039e42cba844a9ac09242a/gurobipy-12.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:e0f9ed55077e622021369bb9df2ca3b00c86b678792a3b1556cc59f67348fab0", size = 11111414, upload_time = "2025-07-15T07:22:05.079Z" }, ] [[package]] @@ -486,9 +612,9 @@ dependencies = [ { name = "libhxl" }, { name = "tenacity" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/88/96/ac55b204699cd216a22a943f64aafac32bba818f624a5d44879d60368fad/hdx_python_country-3.9.6.tar.gz", hash = "sha256:7791f4b9c5ae3e62e82795c266a3ca6ee23c7bab706c91533844edf2ebd9bb18", size = 529232 } +sdist = { url = "https://files.pythonhosted.org/packages/88/96/ac55b204699cd216a22a943f64aafac32bba818f624a5d44879d60368fad/hdx_python_country-3.9.6.tar.gz", hash = "sha256:7791f4b9c5ae3e62e82795c266a3ca6ee23c7bab706c91533844edf2ebd9bb18", size = 529232, upload_time = "2025-07-09T22:56:32.162Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/45/90/646b56ec12df459799510d6d0869ada210ad9f765ad104e50dae4867eb50/hdx_python_country-3.9.6-py3-none-any.whl", hash = "sha256:4c1833bdf3cbd14dfff0146e0bdcae5763931d344fce5f1b42493dc8751e3d4a", size = 55554 }, + { url = "https://files.pythonhosted.org/packages/45/90/646b56ec12df459799510d6d0869ada210ad9f765ad104e50dae4867eb50/hdx_python_country-3.9.6-py3-none-any.whl", hash = "sha256:4c1833bdf3cbd14dfff0146e0bdcae5763931d344fce5f1b42493dc8751e3d4a", size = 55554, upload_time = "2025-07-09T22:56:30.128Z" }, ] [[package]] @@ -511,9 +637,40 @@ dependencies = [ { name = "xlsx2csv" }, { name = "xlwt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/de/b812b6b242f47db98ed043b7f3211c81443f0e59959377e97a93915331c0/hdx_python_utilities-3.8.7.tar.gz", hash = "sha256:41212cd5b682777d393ee991b546f1b4326665d981714a829e5483101fd15a60", size = 656009 } +sdist = { url = "https://files.pythonhosted.org/packages/66/de/b812b6b242f47db98ed043b7f3211c81443f0e59959377e97a93915331c0/hdx_python_utilities-3.8.7.tar.gz", hash = "sha256:41212cd5b682777d393ee991b546f1b4326665d981714a829e5483101fd15a60", size = 656009, upload_time = "2025-05-14T02:31:28.578Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/db/38/44f2a0b83e103bb3d47dbc66dfaa4aaa65c34c60fd26d5445fb2bbd3c09a/hdx_python_utilities-3.8.7-py3-none-any.whl", hash = "sha256:47e67810e81a481504b8653c429b31b8c237da594dc27604075c8e79077c8640", size = 60787 }, + { url = "https://files.pythonhosted.org/packages/db/38/44f2a0b83e103bb3d47dbc66dfaa4aaa65c34c60fd26d5445fb2bbd3c09a/hdx_python_utilities-3.8.7-py3-none-any.whl", hash = "sha256:47e67810e81a481504b8653c429b31b8c237da594dc27604075c8e79077c8640", size = 60787, upload_time = "2025-05-14T02:31:26.794Z" }, +] + +[[package]] +name = "highspy" +version = "1.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b4/fc/aa1325331c320598ce60cc31060087681cd05123b6fb2a8a571e882b7f05/highspy-1.11.0.tar.gz", hash = "sha256:771e58c076122d207ff1b19759c21d3227f0da5b80dfd89a4145681524969cef", size = 1285415, upload_time = "2025-06-06T00:47:22.562Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/ad/b54ad6740b950faab3b7f1465fbb5c740fc522928a8d9f01cac181f8f9a6/highspy-1.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:28fffd3e733833a7b2569df6761088046e8aca868ab328828711dbe15b102ad4", size = 2232856, upload_time = "2025-06-06T00:46:11.161Z" }, + { url = "https://files.pythonhosted.org/packages/a3/0c/3921a207f47d52abc81a9d00d8f4d579b05b85670e23bc7140e39268490d/highspy-1.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:20a3adf8820a5f7a9cee6fc76df625e651ecfd8b5898af2a77042e79269ce0bc", size = 1908641, upload_time = "2025-06-06T00:46:12.706Z" }, + { url = "https://files.pythonhosted.org/packages/0a/b6/ea7ea6c4c3f781b007fe928b2aefa40c49287b4689985d04c3b20d383475/highspy-1.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d4bc0a84cf613bb8565f9b5f610eb0655384162f509b5d86f9c888570275fdc", size = 2119574, upload_time = "2025-06-06T00:46:14.261Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0c/94f1ccb6606e8445a7a0c68d983e47f64899582c64fcea651f488eaaaea0/highspy-1.11.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:543789b75c396a904cb550de34eb333f1a184e123dadc9903b5e6dbca18a007b", size = 2441487, upload_time = "2025-06-06T00:46:16.286Z" }, + { url = "https://files.pythonhosted.org/packages/ad/aa/e7c4ac05162187c484bb121f50d8e037c13bf894ed5cf4e781e1cff68762/highspy-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a23949e4f44b6df0ed8c387a7c733d683a0fa66e3ff15d65719979ce2099ee99", size = 2302302, upload_time = "2025-06-06T00:46:18.819Z" }, + { url = "https://files.pythonhosted.org/packages/04/ce/fd2473bed635eb06d116f987767d5c5fe3c62b317fb1a788c31966d7fa0a/highspy-1.11.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:50dacf300ebe7c4dca92891c0bf61b694f2ca744207cf7d0d24f2a30ffb5608c", size = 3101885, upload_time = "2025-06-06T00:46:20.774Z" }, + { url = "https://files.pythonhosted.org/packages/6e/e1/bf174389656de5d302ed53dd5cdeb5f7e9ad84156ad2fc95d5a63ba023f2/highspy-1.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a782c242b4b047f86110787b0dafce9d77cc10f079adab1fd51c5331e5760127", size = 3647952, upload_time = "2025-06-06T00:46:22.847Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f5/42f6f2ce99c5b9d7aa864ac3abeaf8a2b66da707821ab42b0a31ec2a0dc1/highspy-1.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:15b804387089a389e5f01b056a4b3ad74c7d1cf00ab00a0faaf3b4a582bb664c", size = 3309616, upload_time = "2025-06-06T00:46:24.888Z" }, + { url = "https://files.pythonhosted.org/packages/47/f5/cf13640ed65ea934b45e0c3e786497f4696f286faf45e8e62579a0f15462/highspy-1.11.0-cp312-cp312-win32.whl", hash = "sha256:8c33f68df8ab9666d379b0d64d04775c0a9db31882d4f87b3ec8cece0003b47d", size = 1710641, upload_time = "2025-06-06T00:46:26.462Z" }, + { url = "https://files.pythonhosted.org/packages/b7/2f/7acfea5b8d32b86bdec018f858bc195236b804a22a7cd3349da711498692/highspy-1.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0aed8c80d33e2fc2eb1def75dbd34c9fa463acb589d19a5ed5dcc0178ae7062", size = 1985767, upload_time = "2025-06-06T00:46:28.144Z" }, + { url = "https://files.pythonhosted.org/packages/96/84/3e899c5d95dc9d5400a308e0aaf4a5143f69016a4f46dd528ff7cd65d341/highspy-1.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f675cda73860c7c8a22546db3c80db985720baea84866b08a971cfa03cc7a156", size = 2232867, upload_time = "2025-06-06T00:46:29.651Z" }, + { url = "https://files.pythonhosted.org/packages/74/e2/2853095a74e9fc2c2081340647be8edba7122696534ebbaf159ceb53f9b4/highspy-1.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7babebfc01b7682c69c95e0520614ec9400e10cec1b84d3fb7cd48535c606244", size = 1908601, upload_time = "2025-06-06T00:46:31.232Z" }, + { url = "https://files.pythonhosted.org/packages/e6/36/3cabdd3ae8610912962bad96f4d4d6702255d6c01d050754e4050a9eaa4a/highspy-1.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39fb60d84d7a58e58f923ea6f0641e6978eb9049033b84de1a2add723e01cd3f", size = 2119726, upload_time = "2025-06-06T00:46:32.796Z" }, + { url = "https://files.pythonhosted.org/packages/a9/da/200d3f13ca9ad3f9fc11a1f3f76cc2734de42dae064510365d42caeb5ed4/highspy-1.11.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c2e7cf4d504287cd8910de322a726d58428af43bb985d6bae602bf84a7454b9", size = 2441449, upload_time = "2025-06-06T00:46:35.147Z" }, + { url = "https://files.pythonhosted.org/packages/6c/58/fc3775850dc668006039637a4f23f03a9c0eb533643c9d3a7370f9d63de2/highspy-1.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79682aa7855d94106ccbbb750082d156dcbb57dff9d489f167320ae0ce768867", size = 2302685, upload_time = "2025-06-06T00:46:36.791Z" }, + { url = "https://files.pythonhosted.org/packages/b5/16/e13326a9706c407d32e39ad14aa79a696c1eb49bb13d50fde5d96afb02b5/highspy-1.11.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:65232aa496fb27be56cc85b2c7c785fac866107c32ea00cc38ec474d6a9f6494", size = 3102306, upload_time = "2025-06-06T00:46:38.341Z" }, + { url = "https://files.pythonhosted.org/packages/0e/93/468e63b16d9bf123174e7f8f7b8bd5a2f96b18d7370a2cc35e6485871749/highspy-1.11.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f78f27e18275d3c7868dcd0314ea535ed361322e7f0817363872d75a4cc15abc", size = 3648234, upload_time = "2025-06-06T00:46:40.895Z" }, + { url = "https://files.pythonhosted.org/packages/dc/c5/37b849a69c9cbccf533a9a51e309a49e83d704f06bf45370c2e78ceb15d4/highspy-1.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6156a7d643268456427b6fe310626ad9ee9d908ff812cc64ee8bad7b9872ea98", size = 3309724, upload_time = "2025-06-06T00:46:43.083Z" }, + { url = "https://files.pythonhosted.org/packages/90/0f/89c579b2f718dc419fd76067a03ecb3c96e6919b7cffee1b9f5a2dfe4f56/highspy-1.11.0-cp313-cp313-win32.whl", hash = "sha256:e61facebb0127eb3661db79a11c7665e47229ec63d2b425996d04aeede26d46b", size = 1710676, upload_time = "2025-06-06T00:46:45.132Z" }, + { url = "https://files.pythonhosted.org/packages/20/ca/ba2af91f2418bee0d0e99df71dcd171ca863675de6a5260bbf06c120f084/highspy-1.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:ceac08be37f75dc0af95669a0cfb073e5db5f07ead05cdcc81fd4b4394708d53", size = 1985967, upload_time = "2025-06-06T00:46:46.767Z" }, ] [[package]] @@ -521,75 +678,75 @@ name = "htmlmin2" version = "0.1.13" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/be/31/a76f4bfa885f93b8167cb4c85cf32b54d1f64384d0b897d45bc6d19b7b45/htmlmin2-0.1.13-py3-none-any.whl", hash = "sha256:75609f2a42e64f7ce57dbff28a39890363bde9e7e5885db633317efbdf8c79a2", size = 34486 }, + { url = "https://files.pythonhosted.org/packages/be/31/a76f4bfa885f93b8167cb4c85cf32b54d1f64384d0b897d45bc6d19b7b45/htmlmin2-0.1.13-py3-none-any.whl", hash = "sha256:75609f2a42e64f7ce57dbff28a39890363bde9e7e5885db633317efbdf8c79a2", size = 34486, upload_time = "2023-03-14T21:28:30.388Z" }, ] [[package]] name = "humanize" version = "4.12.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/22/d1/bbc4d251187a43f69844f7fd8941426549bbe4723e8ff0a7441796b0789f/humanize-4.12.3.tar.gz", hash = "sha256:8430be3a615106fdfceb0b2c1b41c4c98c6b0fc5cc59663a5539b111dd325fb0", size = 80514 } +sdist = { url = "https://files.pythonhosted.org/packages/22/d1/bbc4d251187a43f69844f7fd8941426549bbe4723e8ff0a7441796b0789f/humanize-4.12.3.tar.gz", hash = "sha256:8430be3a615106fdfceb0b2c1b41c4c98c6b0fc5cc59663a5539b111dd325fb0", size = 80514, upload_time = "2025-04-30T11:51:07.98Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/1e/62a2ec3104394a2975a2629eec89276ede9dbe717092f6966fcf963e1bf0/humanize-4.12.3-py3-none-any.whl", hash = "sha256:2cbf6370af06568fa6d2da77c86edb7886f3160ecd19ee1ffef07979efc597f6", size = 128487 }, + { url = "https://files.pythonhosted.org/packages/a0/1e/62a2ec3104394a2975a2629eec89276ede9dbe717092f6966fcf963e1bf0/humanize-4.12.3-py3-none-any.whl", hash = "sha256:2cbf6370af06568fa6d2da77c86edb7886f3160ecd19ee1ffef07979efc597f6", size = 128487, upload_time = "2025-04-30T11:51:06.468Z" }, ] [[package]] name = "identify" version = "2.6.12" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/88/d193a27416618628a5eea64e3223acd800b40749a96ffb322a9b55a49ed1/identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6", size = 99254 } +sdist = { url = "https://files.pythonhosted.org/packages/a2/88/d193a27416618628a5eea64e3223acd800b40749a96ffb322a9b55a49ed1/identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6", size = 99254, upload_time = "2025-05-23T20:37:53.3Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/cd/18f8da995b658420625f7ef13f037be53ae04ec5ad33f9b718240dcfd48c/identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2", size = 99145 }, + { url = "https://files.pythonhosted.org/packages/7a/cd/18f8da995b658420625f7ef13f037be53ae04ec5ad33f9b718240dcfd48c/identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2", size = 99145, upload_time = "2025-05-23T20:37:51.495Z" }, ] [[package]] name = "idna" version = "3.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload_time = "2024-09-15T18:07:39.745Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload_time = "2024-09-15T18:07:37.964Z" }, ] [[package]] name = "ijson" version = "3.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a3/4f/1cfeada63f5fce87536651268ddf5cca79b8b4bbb457aee4e45777964a0a/ijson-3.4.0.tar.gz", hash = "sha256:5f74dcbad9d592c428d3ca3957f7115a42689ee7ee941458860900236ae9bb13", size = 65782 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/ec/317ee5b2d13e50448833ead3aa906659a32b376191f6abc2a7c6112d2b27/ijson-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:956b148f88259a80a9027ffbe2d91705fae0c004fbfba3e5a24028fbe72311a9", size = 87212 }, - { url = "https://files.pythonhosted.org/packages/f8/43/b06c96ced30cacecc5d518f89b0fd1c98c294a30ff88848b70ed7b7f72a1/ijson-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:06b89960f5c721106394c7fba5760b3f67c515b8eb7d80f612388f5eca2f4621", size = 59175 }, - { url = "https://files.pythonhosted.org/packages/e9/df/b4aeafb7ecde463130840ee9be36130823ec94a00525049bf700883378b8/ijson-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a0bb591cf250dd7e9dfab69d634745a7f3272d31cfe879f9156e0a081fd97ee", size = 59011 }, - { url = "https://files.pythonhosted.org/packages/e3/7c/a80b8e361641609507f62022089626d4b8067f0826f51e1c09e4ba86eba8/ijson-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e92de999977f4c6b660ffcf2b8d59604ccd531edcbfde05b642baf283e0de8", size = 146094 }, - { url = "https://files.pythonhosted.org/packages/01/44/fa416347b9a802e3646c6ff377fc3278bd7d6106e17beb339514b6a3184e/ijson-3.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e9602157a5b869d44b6896e64f502c712a312fcde044c2e586fccb85d3e316e", size = 137903 }, - { url = "https://files.pythonhosted.org/packages/24/c6/41a9ad4d42df50ff6e70fdce79b034f09b914802737ebbdc141153d8d791/ijson-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e83660edb931a425b7ff662eb49db1f10d30ca6d4d350e5630edbed098bc01", size = 148339 }, - { url = "https://files.pythonhosted.org/packages/5f/6f/7d01efda415b8502dce67e067ed9e8a124f53e763002c02207e542e1a2f1/ijson-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:49bf8eac1c7b7913073865a859c215488461f7591b4fa6a33c14b51cb73659d0", size = 149383 }, - { url = "https://files.pythonhosted.org/packages/95/6c/0d67024b9ecb57916c5e5ab0350251c9fe2f86dc9c8ca2b605c194bdad6a/ijson-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:160b09273cb42019f1811469508b0a057d19f26434d44752bde6f281da6d3f32", size = 141580 }, - { url = "https://files.pythonhosted.org/packages/06/43/e10edcc1c6a3b619294de835e7678bfb3a1b8a75955f3689fd66a1e9e7b4/ijson-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2019ff4e6f354aa00c76c8591bd450899111c61f2354ad55cc127e2ce2492c44", size = 150280 }, - { url = "https://files.pythonhosted.org/packages/07/84/1cbeee8e8190a1ebe6926569a92cf1fa80ddb380c129beb6f86559e1bb24/ijson-3.4.0-cp312-cp312-win32.whl", hash = "sha256:931c007bf6bb8330705429989b2deed6838c22b63358a330bf362b6e458ba0bf", size = 51512 }, - { url = "https://files.pythonhosted.org/packages/66/13/530802bc391c95be6fe9f96e9aa427d94067e7c0b7da7a9092344dc44c4b/ijson-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:71523f2b64cb856a820223e94d23e88369f193017ecc789bb4de198cc9d349eb", size = 54081 }, - { url = "https://files.pythonhosted.org/packages/77/b3/b1d2eb2745e5204ec7a25365a6deb7868576214feb5e109bce368fb692c9/ijson-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e8d96f88d75196a61c9d9443de2b72c2d4a7ba9456ff117b57ae3bba23a54256", size = 87216 }, - { url = "https://files.pythonhosted.org/packages/b1/cd/cd6d340087617f8cc9bedbb21d974542fe2f160ed0126b8288d3499a469b/ijson-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c45906ce2c1d3b62f15645476fc3a6ca279549127f01662a39ca5ed334a00cf9", size = 59170 }, - { url = "https://files.pythonhosted.org/packages/3e/4d/32d3a9903b488d3306e3c8288f6ee4217d2eea82728261db03a1045eb5d1/ijson-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4ab4bc2119b35c4363ea49f29563612237cae9413d2fbe54b223be098b97bc9e", size = 59013 }, - { url = "https://files.pythonhosted.org/packages/d5/c8/db15465ab4b0b477cee5964c8bfc94bf8c45af8e27a23e1ad78d1926e587/ijson-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97b0a9b5a15e61dfb1f14921ea4e0dba39f3a650df6d8f444ddbc2b19b479ff1", size = 146564 }, - { url = "https://files.pythonhosted.org/packages/c4/d8/0755545bc122473a9a434ab90e0f378780e603d75495b1ca3872de757873/ijson-3.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3047bb994dabedf11de11076ed1147a307924b6e5e2df6784fb2599c4ad8c60", size = 137917 }, - { url = "https://files.pythonhosted.org/packages/d0/c6/aeb89c8939ebe3f534af26c8c88000c5e870dbb6ae33644c21a4531f87d2/ijson-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68c83161b052e9f5dc8191acbc862bb1e63f8a35344cb5cd0db1afd3afd487a6", size = 148897 }, - { url = "https://files.pythonhosted.org/packages/be/0e/7ef6e9b372106f2682a4a32b3c65bf86bb471a1670e4dac242faee4a7d3f/ijson-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1eebd9b6c20eb1dffde0ae1f0fbb4aeacec2eb7b89adb5c7c0449fc9fd742760", size = 149711 }, - { url = "https://files.pythonhosted.org/packages/d1/5d/9841c3ed75bcdabf19b3202de5f862a9c9c86ce5c7c9d95fa32347fdbf5f/ijson-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:13fb6d5c35192c541421f3ee81239d91fc15a8d8f26c869250f941f4b346a86c", size = 141691 }, - { url = "https://files.pythonhosted.org/packages/d5/d2/ce74e17218dba292e9be10a44ed0c75439f7958cdd263adb0b5b92d012d5/ijson-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:28b7196ff7b37c4897c547a28fa4876919696739fc91c1f347651c9736877c69", size = 150738 }, - { url = "https://files.pythonhosted.org/packages/4e/43/dcc480f94453b1075c9911d4755b823f3ace275761bb37b40139f22109ca/ijson-3.4.0-cp313-cp313-win32.whl", hash = "sha256:3c2691d2da42629522140f77b99587d6f5010440d58d36616f33bc7bdc830cc3", size = 51512 }, - { url = "https://files.pythonhosted.org/packages/35/dd/d8c5f15efd85ba51e6e11451ebe23d779361a9ec0d192064c2a8c3cdfcb8/ijson-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:c4554718c275a044c47eb3874f78f2c939f300215d9031e785a6711cc51b83fc", size = 54074 }, - { url = "https://files.pythonhosted.org/packages/79/73/24ad8cd106203419c4d22bed627e02e281d66b83e91bc206a371893d0486/ijson-3.4.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:915a65e3f3c0eee2ea937bc62aaedb6c14cc1e8f0bb9f3f4fb5a9e2bbfa4b480", size = 91694 }, - { url = "https://files.pythonhosted.org/packages/17/2d/f7f680984bcb7324a46a4c2df3bd73cf70faef0acfeb85a3f811abdfd590/ijson-3.4.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:afbe9748707684b6c5adc295c4fdcf27765b300aec4d484e14a13dca4e5c0afa", size = 61390 }, - { url = "https://files.pythonhosted.org/packages/09/a1/f3ca7bab86f95bdb82494739e71d271410dfefce4590785d511669127145/ijson-3.4.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d823f8f321b4d8d5fa020d0a84f089fec5d52b7c0762430476d9f8bf95bbc1a9", size = 61140 }, - { url = "https://files.pythonhosted.org/packages/51/79/dd340df3d4fc7771c95df29997956b92ed0570fe7b616d1792fea9ad93f2/ijson-3.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0a2c54f3becf76881188beefd98b484b1d3bd005769a740d5b433b089fa23", size = 214739 }, - { url = "https://files.pythonhosted.org/packages/59/f0/85380b7f51d1f5fb7065d76a7b623e02feca920cc678d329b2eccc0011e0/ijson-3.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ced19a83ab09afa16257a0b15bc1aa888dbc555cb754be09d375c7f8d41051f2", size = 198338 }, - { url = "https://files.pythonhosted.org/packages/a5/cd/313264cf2ec42e0f01d198c49deb7b6fadeb793b3685e20e738eb6b3fa13/ijson-3.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8100f9885eff1f38d35cef80ef759a1bbf5fc946349afa681bd7d0e681b7f1a0", size = 207515 }, - { url = "https://files.pythonhosted.org/packages/12/94/bf14457aa87ea32641f2db577c9188ef4e4ae373478afef422b31fc7f309/ijson-3.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d7bcc3f7f21b0f703031ecd15209b1284ea51b2a329d66074b5261de3916c1eb", size = 210081 }, - { url = "https://files.pythonhosted.org/packages/7d/b4/eaee39e290e40e52d665db9bd1492cfdce86bd1e47948e0440db209c6023/ijson-3.4.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2dcb190227b09dd171bdcbfe4720fddd574933c66314818dfb3960c8a6246a77", size = 199253 }, - { url = "https://files.pythonhosted.org/packages/c5/9c/e09c7b9ac720a703ab115b221b819f149ed54c974edfff623c1e925e57da/ijson-3.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:eda4cfb1d49c6073a901735aaa62e39cb7ab47f3ad7bb184862562f776f1fa8a", size = 203816 }, - { url = "https://files.pythonhosted.org/packages/7c/14/acd304f412e32d16a2c12182b9d78206bb0ae35354d35664f45db05c1b3b/ijson-3.4.0-cp313-cp313t-win32.whl", hash = "sha256:0772638efa1f3b72b51736833404f1cbd2f5beeb9c1a3d392e7d385b9160cba7", size = 53760 }, - { url = "https://files.pythonhosted.org/packages/2f/24/93dd0a467191590a5ed1fc2b35842bca9d09900d001e00b0b497c0208ef6/ijson-3.4.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3d8a0d67f36e4fb97c61a724456ef0791504b16ce6f74917a31c2e92309bbeb9", size = 56948 }, +sdist = { url = "https://files.pythonhosted.org/packages/a3/4f/1cfeada63f5fce87536651268ddf5cca79b8b4bbb457aee4e45777964a0a/ijson-3.4.0.tar.gz", hash = "sha256:5f74dcbad9d592c428d3ca3957f7115a42689ee7ee941458860900236ae9bb13", size = 65782, upload_time = "2025-05-08T02:37:20.135Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ec/317ee5b2d13e50448833ead3aa906659a32b376191f6abc2a7c6112d2b27/ijson-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:956b148f88259a80a9027ffbe2d91705fae0c004fbfba3e5a24028fbe72311a9", size = 87212, upload_time = "2025-05-08T02:35:51.835Z" }, + { url = "https://files.pythonhosted.org/packages/f8/43/b06c96ced30cacecc5d518f89b0fd1c98c294a30ff88848b70ed7b7f72a1/ijson-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:06b89960f5c721106394c7fba5760b3f67c515b8eb7d80f612388f5eca2f4621", size = 59175, upload_time = "2025-05-08T02:35:52.988Z" }, + { url = "https://files.pythonhosted.org/packages/e9/df/b4aeafb7ecde463130840ee9be36130823ec94a00525049bf700883378b8/ijson-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a0bb591cf250dd7e9dfab69d634745a7f3272d31cfe879f9156e0a081fd97ee", size = 59011, upload_time = "2025-05-08T02:35:54.394Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7c/a80b8e361641609507f62022089626d4b8067f0826f51e1c09e4ba86eba8/ijson-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e92de999977f4c6b660ffcf2b8d59604ccd531edcbfde05b642baf283e0de8", size = 146094, upload_time = "2025-05-08T02:35:55.601Z" }, + { url = "https://files.pythonhosted.org/packages/01/44/fa416347b9a802e3646c6ff377fc3278bd7d6106e17beb339514b6a3184e/ijson-3.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e9602157a5b869d44b6896e64f502c712a312fcde044c2e586fccb85d3e316e", size = 137903, upload_time = "2025-05-08T02:35:56.814Z" }, + { url = "https://files.pythonhosted.org/packages/24/c6/41a9ad4d42df50ff6e70fdce79b034f09b914802737ebbdc141153d8d791/ijson-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e83660edb931a425b7ff662eb49db1f10d30ca6d4d350e5630edbed098bc01", size = 148339, upload_time = "2025-05-08T02:35:58.595Z" }, + { url = "https://files.pythonhosted.org/packages/5f/6f/7d01efda415b8502dce67e067ed9e8a124f53e763002c02207e542e1a2f1/ijson-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:49bf8eac1c7b7913073865a859c215488461f7591b4fa6a33c14b51cb73659d0", size = 149383, upload_time = "2025-05-08T02:36:00.197Z" }, + { url = "https://files.pythonhosted.org/packages/95/6c/0d67024b9ecb57916c5e5ab0350251c9fe2f86dc9c8ca2b605c194bdad6a/ijson-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:160b09273cb42019f1811469508b0a057d19f26434d44752bde6f281da6d3f32", size = 141580, upload_time = "2025-05-08T02:36:01.998Z" }, + { url = "https://files.pythonhosted.org/packages/06/43/e10edcc1c6a3b619294de835e7678bfb3a1b8a75955f3689fd66a1e9e7b4/ijson-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2019ff4e6f354aa00c76c8591bd450899111c61f2354ad55cc127e2ce2492c44", size = 150280, upload_time = "2025-05-08T02:36:03.926Z" }, + { url = "https://files.pythonhosted.org/packages/07/84/1cbeee8e8190a1ebe6926569a92cf1fa80ddb380c129beb6f86559e1bb24/ijson-3.4.0-cp312-cp312-win32.whl", hash = "sha256:931c007bf6bb8330705429989b2deed6838c22b63358a330bf362b6e458ba0bf", size = 51512, upload_time = "2025-05-08T02:36:05.595Z" }, + { url = "https://files.pythonhosted.org/packages/66/13/530802bc391c95be6fe9f96e9aa427d94067e7c0b7da7a9092344dc44c4b/ijson-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:71523f2b64cb856a820223e94d23e88369f193017ecc789bb4de198cc9d349eb", size = 54081, upload_time = "2025-05-08T02:36:07.099Z" }, + { url = "https://files.pythonhosted.org/packages/77/b3/b1d2eb2745e5204ec7a25365a6deb7868576214feb5e109bce368fb692c9/ijson-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e8d96f88d75196a61c9d9443de2b72c2d4a7ba9456ff117b57ae3bba23a54256", size = 87216, upload_time = "2025-05-08T02:36:08.414Z" }, + { url = "https://files.pythonhosted.org/packages/b1/cd/cd6d340087617f8cc9bedbb21d974542fe2f160ed0126b8288d3499a469b/ijson-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c45906ce2c1d3b62f15645476fc3a6ca279549127f01662a39ca5ed334a00cf9", size = 59170, upload_time = "2025-05-08T02:36:09.604Z" }, + { url = "https://files.pythonhosted.org/packages/3e/4d/32d3a9903b488d3306e3c8288f6ee4217d2eea82728261db03a1045eb5d1/ijson-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4ab4bc2119b35c4363ea49f29563612237cae9413d2fbe54b223be098b97bc9e", size = 59013, upload_time = "2025-05-08T02:36:10.696Z" }, + { url = "https://files.pythonhosted.org/packages/d5/c8/db15465ab4b0b477cee5964c8bfc94bf8c45af8e27a23e1ad78d1926e587/ijson-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97b0a9b5a15e61dfb1f14921ea4e0dba39f3a650df6d8f444ddbc2b19b479ff1", size = 146564, upload_time = "2025-05-08T02:36:11.916Z" }, + { url = "https://files.pythonhosted.org/packages/c4/d8/0755545bc122473a9a434ab90e0f378780e603d75495b1ca3872de757873/ijson-3.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3047bb994dabedf11de11076ed1147a307924b6e5e2df6784fb2599c4ad8c60", size = 137917, upload_time = "2025-05-08T02:36:13.532Z" }, + { url = "https://files.pythonhosted.org/packages/d0/c6/aeb89c8939ebe3f534af26c8c88000c5e870dbb6ae33644c21a4531f87d2/ijson-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68c83161b052e9f5dc8191acbc862bb1e63f8a35344cb5cd0db1afd3afd487a6", size = 148897, upload_time = "2025-05-08T02:36:14.813Z" }, + { url = "https://files.pythonhosted.org/packages/be/0e/7ef6e9b372106f2682a4a32b3c65bf86bb471a1670e4dac242faee4a7d3f/ijson-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1eebd9b6c20eb1dffde0ae1f0fbb4aeacec2eb7b89adb5c7c0449fc9fd742760", size = 149711, upload_time = "2025-05-08T02:36:16.476Z" }, + { url = "https://files.pythonhosted.org/packages/d1/5d/9841c3ed75bcdabf19b3202de5f862a9c9c86ce5c7c9d95fa32347fdbf5f/ijson-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:13fb6d5c35192c541421f3ee81239d91fc15a8d8f26c869250f941f4b346a86c", size = 141691, upload_time = "2025-05-08T02:36:18.044Z" }, + { url = "https://files.pythonhosted.org/packages/d5/d2/ce74e17218dba292e9be10a44ed0c75439f7958cdd263adb0b5b92d012d5/ijson-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:28b7196ff7b37c4897c547a28fa4876919696739fc91c1f347651c9736877c69", size = 150738, upload_time = "2025-05-08T02:36:19.483Z" }, + { url = "https://files.pythonhosted.org/packages/4e/43/dcc480f94453b1075c9911d4755b823f3ace275761bb37b40139f22109ca/ijson-3.4.0-cp313-cp313-win32.whl", hash = "sha256:3c2691d2da42629522140f77b99587d6f5010440d58d36616f33bc7bdc830cc3", size = 51512, upload_time = "2025-05-08T02:36:20.99Z" }, + { url = "https://files.pythonhosted.org/packages/35/dd/d8c5f15efd85ba51e6e11451ebe23d779361a9ec0d192064c2a8c3cdfcb8/ijson-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:c4554718c275a044c47eb3874f78f2c939f300215d9031e785a6711cc51b83fc", size = 54074, upload_time = "2025-05-08T02:36:22.075Z" }, + { url = "https://files.pythonhosted.org/packages/79/73/24ad8cd106203419c4d22bed627e02e281d66b83e91bc206a371893d0486/ijson-3.4.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:915a65e3f3c0eee2ea937bc62aaedb6c14cc1e8f0bb9f3f4fb5a9e2bbfa4b480", size = 91694, upload_time = "2025-05-08T02:36:23.289Z" }, + { url = "https://files.pythonhosted.org/packages/17/2d/f7f680984bcb7324a46a4c2df3bd73cf70faef0acfeb85a3f811abdfd590/ijson-3.4.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:afbe9748707684b6c5adc295c4fdcf27765b300aec4d484e14a13dca4e5c0afa", size = 61390, upload_time = "2025-05-08T02:36:24.42Z" }, + { url = "https://files.pythonhosted.org/packages/09/a1/f3ca7bab86f95bdb82494739e71d271410dfefce4590785d511669127145/ijson-3.4.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d823f8f321b4d8d5fa020d0a84f089fec5d52b7c0762430476d9f8bf95bbc1a9", size = 61140, upload_time = "2025-05-08T02:36:26.708Z" }, + { url = "https://files.pythonhosted.org/packages/51/79/dd340df3d4fc7771c95df29997956b92ed0570fe7b616d1792fea9ad93f2/ijson-3.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0a2c54f3becf76881188beefd98b484b1d3bd005769a740d5b433b089fa23", size = 214739, upload_time = "2025-05-08T02:36:27.973Z" }, + { url = "https://files.pythonhosted.org/packages/59/f0/85380b7f51d1f5fb7065d76a7b623e02feca920cc678d329b2eccc0011e0/ijson-3.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ced19a83ab09afa16257a0b15bc1aa888dbc555cb754be09d375c7f8d41051f2", size = 198338, upload_time = "2025-05-08T02:36:29.496Z" }, + { url = "https://files.pythonhosted.org/packages/a5/cd/313264cf2ec42e0f01d198c49deb7b6fadeb793b3685e20e738eb6b3fa13/ijson-3.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8100f9885eff1f38d35cef80ef759a1bbf5fc946349afa681bd7d0e681b7f1a0", size = 207515, upload_time = "2025-05-08T02:36:30.981Z" }, + { url = "https://files.pythonhosted.org/packages/12/94/bf14457aa87ea32641f2db577c9188ef4e4ae373478afef422b31fc7f309/ijson-3.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d7bcc3f7f21b0f703031ecd15209b1284ea51b2a329d66074b5261de3916c1eb", size = 210081, upload_time = "2025-05-08T02:36:32.403Z" }, + { url = "https://files.pythonhosted.org/packages/7d/b4/eaee39e290e40e52d665db9bd1492cfdce86bd1e47948e0440db209c6023/ijson-3.4.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2dcb190227b09dd171bdcbfe4720fddd574933c66314818dfb3960c8a6246a77", size = 199253, upload_time = "2025-05-08T02:36:33.861Z" }, + { url = "https://files.pythonhosted.org/packages/c5/9c/e09c7b9ac720a703ab115b221b819f149ed54c974edfff623c1e925e57da/ijson-3.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:eda4cfb1d49c6073a901735aaa62e39cb7ab47f3ad7bb184862562f776f1fa8a", size = 203816, upload_time = "2025-05-08T02:36:35.348Z" }, + { url = "https://files.pythonhosted.org/packages/7c/14/acd304f412e32d16a2c12182b9d78206bb0ae35354d35664f45db05c1b3b/ijson-3.4.0-cp313-cp313t-win32.whl", hash = "sha256:0772638efa1f3b72b51736833404f1cbd2f5beeb9c1a3d392e7d385b9160cba7", size = 53760, upload_time = "2025-05-08T02:36:36.608Z" }, + { url = "https://files.pythonhosted.org/packages/2f/24/93dd0a467191590a5ed1fc2b35842bca9d09900d001e00b0b497c0208ef6/ijson-3.4.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3d8a0d67f36e4fb97c61a724456ef0791504b16ce6f74917a31c2e92309bbeb9", size = 56948, upload_time = "2025-05-08T02:36:37.849Z" }, ] [[package]] @@ -602,18 +759,18 @@ dependencies = [ { name = "pandas" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/af/45/24521d229aec5c058d998510794567788bc7b1b764dfaa02fb8e0aeda4b7/imf_reader-1.3.0.tar.gz", hash = "sha256:3f3130dd793a112fdd5913a7c7b733847a5a07fd70dee14d57624ae4e021a141", size = 12990 } +sdist = { url = "https://files.pythonhosted.org/packages/af/45/24521d229aec5c058d998510794567788bc7b1b764dfaa02fb8e0aeda4b7/imf_reader-1.3.0.tar.gz", hash = "sha256:3f3130dd793a112fdd5913a7c7b733847a5a07fd70dee14d57624ae4e021a141", size = 12990, upload_time = "2025-02-06T09:16:10.723Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/5b/3a063116950f2aa2b450120e78162bb5b87098dde3b75ae90210c6f2c099/imf_reader-1.3.0-py3-none-any.whl", hash = "sha256:3515c6644dfef44d5fda89f5bb3786b4f83da20f49184911f0df2386782106f1", size = 16520 }, + { url = "https://files.pythonhosted.org/packages/fd/5b/3a063116950f2aa2b450120e78162bb5b87098dde3b75ae90210c6f2c099/imf_reader-1.3.0-py3-none-any.whl", hash = "sha256:3515c6644dfef44d5fda89f5bb3786b4f83da20f49184911f0df2386782106f1", size = 16520, upload_time = "2025-02-06T09:16:09.042Z" }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload_time = "2025-03-19T20:09:59.721Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload_time = "2025-03-19T20:10:01.071Z" }, ] [[package]] @@ -635,9 +792,9 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367 } +sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367, upload_time = "2024-07-01T14:07:22.543Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173 }, + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173, upload_time = "2024-07-01T14:07:19.603Z" }, ] [[package]] @@ -656,9 +813,9 @@ dependencies = [ { name = "stack-data" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/80/406f9e3bde1c1fd9bf5a0be9d090f8ae623e401b7670d8f6fdf2ab679891/ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270", size = 4385338 } +sdist = { url = "https://files.pythonhosted.org/packages/54/80/406f9e3bde1c1fd9bf5a0be9d090f8ae623e401b7670d8f6fdf2ab679891/ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270", size = 4385338, upload_time = "2025-07-01T11:11:30.606Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066", size = 611021 }, + { url = "https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066", size = 611021, upload_time = "2025-07-01T11:11:27.85Z" }, ] [[package]] @@ -668,18 +825,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 } +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload_time = "2025-01-17T11:24:34.505Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 }, + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload_time = "2025-01-17T11:24:33.271Z" }, ] [[package]] name = "isodate" version = "0.7.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705 } +sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload_time = "2024-10-08T23:04:11.5Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320 }, + { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload_time = "2024-10-08T23:04:09.501Z" }, ] [[package]] @@ -689,9 +846,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "parso" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287 } +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload_time = "2024-11-11T01:41:42.873Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 }, + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload_time = "2024-11-11T01:41:40.175Z" }, ] [[package]] @@ -701,25 +858,25 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload_time = "2025-03-05T20:05:02.478Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload_time = "2025-03-05T20:05:00.369Z" }, ] [[package]] name = "joblib" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475 } +sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475, upload_time = "2025-05-23T12:04:37.097Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746 }, + { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746, upload_time = "2025-05-23T12:04:35.124Z" }, ] [[package]] name = "jsmin" version = "3.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5e/73/e01e4c5e11ad0494f4407a3f623ad4d87714909f50b17a06ed121034ff6e/jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc", size = 13925 } +sdist = { url = "https://files.pythonhosted.org/packages/5e/73/e01e4c5e11ad0494f4407a3f623ad4d87714909f50b17a06ed121034ff6e/jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc", size = 13925, upload_time = "2022-01-16T20:35:59.13Z" } [[package]] name = "jsonlines" @@ -728,9 +885,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/35/87/bcda8e46c88d0e34cad2f09ee2d0c7f5957bccdb9791b0b934ec84d84be4/jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74", size = 11359 } +sdist = { url = "https://files.pythonhosted.org/packages/35/87/bcda8e46c88d0e34cad2f09ee2d0c7f5957bccdb9791b0b934ec84d84be4/jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74", size = 11359, upload_time = "2023-09-01T12:34:44.187Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/62/d9ba6323b9202dd2fe166beab8a86d29465c41a0288cbe229fac60c1ab8d/jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55", size = 8701 }, + { url = "https://files.pythonhosted.org/packages/f8/62/d9ba6323b9202dd2fe166beab8a86d29465c41a0288cbe229fac60c1ab8d/jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55", size = 8701, upload_time = "2023-09-01T12:34:42.563Z" }, ] [[package]] @@ -740,9 +897,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ply" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838 } +sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838, upload_time = "2024-10-11T15:41:42.404Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105 }, + { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105, upload_time = "2024-11-20T17:58:30.418Z" }, ] [[package]] @@ -755,9 +912,9 @@ dependencies = [ { name = "referencing" }, { name = "rpds-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480 } +sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480, upload_time = "2025-05-26T18:48:10.459Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709 }, + { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709, upload_time = "2025-05-26T18:48:08.417Z" }, ] [[package]] @@ -767,9 +924,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "referencing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513 } +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload_time = "2025-04-23T12:34:07.418Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437 }, + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload_time = "2025-04-23T12:34:05.422Z" }, ] [[package]] @@ -783,9 +940,9 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019 } +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload_time = "2024-09-17T10:44:17.613Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105 }, + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload_time = "2024-09-17T10:44:15.218Z" }, ] [[package]] @@ -797,9 +954,34 @@ dependencies = [ { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923 } +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload_time = "2025-05-27T07:38:16.655Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880 }, + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload_time = "2025-05-27T07:38:15.137Z" }, +] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload_time = "2023-11-23T09:26:37.44Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload_time = "2023-11-23T09:26:34.325Z" }, +] + +[[package]] +name = "jupytext" +version = "1.17.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, + { name = "mdit-py-plugins" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/30/ce/0bd5290ca4978777154e2683413dca761781aacf57f7dc0146f5210df8b1/jupytext-1.17.2.tar.gz", hash = "sha256:772d92898ac1f2ded69106f897b34af48ce4a85c985fa043a378ff5a65455f02", size = 3748577, upload_time = "2025-06-01T21:31:48.231Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/f1/82ea8e783433707cafd9790099a2d19f113c22f32a31c8bb5abdc7a61dbb/jupytext-1.17.2-py3-none-any.whl", hash = "sha256:4f85dc43bb6a24b75491c5c434001ad5ef563932f68f15dd3e1c8ce12a4a426b", size = 164401, upload_time = "2025-06-01T21:31:46.319Z" }, ] [[package]] @@ -818,7 +1000,7 @@ dependencies = [ { name = "wheel" }, { name = "xlrd3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/ad/c1dafb7c59e685692a2eeafce83245b7c5f46e05881fdb77a0cbb7c19c74/libhxl-5.2.2.tar.gz", hash = "sha256:3a74d9f23561bfcefd20e5229c574bc68dfc114fdb6ba1ba684d9e9d7ea52483", size = 127736 } +sdist = { url = "https://files.pythonhosted.org/packages/63/ad/c1dafb7c59e685692a2eeafce83245b7c5f46e05881fdb77a0cbb7c19c74/libhxl-5.2.2.tar.gz", hash = "sha256:3a74d9f23561bfcefd20e5229c574bc68dfc114fdb6ba1ba684d9e9d7ea52483", size = 127736, upload_time = "2024-10-25T09:19:11.202Z" } [[package]] name = "license-expression" @@ -827,9 +1009,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "boolean-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/40/71/d89bb0e71b1415453980fd32315f2a037aad9f7f70f695c7cec7035feb13/license_expression-30.4.4.tar.gz", hash = "sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd", size = 186402 } +sdist = { url = "https://files.pythonhosted.org/packages/40/71/d89bb0e71b1415453980fd32315f2a037aad9f7f70f695c7cec7035feb13/license_expression-30.4.4.tar.gz", hash = "sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd", size = 186402, upload_time = "2025-07-22T11:13:32.17Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/af/40/791891d4c0c4dab4c5e187c17261cedc26285fd41541577f900470a45a4d/license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4", size = 120615 }, + { url = "https://files.pythonhosted.org/packages/af/40/791891d4c0c4dab4c5e187c17261cedc26285fd41541577f900470a45a4d/license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4", size = 120615, upload_time = "2025-07-22T11:13:31.217Z" }, ] [[package]] @@ -840,18 +1022,80 @@ dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "win32-setctime", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595 }, +sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559, upload_time = "2024-12-06T11:20:56.608Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595, upload_time = "2024-12-06T11:20:54.538Z" }, +] + +[[package]] +name = "lxml" +version = "6.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8f/bd/f9d01fd4132d81c6f43ab01983caea69ec9614b913c290a26738431a015d/lxml-6.0.1.tar.gz", hash = "sha256:2b3a882ebf27dd026df3801a87cf49ff791336e0f94b0fad195db77e01240690", size = 4070214, upload_time = "2025-08-22T10:37:53.525Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b0/a9/82b244c8198fcdf709532e39a1751943a36b3e800b420adc739d751e0299/lxml-6.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c03ac546adaabbe0b8e4a15d9ad815a281afc8d36249c246aecf1aaad7d6f200", size = 8422788, upload_time = "2025-08-22T10:32:56.612Z" }, + { url = "https://files.pythonhosted.org/packages/c9/8d/1ed2bc20281b0e7ed3e6c12b0a16e64ae2065d99be075be119ba88486e6d/lxml-6.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33b862c7e3bbeb4ba2c96f3a039f925c640eeba9087a4dc7a572ec0f19d89392", size = 4593547, upload_time = "2025-08-22T10:32:59.016Z" }, + { url = "https://files.pythonhosted.org/packages/76/53/d7fd3af95b72a3493bf7fbe842a01e339d8f41567805cecfecd5c71aa5ee/lxml-6.0.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7a3ec1373f7d3f519de595032d4dcafae396c29407cfd5073f42d267ba32440d", size = 4948101, upload_time = "2025-08-22T10:33:00.765Z" }, + { url = "https://files.pythonhosted.org/packages/9d/51/4e57cba4d55273c400fb63aefa2f0d08d15eac021432571a7eeefee67bed/lxml-6.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:03b12214fb1608f4cffa181ec3d046c72f7e77c345d06222144744c122ded870", size = 5108090, upload_time = "2025-08-22T10:33:03.108Z" }, + { url = "https://files.pythonhosted.org/packages/f6/6e/5f290bc26fcc642bc32942e903e833472271614e24d64ad28aaec09d5dae/lxml-6.0.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:207ae0d5f0f03b30f95e649a6fa22aa73f5825667fee9c7ec6854d30e19f2ed8", size = 5021791, upload_time = "2025-08-22T10:33:06.972Z" }, + { url = "https://files.pythonhosted.org/packages/13/d4/2e7551a86992ece4f9a0f6eebd4fb7e312d30f1e372760e2109e721d4ce6/lxml-6.0.1-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:32297b09ed4b17f7b3f448de87a92fb31bb8747496623483788e9f27c98c0f00", size = 5358861, upload_time = "2025-08-22T10:33:08.967Z" }, + { url = "https://files.pythonhosted.org/packages/8a/5f/cb49d727fc388bf5fd37247209bab0da11697ddc5e976ccac4826599939e/lxml-6.0.1-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7e18224ea241b657a157c85e9cac82c2b113ec90876e01e1f127312006233756", size = 5652569, upload_time = "2025-08-22T10:33:10.815Z" }, + { url = "https://files.pythonhosted.org/packages/ca/b8/66c1ef8c87ad0f958b0a23998851e610607c74849e75e83955d5641272e6/lxml-6.0.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a07a994d3c46cd4020c1ea566345cf6815af205b1e948213a4f0f1d392182072", size = 5252262, upload_time = "2025-08-22T10:33:12.673Z" }, + { url = "https://files.pythonhosted.org/packages/1a/ef/131d3d6b9590e64fdbb932fbc576b81fcc686289da19c7cb796257310e82/lxml-6.0.1-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:2287fadaa12418a813b05095485c286c47ea58155930cfbd98c590d25770e225", size = 4710309, upload_time = "2025-08-22T10:33:14.952Z" }, + { url = "https://files.pythonhosted.org/packages/bc/3f/07f48ae422dce44902309aa7ed386c35310929dc592439c403ec16ef9137/lxml-6.0.1-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b4e597efca032ed99f418bd21314745522ab9fa95af33370dcee5533f7f70136", size = 5265786, upload_time = "2025-08-22T10:33:16.721Z" }, + { url = "https://files.pythonhosted.org/packages/11/c7/125315d7b14ab20d9155e8316f7d287a4956098f787c22d47560b74886c4/lxml-6.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9696d491f156226decdd95d9651c6786d43701e49f32bf23715c975539aa2b3b", size = 5062272, upload_time = "2025-08-22T10:33:18.478Z" }, + { url = "https://files.pythonhosted.org/packages/8b/c3/51143c3a5fc5168a7c3ee626418468ff20d30f5a59597e7b156c1e61fba8/lxml-6.0.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e4e3cd3585f3c6f87cdea44cda68e692cc42a012f0131d25957ba4ce755241a7", size = 4786955, upload_time = "2025-08-22T10:33:20.34Z" }, + { url = "https://files.pythonhosted.org/packages/11/86/73102370a420ec4529647b31c4a8ce8c740c77af3a5fae7a7643212d6f6e/lxml-6.0.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:45cbc92f9d22c28cd3b97f8d07fcefa42e569fbd587dfdac76852b16a4924277", size = 5673557, upload_time = "2025-08-22T10:33:22.282Z" }, + { url = "https://files.pythonhosted.org/packages/d7/2d/aad90afaec51029aef26ef773b8fd74a9e8706e5e2f46a57acd11a421c02/lxml-6.0.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:f8c9bcfd2e12299a442fba94459adf0b0d001dbc68f1594439bfa10ad1ecb74b", size = 5254211, upload_time = "2025-08-22T10:33:24.15Z" }, + { url = "https://files.pythonhosted.org/packages/63/01/c9e42c8c2d8b41f4bdefa42ab05448852e439045f112903dd901b8fbea4d/lxml-6.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1e9dc2b9f1586e7cd77753eae81f8d76220eed9b768f337dc83a3f675f2f0cf9", size = 5275817, upload_time = "2025-08-22T10:33:26.007Z" }, + { url = "https://files.pythonhosted.org/packages/bc/1f/962ea2696759abe331c3b0e838bb17e92224f39c638c2068bf0d8345e913/lxml-6.0.1-cp312-cp312-win32.whl", hash = "sha256:987ad5c3941c64031f59c226167f55a04d1272e76b241bfafc968bdb778e07fb", size = 3610889, upload_time = "2025-08-22T10:33:28.169Z" }, + { url = "https://files.pythonhosted.org/packages/41/e2/22c86a990b51b44442b75c43ecb2f77b8daba8c4ba63696921966eac7022/lxml-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:abb05a45394fd76bf4a60c1b7bec0e6d4e8dfc569fc0e0b1f634cd983a006ddc", size = 4010925, upload_time = "2025-08-22T10:33:29.874Z" }, + { url = "https://files.pythonhosted.org/packages/b2/21/dc0c73325e5eb94ef9c9d60dbb5dcdcb2e7114901ea9509735614a74e75a/lxml-6.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:c4be29bce35020d8579d60aa0a4e95effd66fcfce31c46ffddf7e5422f73a299", size = 3671922, upload_time = "2025-08-22T10:33:31.535Z" }, + { url = "https://files.pythonhosted.org/packages/43/c4/cd757eeec4548e6652eff50b944079d18ce5f8182d2b2cf514e125e8fbcb/lxml-6.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:485eda5d81bb7358db96a83546949c5fe7474bec6c68ef3fa1fb61a584b00eea", size = 8405139, upload_time = "2025-08-22T10:33:34.09Z" }, + { url = "https://files.pythonhosted.org/packages/ff/99/0290bb86a7403893f5e9658490c705fcea103b9191f2039752b071b4ef07/lxml-6.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d12160adea318ce3d118f0b4fbdff7d1225c75fb7749429541b4d217b85c3f76", size = 4585954, upload_time = "2025-08-22T10:33:36.294Z" }, + { url = "https://files.pythonhosted.org/packages/88/a7/4bb54dd1e626342a0f7df6ec6ca44fdd5d0e100ace53acc00e9a689ead04/lxml-6.0.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48c8d335d8ab72f9265e7ba598ae5105a8272437403f4032107dbcb96d3f0b29", size = 4944052, upload_time = "2025-08-22T10:33:38.19Z" }, + { url = "https://files.pythonhosted.org/packages/71/8d/20f51cd07a7cbef6214675a8a5c62b2559a36d9303fe511645108887c458/lxml-6.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:405e7cf9dbdbb52722c231e0f1257214202dfa192327fab3de45fd62e0554082", size = 5098885, upload_time = "2025-08-22T10:33:40.035Z" }, + { url = "https://files.pythonhosted.org/packages/5a/63/efceeee7245d45f97d548e48132258a36244d3c13c6e3ddbd04db95ff496/lxml-6.0.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:299a790d403335a6a057ade46f92612ebab87b223e4e8c5308059f2dc36f45ed", size = 5017542, upload_time = "2025-08-22T10:33:41.896Z" }, + { url = "https://files.pythonhosted.org/packages/57/5d/92cb3d3499f5caba17f7933e6be3b6c7de767b715081863337ced42eb5f2/lxml-6.0.1-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:48da704672f6f9c461e9a73250440c647638cc6ff9567ead4c3b1f189a604ee8", size = 5347303, upload_time = "2025-08-22T10:33:43.868Z" }, + { url = "https://files.pythonhosted.org/packages/69/f8/606fa16a05d7ef5e916c6481c634f40870db605caffed9d08b1a4fb6b989/lxml-6.0.1-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:21e364e1bb731489e3f4d51db416f991a5d5da5d88184728d80ecfb0904b1d68", size = 5641055, upload_time = "2025-08-22T10:33:45.784Z" }, + { url = "https://files.pythonhosted.org/packages/b3/01/15d5fc74ebb49eac4e5df031fbc50713dcc081f4e0068ed963a510b7d457/lxml-6.0.1-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1bce45a2c32032afddbd84ed8ab092130649acb935536ef7a9559636ce7ffd4a", size = 5242719, upload_time = "2025-08-22T10:33:48.089Z" }, + { url = "https://files.pythonhosted.org/packages/42/a5/1b85e2aaaf8deaa67e04c33bddb41f8e73d07a077bf9db677cec7128bfb4/lxml-6.0.1-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:fa164387ff20ab0e575fa909b11b92ff1481e6876835014e70280769920c4433", size = 4717310, upload_time = "2025-08-22T10:33:49.852Z" }, + { url = "https://files.pythonhosted.org/packages/42/23/f3bb1292f55a725814317172eeb296615db3becac8f1a059b53c51fc1da8/lxml-6.0.1-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7587ac5e000e1594e62278422c5783b34a82b22f27688b1074d71376424b73e8", size = 5254024, upload_time = "2025-08-22T10:33:52.22Z" }, + { url = "https://files.pythonhosted.org/packages/b4/be/4d768f581ccd0386d424bac615d9002d805df7cc8482ae07d529f60a3c1e/lxml-6.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:57478424ac4c9170eabf540237125e8d30fad1940648924c058e7bc9fb9cf6dd", size = 5055335, upload_time = "2025-08-22T10:33:54.041Z" }, + { url = "https://files.pythonhosted.org/packages/40/07/ed61d1a3e77d1a9f856c4fab15ee5c09a2853fb7af13b866bb469a3a6d42/lxml-6.0.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:09c74afc7786c10dd6afaa0be2e4805866beadc18f1d843cf517a7851151b499", size = 4784864, upload_time = "2025-08-22T10:33:56.382Z" }, + { url = "https://files.pythonhosted.org/packages/01/37/77e7971212e5c38a55431744f79dff27fd751771775165caea096d055ca4/lxml-6.0.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7fd70681aeed83b196482d42a9b0dc5b13bab55668d09ad75ed26dff3be5a2f5", size = 5657173, upload_time = "2025-08-22T10:33:58.698Z" }, + { url = "https://files.pythonhosted.org/packages/32/a3/e98806d483941cd9061cc838b1169626acef7b2807261fbe5e382fcef881/lxml-6.0.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:10a72e456319b030b3dd900df6b1f19d89adf06ebb688821636dc406788cf6ac", size = 5245896, upload_time = "2025-08-22T10:34:00.586Z" }, + { url = "https://files.pythonhosted.org/packages/07/de/9bb5a05e42e8623bf06b4638931ea8c8f5eb5a020fe31703abdbd2e83547/lxml-6.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b0fa45fb5f55111ce75b56c703843b36baaf65908f8b8d2fbbc0e249dbc127ed", size = 5267417, upload_time = "2025-08-22T10:34:02.719Z" }, + { url = "https://files.pythonhosted.org/packages/f2/43/c1cb2a7c67226266c463ef8a53b82d42607228beb763b5fbf4867e88a21f/lxml-6.0.1-cp313-cp313-win32.whl", hash = "sha256:01dab65641201e00c69338c9c2b8a0f2f484b6b3a22d10779bb417599fae32b5", size = 3610051, upload_time = "2025-08-22T10:34:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/34/96/6a6c3b8aa480639c1a0b9b6faf2a63fb73ab79ffcd2a91cf28745faa22de/lxml-6.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:bdf8f7c8502552d7bff9e4c98971910a0a59f60f88b5048f608d0a1a75e94d1c", size = 4009325, upload_time = "2025-08-22T10:34:06.24Z" }, + { url = "https://files.pythonhosted.org/packages/8c/66/622e8515121e1fd773e3738dae71b8df14b12006d9fb554ce90886689fd0/lxml-6.0.1-cp313-cp313-win_arm64.whl", hash = "sha256:a6aeca75959426b9fd8d4782c28723ba224fe07cfa9f26a141004210528dcbe2", size = 3670443, upload_time = "2025-08-22T10:34:07.974Z" }, + { url = "https://files.pythonhosted.org/packages/38/e3/b7eb612ce07abe766918a7e581ec6a0e5212352194001fd287c3ace945f0/lxml-6.0.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:29b0e849ec7030e3ecb6112564c9f7ad6881e3b2375dd4a0c486c5c1f3a33859", size = 8426160, upload_time = "2025-08-22T10:34:10.154Z" }, + { url = "https://files.pythonhosted.org/packages/35/8f/ab3639a33595cf284fe733c6526da2ca3afbc5fd7f244ae67f3303cec654/lxml-6.0.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:02a0f7e629f73cc0be598c8b0611bf28ec3b948c549578a26111b01307fd4051", size = 4589288, upload_time = "2025-08-22T10:34:12.972Z" }, + { url = "https://files.pythonhosted.org/packages/2c/65/819d54f2e94d5c4458c1db8c1ccac9d05230b27c1038937d3d788eb406f9/lxml-6.0.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:beab5e54de016e730875f612ba51e54c331e2fa6dc78ecf9a5415fc90d619348", size = 4964523, upload_time = "2025-08-22T10:34:15.474Z" }, + { url = "https://files.pythonhosted.org/packages/5b/4a/d4a74ce942e60025cdaa883c5a4478921a99ce8607fc3130f1e349a83b28/lxml-6.0.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:92a08aefecd19ecc4ebf053c27789dd92c87821df2583a4337131cf181a1dffa", size = 5101108, upload_time = "2025-08-22T10:34:17.348Z" }, + { url = "https://files.pythonhosted.org/packages/cb/48/67f15461884074edd58af17b1827b983644d1fae83b3d909e9045a08b61e/lxml-6.0.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36c8fa7e177649470bc3dcf7eae6bee1e4984aaee496b9ccbf30e97ac4127fa2", size = 5053498, upload_time = "2025-08-22T10:34:19.232Z" }, + { url = "https://files.pythonhosted.org/packages/b6/d4/ec1bf1614828a5492f4af0b6a9ee2eb3e92440aea3ac4fa158e5228b772b/lxml-6.0.1-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:5d08e0f1af6916267bb7eff21c09fa105620f07712424aaae09e8cb5dd4164d1", size = 5351057, upload_time = "2025-08-22T10:34:21.143Z" }, + { url = "https://files.pythonhosted.org/packages/65/2b/c85929dacac08821f2100cea3eb258ce5c8804a4e32b774f50ebd7592850/lxml-6.0.1-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9705cdfc05142f8c38c97a61bd3a29581ceceb973a014e302ee4a73cc6632476", size = 5671579, upload_time = "2025-08-22T10:34:23.528Z" }, + { url = "https://files.pythonhosted.org/packages/d0/36/cf544d75c269b9aad16752fd9f02d8e171c5a493ca225cb46bb7ba72868c/lxml-6.0.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74555e2da7c1636e30bff4e6e38d862a634cf020ffa591f1f63da96bf8b34772", size = 5250403, upload_time = "2025-08-22T10:34:25.642Z" }, + { url = "https://files.pythonhosted.org/packages/c2/e8/83dbc946ee598fd75fdeae6151a725ddeaab39bb321354a9468d4c9f44f3/lxml-6.0.1-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:e38b5f94c5a2a5dadaddd50084098dfd005e5a2a56cd200aaf5e0a20e8941782", size = 4696712, upload_time = "2025-08-22T10:34:27.753Z" }, + { url = "https://files.pythonhosted.org/packages/f4/72/889c633b47c06205743ba935f4d1f5aa4eb7f0325d701ed2b0540df1b004/lxml-6.0.1-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a5ec101a92ddacb4791977acfc86c1afd624c032974bfb6a21269d1083c9bc49", size = 5268177, upload_time = "2025-08-22T10:34:29.804Z" }, + { url = "https://files.pythonhosted.org/packages/b0/b6/f42a21a1428479b66ea0da7bd13e370436aecaff0cfe93270c7e165bd2a4/lxml-6.0.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:5c17e70c82fd777df586c12114bbe56e4e6f823a971814fd40dec9c0de518772", size = 5094648, upload_time = "2025-08-22T10:34:31.703Z" }, + { url = "https://files.pythonhosted.org/packages/51/b0/5f8c1e8890e2ee1c2053c2eadd1cb0e4b79e2304e2912385f6ca666f48b1/lxml-6.0.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:45fdd0415a0c3d91640b5d7a650a8f37410966a2e9afebb35979d06166fd010e", size = 4745220, upload_time = "2025-08-22T10:34:33.595Z" }, + { url = "https://files.pythonhosted.org/packages/eb/f9/820b5125660dae489ca3a21a36d9da2e75dd6b5ffe922088f94bbff3b8a0/lxml-6.0.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:d417eba28981e720a14fcb98f95e44e7a772fe25982e584db38e5d3b6ee02e79", size = 5692913, upload_time = "2025-08-22T10:34:35.482Z" }, + { url = "https://files.pythonhosted.org/packages/23/8e/a557fae9eec236618aecf9ff35fec18df41b6556d825f3ad6017d9f6e878/lxml-6.0.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:8e5d116b9e59be7934febb12c41cce2038491ec8fdb743aeacaaf36d6e7597e4", size = 5259816, upload_time = "2025-08-22T10:34:37.482Z" }, + { url = "https://files.pythonhosted.org/packages/fa/fd/b266cfaab81d93a539040be699b5854dd24c84e523a1711ee5f615aa7000/lxml-6.0.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c238f0d0d40fdcb695c439fe5787fa69d40f45789326b3bb6ef0d61c4b588d6e", size = 5276162, upload_time = "2025-08-22T10:34:39.507Z" }, + { url = "https://files.pythonhosted.org/packages/25/6c/6f9610fbf1de002048e80585ea4719591921a0316a8565968737d9f125ca/lxml-6.0.1-cp314-cp314-win32.whl", hash = "sha256:537b6cf1c5ab88cfd159195d412edb3e434fee880f206cbe68dff9c40e17a68a", size = 3669595, upload_time = "2025-08-22T10:34:41.783Z" }, + { url = "https://files.pythonhosted.org/packages/72/a5/506775e3988677db24dc75a7b03e04038e0b3d114ccd4bccea4ce0116c15/lxml-6.0.1-cp314-cp314-win_amd64.whl", hash = "sha256:911d0a2bb3ef3df55b3d97ab325a9ca7e438d5112c102b8495321105d25a441b", size = 4079818, upload_time = "2025-08-22T10:34:44.04Z" }, + { url = "https://files.pythonhosted.org/packages/0a/44/9613f300201b8700215856e5edd056d4e58dd23368699196b58877d4408b/lxml-6.0.1-cp314-cp314-win_arm64.whl", hash = "sha256:2834377b0145a471a654d699bdb3a2155312de492142ef5a1d426af2c60a0a31", size = 3753901, upload_time = "2025-08-22T10:34:45.799Z" }, ] [[package]] name = "markdown" version = "3.8.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/c2/4ab49206c17f75cb08d6311171f2d65798988db4360c4d1485bd0eedd67c/markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45", size = 362071 } +sdist = { url = "https://files.pythonhosted.org/packages/d7/c2/4ab49206c17f75cb08d6311171f2d65798988db4360c4d1485bd0eedd67c/markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45", size = 362071, upload_time = "2025-06-19T17:12:44.483Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/2b/34cc11786bc00d0f04d0f5fdc3a2b1ae0b6239eef72d3d345805f9ad92a1/markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24", size = 106827 }, + { url = "https://files.pythonhosted.org/packages/96/2b/34cc11786bc00d0f04d0f5fdc3a2b1ae0b6239eef72d3d345805f9ad92a1/markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24", size = 106827, upload_time = "2025-06-19T17:12:42.994Z" }, ] [[package]] @@ -861,56 +1105,56 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596 } +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload_time = "2023-06-03T06:41:14.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload_time = "2023-06-03T06:41:11.019Z" }, ] [[package]] name = "marko" version = "2.1.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/dc/c8cadbd83de1b38d95a48568b445a5553005ebdd32e00a333ca940113db4/marko-2.1.4.tar.gz", hash = "sha256:dd7d66f3706732bf8f994790e674649a4fd0a6c67f16b80246f30de8e16a1eac", size = 142795 } +sdist = { url = "https://files.pythonhosted.org/packages/72/dc/c8cadbd83de1b38d95a48568b445a5553005ebdd32e00a333ca940113db4/marko-2.1.4.tar.gz", hash = "sha256:dd7d66f3706732bf8f994790e674649a4fd0a6c67f16b80246f30de8e16a1eac", size = 142795, upload_time = "2025-06-13T03:25:50.857Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c3/66/49e3691d14898fb6e34ccb337c7677dfb7e18269ed170f12e4b85315eae6/marko-2.1.4-py3-none-any.whl", hash = "sha256:81c2b9f570ca485bc356678d9ba1a1b3eb78b4a315d01f3ded25442fdc796990", size = 42186 }, + { url = "https://files.pythonhosted.org/packages/c3/66/49e3691d14898fb6e34ccb337c7677dfb7e18269ed170f12e4b85315eae6/marko-2.1.4-py3-none-any.whl", hash = "sha256:81c2b9f570ca485bc356678d9ba1a1b3eb78b4a315d01f3ded25442fdc796990", size = 42186, upload_time = "2025-06-13T03:25:49.858Z" }, ] [[package]] name = "markupsafe" version = "3.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, - { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, - { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, - { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, - { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, - { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, - { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, - { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, - { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload_time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload_time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload_time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload_time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload_time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload_time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload_time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload_time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload_time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload_time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload_time = "2024-10-18T15:21:23.499Z" }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload_time = "2024-10-18T15:21:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload_time = "2024-10-18T15:21:25.382Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload_time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload_time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload_time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload_time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload_time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload_time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload_time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload_time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload_time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload_time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload_time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload_time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload_time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload_time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload_time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload_time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload_time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload_time = "2024-10-18T15:21:42.784Z" }, ] [[package]] @@ -920,27 +1164,48 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159 } +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload_time = "2024-04-15T13:44:44.803Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 }, + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload_time = "2024-04-15T13:44:43.265Z" }, +] + +[[package]] +name = "mdit-py-plugins" +version = "0.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown-it-py" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b2/fd/a756d36c0bfba5f6e39a1cdbdbfdd448dc02692467d83816dff4592a1ebc/mdit_py_plugins-0.5.0.tar.gz", hash = "sha256:f4918cb50119f50446560513a8e311d574ff6aaed72606ddae6d35716fe809c6", size = 44655, upload_time = "2025-08-11T07:25:49.083Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fb/86/dd6e5db36df29e76c7a7699123569a4a18c1623ce68d826ed96c62643cae/mdit_py_plugins-0.5.0-py3-none-any.whl", hash = "sha256:07a08422fc1936a5d26d146759e9155ea466e842f5ab2f7d2266dd084c8dab1f", size = 57205, upload_time = "2025-08-11T07:25:47.597Z" }, ] [[package]] name = "mdurl" version = "0.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload_time = "2022-08-14T12:40:10.846Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload_time = "2022-08-14T12:40:09.779Z" }, ] [[package]] name = "mergedeep" version = "1.3.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661, upload_time = "2021-02-05T18:55:30.623Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload_time = "2021-02-05T18:55:29.583Z" }, +] + +[[package]] +name = "mistune" +version = "3.1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347, upload_time = "2025-03-19T14:27:24.955Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, + { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410, upload_time = "2025-03-19T14:27:23.451Z" }, ] [[package]] @@ -962,9 +1227,21 @@ dependencies = [ { name = "pyyaml-env-tag" }, { name = "watchdog" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159, upload_time = "2024-08-30T12:24:06.899Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload_time = "2024-08-30T12:24:05.054Z" }, +] + +[[package]] +name = "mkdocs-argref-plugin" +version = "0.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mkdocs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/26/7c/fea9d842705ca8c9e7dd21da2d0b7b61dbdd8b6e58ca3c7c85b5604914e9/mkdocs_argref_plugin-0.5.0.tar.gz", hash = "sha256:b2982f9670419911f671ddff3f773b27fdc9184762ecd1e00c42aaab3e905e70", size = 7012, upload_time = "2024-08-25T12:50:09.138Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/eb/e7e7ea2f7e374e52fc8425d5cf67890be8278a6e620aa74775da2f1039f7/mkdocs_argref_plugin-0.5.0-py3-none-any.whl", hash = "sha256:6ec4be422bfb5654c38f96785b0093078c3ca3e16774162be607d6f8d483ceb9", size = 6790, upload_time = "2024-08-25T12:50:08.151Z" }, ] [[package]] @@ -974,9 +1251,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/b7/efc75b7870a4fecbc9a05ba94ce622462a40b5a13670d00036c5b47bf82f/mkdocs-autolinks-plugin-0.7.1.tar.gz", hash = "sha256:445ddb9b417b7795856c30801bb430773186c1daf210bdeecf8305f55a47d151", size = 4375 } +sdist = { url = "https://files.pythonhosted.org/packages/63/b7/efc75b7870a4fecbc9a05ba94ce622462a40b5a13670d00036c5b47bf82f/mkdocs-autolinks-plugin-0.7.1.tar.gz", hash = "sha256:445ddb9b417b7795856c30801bb430773186c1daf210bdeecf8305f55a47d151", size = 4375, upload_time = "2023-08-04T14:42:25.67Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/9c/ee3d81a799b8b0b73a89625bcbf3c58cd369c8a26a1b415413edea9bf259/mkdocs_autolinks_plugin-0.7.1-py3-none-any.whl", hash = "sha256:5c6c17f6649b68e79a9ef0b2648d59f3072e18002b90ee1586a64c505f11ab12", size = 4235 }, + { url = "https://files.pythonhosted.org/packages/d4/9c/ee3d81a799b8b0b73a89625bcbf3c58cd369c8a26a1b415413edea9bf259/mkdocs_autolinks_plugin-0.7.1-py3-none-any.whl", hash = "sha256:5c6c17f6649b68e79a9ef0b2648d59f3072e18002b90ee1586a64c505f11ab12", size = 4235, upload_time = "2023-08-04T14:42:23.955Z" }, ] [[package]] @@ -988,11 +1265,21 @@ dependencies = [ { name = "markupsafe" }, { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/47/0c/c9826f35b99c67fa3a7cddfa094c1a6c43fafde558c309c6e4403e5b37dc/mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749", size = 54961 } +sdist = { url = "https://files.pythonhosted.org/packages/47/0c/c9826f35b99c67fa3a7cddfa094c1a6c43fafde558c309c6e4403e5b37dc/mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749", size = 54961, upload_time = "2025-05-20T13:09:09.886Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/87/dc/fc063b78f4b769d1956319351704e23ebeba1e9e1d6a41b4b602325fd7e4/mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13", size = 24969 }, + { url = "https://files.pythonhosted.org/packages/87/dc/fc063b78f4b769d1956319351704e23ebeba1e9e1d6a41b4b602325fd7e4/mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13", size = 24969, upload_time = "2025-05-20T13:09:08.237Z" }, ] +[[package]] +name = "mkdocs-ezlinks-plugin" +version = "0.1.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mkdocs" }, + { name = "pygtrie" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9a/3b/490d1b51fba7da69394e5a17f2c081eb65a10fb73565dc6793d53e4e4206/mkdocs-ezlinks-plugin-0.1.14.tar.gz", hash = "sha256:3e2085c16a850e022393e80194c17612e7b55de87fb45b3ffb618b5dfdb10811", size = 13366, upload_time = "2022-01-24T20:10:30.91Z" } + [[package]] name = "mkdocs-get-deps" version = "0.2.0" @@ -1002,9 +1289,22 @@ dependencies = [ { name = "platformdirs" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload_time = "2023-11-20T17:51:09.981Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521, upload_time = "2023-11-20T17:51:08.587Z" }, +] + +[[package]] +name = "mkdocs-git-committers-plugin" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mkdocs" }, + { name = "pygithub" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/88/e724563e9ff1b119869ef0704157caa8d7b9b9b4a8a8faf8120aa01620e2/mkdocs-git-committers-plugin-0.2.3.tar.gz", hash = "sha256:77188d8aacc11d5233d6949435670e3d6545ffb7a0e274d56f32ed3984353c61", size = 5379, upload_time = "2023-11-06T17:13:30.207Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, + { url = "https://files.pythonhosted.org/packages/81/56/15fdbb6afa718a6c9de626bd11672040832ba547c03daf205e295be4e0d4/mkdocs_git_committers_plugin-0.2.3-py3-none-any.whl", hash = "sha256:4ca79efb7e61a72652d3512d61af5c40a4572e36667e1a00032aad524250780d", size = 4340, upload_time = "2023-11-06T17:13:28.979Z" }, ] [[package]] @@ -1017,9 +1317,26 @@ dependencies = [ { name = "mkdocs" }, { name = "pytz" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/f8/a17ec39a4fc314d40cc96afdc1d401e393ebd4f42309d454cc940a2cf38a/mkdocs_git_revision_date_localized_plugin-1.4.7.tar.gz", hash = "sha256:10a49eff1e1c3cb766e054b9d8360c904ce4fe8c33ac3f6cc083ac6459c91953", size = 450473 } +sdist = { url = "https://files.pythonhosted.org/packages/5e/f8/a17ec39a4fc314d40cc96afdc1d401e393ebd4f42309d454cc940a2cf38a/mkdocs_git_revision_date_localized_plugin-1.4.7.tar.gz", hash = "sha256:10a49eff1e1c3cb766e054b9d8360c904ce4fe8c33ac3f6cc083ac6459c91953", size = 450473, upload_time = "2025-05-28T18:26:20.697Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/53/b6/106fcc15287e7228658fbd0ad9e8b0d775becced0a089cc39984641f4a0f/mkdocs_git_revision_date_localized_plugin-1.4.7-py3-none-any.whl", hash = "sha256:056c0a90242409148f1dc94d5c9d2c25b5b8ddd8de45489fa38f7fa7ccad2bc4", size = 25382 }, + { url = "https://files.pythonhosted.org/packages/53/b6/106fcc15287e7228658fbd0ad9e8b0d775becced0a089cc39984641f4a0f/mkdocs_git_revision_date_localized_plugin-1.4.7-py3-none-any.whl", hash = "sha256:056c0a90242409148f1dc94d5c9d2c25b5b8ddd8de45489fa38f7fa7ccad2bc4", size = 25382, upload_time = "2025-05-28T18:26:18.907Z" }, +] + +[[package]] +name = "mkdocs-jupyter" +version = "0.25.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipykernel" }, + { name = "jupytext" }, + { name = "mkdocs" }, + { name = "mkdocs-material" }, + { name = "nbconvert" }, + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6c/23/6ffb8d2fd2117aa860a04c6fe2510b21bc3c3c085907ffdd851caba53152/mkdocs_jupyter-0.25.1.tar.gz", hash = "sha256:0e9272ff4947e0ec683c92423a4bfb42a26477c103ab1a6ab8277e2dcc8f7afe", size = 1626747, upload_time = "2024-10-15T14:56:32.373Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/37/5f1fd5c3f6954b3256f8126275e62af493b96fb6aef6c0dbc4ee326032ad/mkdocs_jupyter-0.25.1-py3-none-any.whl", hash = "sha256:3f679a857609885d322880e72533ef5255561bbfdb13cfee2a1e92ef4d4ad8d8", size = 1456197, upload_time = "2024-10-15T14:56:29.854Z" }, ] [[package]] @@ -1039,18 +1356,18 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/c1/f804ba2db2ddc2183e900befe7dad64339a34fa935034e1ab405289d0a97/mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5", size = 3951836 } +sdist = { url = "https://files.pythonhosted.org/packages/95/c1/f804ba2db2ddc2183e900befe7dad64339a34fa935034e1ab405289d0a97/mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5", size = 3951836, upload_time = "2025-07-01T10:14:15.671Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/30/dda19f0495a9096b64b6b3c07c4bfcff1c76ee0fc521086d53593f18b4c0/mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a", size = 8716840 }, + { url = "https://files.pythonhosted.org/packages/1d/30/dda19f0495a9096b64b6b3c07c4bfcff1c76ee0fc521086d53593f18b4c0/mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a", size = 8716840, upload_time = "2025-07-01T10:14:13.18Z" }, ] [[package]] name = "mkdocs-material-extensions" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847, upload_time = "2023-11-22T19:09:45.208Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload_time = "2023-11-22T19:09:43.465Z" }, ] [[package]] @@ -1063,9 +1380,9 @@ dependencies = [ { name = "jsmin" }, { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/52/67/fe4b77e7a8ae7628392e28b14122588beaf6078b53eb91c7ed000fd158ac/mkdocs-minify-plugin-0.8.0.tar.gz", hash = "sha256:bc11b78b8120d79e817308e2b11539d790d21445eb63df831e393f76e52e753d", size = 8366 } +sdist = { url = "https://files.pythonhosted.org/packages/52/67/fe4b77e7a8ae7628392e28b14122588beaf6078b53eb91c7ed000fd158ac/mkdocs-minify-plugin-0.8.0.tar.gz", hash = "sha256:bc11b78b8120d79e817308e2b11539d790d21445eb63df831e393f76e52e753d", size = 8366, upload_time = "2024-01-29T16:11:32.982Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1b/cd/2e8d0d92421916e2ea4ff97f10a544a9bd5588eb747556701c983581df13/mkdocs_minify_plugin-0.8.0-py3-none-any.whl", hash = "sha256:5fba1a3f7bd9a2142c9954a6559a57e946587b21f133165ece30ea145c66aee6", size = 6723 }, + { url = "https://files.pythonhosted.org/packages/1b/cd/2e8d0d92421916e2ea4ff97f10a544a9bd5588eb747556701c983581df13/mkdocs_minify_plugin-0.8.0-py3-none-any.whl", hash = "sha256:5fba1a3f7bd9a2142c9954a6559a57e946587b21f133165ece30ea145c66aee6", size = 6723, upload_time = "2024-01-29T16:11:31.851Z" }, ] [[package]] @@ -1075,9 +1392,49 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0a/0e/f72a506a21bdb27b807124e00c688226848a388d1fd3980b80ae3cc27203/mkdocs_open_in_new_tab-1.0.8.tar.gz", hash = "sha256:3e0dad08cc9938b0b13097be8e0aa435919de1eeb2d1a648e66b5dee8d57e048", size = 5791 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/0e/f72a506a21bdb27b807124e00c688226848a388d1fd3980b80ae3cc27203/mkdocs_open_in_new_tab-1.0.8.tar.gz", hash = "sha256:3e0dad08cc9938b0b13097be8e0aa435919de1eeb2d1a648e66b5dee8d57e048", size = 5791, upload_time = "2024-11-18T13:15:13.977Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/21/94/44f3c868495481c868d08eea065c82803f1affd8553d3383b782f497613c/mkdocs_open_in_new_tab-1.0.8-py3-none-any.whl", hash = "sha256:051d767a4467b12d89827e1fea0ec660b05b027c726317fe4fceee5456e36ad2", size = 7717 }, + { url = "https://files.pythonhosted.org/packages/21/94/44f3c868495481c868d08eea065c82803f1affd8553d3383b782f497613c/mkdocs_open_in_new_tab-1.0.8-py3-none-any.whl", hash = "sha256:051d767a4467b12d89827e1fea0ec660b05b027c726317fe4fceee5456e36ad2", size = 7717, upload_time = "2024-11-18T13:15:12.286Z" }, +] + +[[package]] +name = "mkdocs-redirects" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mkdocs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f1/a8/6d44a6cf07e969c7420cb36ab287b0669da636a2044de38a7d2208d5a758/mkdocs_redirects-1.2.2.tar.gz", hash = "sha256:3094981b42ffab29313c2c1b8ac3969861109f58b2dd58c45fc81cd44bfa0095", size = 7162, upload_time = "2024-11-07T14:57:21.109Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/ec/38443b1f2a3821bbcb24e46cd8ba979154417794d54baf949fefde1c2146/mkdocs_redirects-1.2.2-py3-none-any.whl", hash = "sha256:7dbfa5647b79a3589da4401403d69494bd1f4ad03b9c15136720367e1f340ed5", size = 6142, upload_time = "2024-11-07T14:57:19.143Z" }, +] + +[[package]] +name = "mkdocs-table-reader-plugin" +version = "3.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mkdocs" }, + { name = "pandas" }, + { name = "pyyaml" }, + { name = "tabulate" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a1/1b/ca35e4b51a1814924153f7c8afa5a9c2f961688a9c275fa9f4afe7f5083a/mkdocs_table_reader_plugin-3.1.0.tar.gz", hash = "sha256:eb15688ee8c0cd1a842f506f18973b87be22bd7baa5e2e551089de6b7f9ec25b", size = 12510, upload_time = "2024-08-29T14:08:09.54Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/6f/dcc966874f74f8580b99d2ffecbdc85dfd00c4a5039fedbee4ddd7fc8c7f/mkdocs_table_reader_plugin-3.1.0-py3-none-any.whl", hash = "sha256:50a1302661c14d96b90ba0434ae96110441e0c653ce23559e3c6911fe79e7bd2", size = 10564, upload_time = "2024-08-29T14:08:07.367Z" }, +] + +[[package]] +name = "mkdocs-video" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "lxml" }, + { name = "mkdocs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cf/16/45213649b6756744f36f31014fc8673df1d7c998bb9a801c2d769fff4114/mkdocs-video-1.5.0.tar.gz", hash = "sha256:0defc018f4b7927f8afffc4d8e039c84dfba636dffc5e25e2bfa8d6350bc8eca", size = 5633, upload_time = "2023-03-17T17:36:43.343Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/3a/b51e305eca21cdd58f4eb06973099ba0ea679b1f437a92a49f8fc576310e/mkdocs_video-1.5.0-py3-none-any.whl", hash = "sha256:b35613d4dacbac2dfa94d8c2600383cda14ad99a1fa1542b5fc4e9c6d19e9fe1", size = 6570, upload_time = "2023-03-17T17:36:40.776Z" }, ] [[package]] @@ -1092,9 +1449,9 @@ dependencies = [ { name = "mkdocs-autorefs" }, { name = "pymdown-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/41/e8/d22922664a627a0d3d7ff4a6ca95800f5dde54f411982591b4621a76225d/mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42", size = 1212686 } +sdist = { url = "https://files.pythonhosted.org/packages/41/e8/d22922664a627a0d3d7ff4a6ca95800f5dde54f411982591b4621a76225d/mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42", size = 1212686, upload_time = "2025-03-31T08:33:11.997Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/14/22533a578bf8b187e05d67e2c1721ce10e3f526610eebaf7a149d557ea7a/mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6", size = 1631075 }, + { url = "https://files.pythonhosted.org/packages/98/14/22533a578bf8b187e05d67e2c1721ce10e3f526610eebaf7a149d557ea7a/mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6", size = 1631075, upload_time = "2025-03-31T08:33:09.661Z" }, ] [[package]] @@ -1106,9 +1463,9 @@ dependencies = [ { name = "mkdocs-autorefs" }, { name = "mkdocstrings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ed/b886f8c714fd7cccc39b79646b627dbea84cd95c46be43459ef46852caf0/mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d", size = 206065 } +sdist = { url = "https://files.pythonhosted.org/packages/bf/ed/b886f8c714fd7cccc39b79646b627dbea84cd95c46be43459ef46852caf0/mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d", size = 206065, upload_time = "2025-06-03T12:52:49.276Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/dd/a24ee3de56954bfafb6ede7cd63c2413bb842cc48eb45e41c43a05a33074/mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374", size = 124287 }, + { url = "https://files.pythonhosted.org/packages/3b/dd/a24ee3de56954bfafb6ede7cd63c2413bb842cc48eb45e41c43a05a33074/mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374", size = 124287, upload_time = "2025-06-03T12:52:47.819Z" }, ] [[package]] @@ -1120,89 +1477,153 @@ dependencies = [ { name = "pathspec" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/81/69/92c7fa98112e4d9eb075a239caa4ef4649ad7d441545ccffbd5e34607cbb/mypy-1.16.1.tar.gz", hash = "sha256:6bd00a0a2094841c5e47e7374bb42b83d64c527a502e3334e1173a0c24437bab", size = 3324747 } +sdist = { url = "https://files.pythonhosted.org/packages/81/69/92c7fa98112e4d9eb075a239caa4ef4649ad7d441545ccffbd5e34607cbb/mypy-1.16.1.tar.gz", hash = "sha256:6bd00a0a2094841c5e47e7374bb42b83d64c527a502e3334e1173a0c24437bab", size = 3324747, upload_time = "2025-06-16T16:51:35.145Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b4/d6/39482e5fcc724c15bf6280ff5806548c7185e0c090712a3736ed4d07e8b7/mypy-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:af4792433f09575d9eeca5c63d7d90ca4aeceda9d8355e136f80f8967639183d", size = 11066493 }, - { url = "https://files.pythonhosted.org/packages/e6/e5/26c347890efc6b757f4d5bb83f4a0cf5958b8cf49c938ac99b8b72b420a6/mypy-1.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66df38405fd8466ce3517eda1f6640611a0b8e70895e2a9462d1d4323c5eb4b9", size = 10081687 }, - { url = "https://files.pythonhosted.org/packages/44/c7/b5cb264c97b86914487d6a24bd8688c0172e37ec0f43e93b9691cae9468b/mypy-1.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44e7acddb3c48bd2713994d098729494117803616e116032af192871aed80b79", size = 11839723 }, - { url = "https://files.pythonhosted.org/packages/15/f8/491997a9b8a554204f834ed4816bda813aefda31cf873bb099deee3c9a99/mypy-1.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ab5eca37b50188163fa7c1b73c685ac66c4e9bdee4a85c9adac0e91d8895e15", size = 12722980 }, - { url = "https://files.pythonhosted.org/packages/df/f0/2bd41e174b5fd93bc9de9a28e4fb673113633b8a7f3a607fa4a73595e468/mypy-1.16.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb6229b2c9086247e21a83c309754b9058b438704ad2f6807f0d8227f6ebdd", size = 12903328 }, - { url = "https://files.pythonhosted.org/packages/61/81/5572108a7bec2c46b8aff7e9b524f371fe6ab5efb534d38d6b37b5490da8/mypy-1.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:1f0435cf920e287ff68af3d10a118a73f212deb2ce087619eb4e648116d1fe9b", size = 9562321 }, - { url = "https://files.pythonhosted.org/packages/28/e3/96964af4a75a949e67df4b95318fe2b7427ac8189bbc3ef28f92a1c5bc56/mypy-1.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ddc91eb318c8751c69ddb200a5937f1232ee8efb4e64e9f4bc475a33719de438", size = 11063480 }, - { url = "https://files.pythonhosted.org/packages/f5/4d/cd1a42b8e5be278fab7010fb289d9307a63e07153f0ae1510a3d7b703193/mypy-1.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:87ff2c13d58bdc4bbe7dc0dedfe622c0f04e2cb2a492269f3b418df2de05c536", size = 10090538 }, - { url = "https://files.pythonhosted.org/packages/c9/4f/c3c6b4b66374b5f68bab07c8cabd63a049ff69796b844bc759a0ca99bb2a/mypy-1.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a7cfb0fe29fe5a9841b7c8ee6dffb52382c45acdf68f032145b75620acfbd6f", size = 11836839 }, - { url = "https://files.pythonhosted.org/packages/b4/7e/81ca3b074021ad9775e5cb97ebe0089c0f13684b066a750b7dc208438403/mypy-1.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:051e1677689c9d9578b9c7f4d206d763f9bbd95723cd1416fad50db49d52f359", size = 12715634 }, - { url = "https://files.pythonhosted.org/packages/e9/95/bdd40c8be346fa4c70edb4081d727a54d0a05382d84966869738cfa8a497/mypy-1.16.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d5d2309511cc56c021b4b4e462907c2b12f669b2dbeb68300110ec27723971be", size = 12895584 }, - { url = "https://files.pythonhosted.org/packages/5a/fd/d486a0827a1c597b3b48b1bdef47228a6e9ee8102ab8c28f944cb83b65dc/mypy-1.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:4f58ac32771341e38a853c5d0ec0dfe27e18e27da9cdb8bbc882d2249c71a3ee", size = 9573886 }, - { url = "https://files.pythonhosted.org/packages/cf/d3/53e684e78e07c1a2bf7105715e5edd09ce951fc3f47cf9ed095ec1b7a037/mypy-1.16.1-py3-none-any.whl", hash = "sha256:5fc2ac4027d0ef28d6ba69a0343737a23c4d1b83672bf38d1fe237bdc0643b37", size = 2265923 }, + { url = "https://files.pythonhosted.org/packages/b4/d6/39482e5fcc724c15bf6280ff5806548c7185e0c090712a3736ed4d07e8b7/mypy-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:af4792433f09575d9eeca5c63d7d90ca4aeceda9d8355e136f80f8967639183d", size = 11066493, upload_time = "2025-06-16T16:47:01.683Z" }, + { url = "https://files.pythonhosted.org/packages/e6/e5/26c347890efc6b757f4d5bb83f4a0cf5958b8cf49c938ac99b8b72b420a6/mypy-1.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66df38405fd8466ce3517eda1f6640611a0b8e70895e2a9462d1d4323c5eb4b9", size = 10081687, upload_time = "2025-06-16T16:48:19.367Z" }, + { url = "https://files.pythonhosted.org/packages/44/c7/b5cb264c97b86914487d6a24bd8688c0172e37ec0f43e93b9691cae9468b/mypy-1.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44e7acddb3c48bd2713994d098729494117803616e116032af192871aed80b79", size = 11839723, upload_time = "2025-06-16T16:49:20.912Z" }, + { url = "https://files.pythonhosted.org/packages/15/f8/491997a9b8a554204f834ed4816bda813aefda31cf873bb099deee3c9a99/mypy-1.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ab5eca37b50188163fa7c1b73c685ac66c4e9bdee4a85c9adac0e91d8895e15", size = 12722980, upload_time = "2025-06-16T16:37:40.929Z" }, + { url = "https://files.pythonhosted.org/packages/df/f0/2bd41e174b5fd93bc9de9a28e4fb673113633b8a7f3a607fa4a73595e468/mypy-1.16.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb6229b2c9086247e21a83c309754b9058b438704ad2f6807f0d8227f6ebdd", size = 12903328, upload_time = "2025-06-16T16:34:35.099Z" }, + { url = "https://files.pythonhosted.org/packages/61/81/5572108a7bec2c46b8aff7e9b524f371fe6ab5efb534d38d6b37b5490da8/mypy-1.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:1f0435cf920e287ff68af3d10a118a73f212deb2ce087619eb4e648116d1fe9b", size = 9562321, upload_time = "2025-06-16T16:48:58.823Z" }, + { url = "https://files.pythonhosted.org/packages/28/e3/96964af4a75a949e67df4b95318fe2b7427ac8189bbc3ef28f92a1c5bc56/mypy-1.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ddc91eb318c8751c69ddb200a5937f1232ee8efb4e64e9f4bc475a33719de438", size = 11063480, upload_time = "2025-06-16T16:47:56.205Z" }, + { url = "https://files.pythonhosted.org/packages/f5/4d/cd1a42b8e5be278fab7010fb289d9307a63e07153f0ae1510a3d7b703193/mypy-1.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:87ff2c13d58bdc4bbe7dc0dedfe622c0f04e2cb2a492269f3b418df2de05c536", size = 10090538, upload_time = "2025-06-16T16:46:43.92Z" }, + { url = "https://files.pythonhosted.org/packages/c9/4f/c3c6b4b66374b5f68bab07c8cabd63a049ff69796b844bc759a0ca99bb2a/mypy-1.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a7cfb0fe29fe5a9841b7c8ee6dffb52382c45acdf68f032145b75620acfbd6f", size = 11836839, upload_time = "2025-06-16T16:36:28.039Z" }, + { url = "https://files.pythonhosted.org/packages/b4/7e/81ca3b074021ad9775e5cb97ebe0089c0f13684b066a750b7dc208438403/mypy-1.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:051e1677689c9d9578b9c7f4d206d763f9bbd95723cd1416fad50db49d52f359", size = 12715634, upload_time = "2025-06-16T16:50:34.441Z" }, + { url = "https://files.pythonhosted.org/packages/e9/95/bdd40c8be346fa4c70edb4081d727a54d0a05382d84966869738cfa8a497/mypy-1.16.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d5d2309511cc56c021b4b4e462907c2b12f669b2dbeb68300110ec27723971be", size = 12895584, upload_time = "2025-06-16T16:34:54.857Z" }, + { url = "https://files.pythonhosted.org/packages/5a/fd/d486a0827a1c597b3b48b1bdef47228a6e9ee8102ab8c28f944cb83b65dc/mypy-1.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:4f58ac32771341e38a853c5d0ec0dfe27e18e27da9cdb8bbc882d2249c71a3ee", size = 9573886, upload_time = "2025-06-16T16:36:43.589Z" }, + { url = "https://files.pythonhosted.org/packages/cf/d3/53e684e78e07c1a2bf7105715e5edd09ce951fc3f47cf9ed095ec1b7a037/mypy-1.16.1-py3-none-any.whl", hash = "sha256:5fc2ac4027d0ef28d6ba69a0343737a23c4d1b83672bf38d1fe237bdc0643b37", size = 2265923, upload_time = "2025-06-16T16:48:02.366Z" }, ] [[package]] name = "mypy-extensions" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload_time = "2025-04-22T14:54:24.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload_time = "2025-04-22T14:54:22.983Z" }, +] + +[[package]] +name = "nbclient" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "nbformat" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload_time = "2024-12-19T10:32:27.164Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload_time = "2024-12-19T10:32:24.139Z" }, +] + +[[package]] +name = "nbconvert" +version = "7.16.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "bleach", extra = ["css"] }, + { name = "defusedxml" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyterlab-pygments" }, + { name = "markupsafe" }, + { name = "mistune" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "pandocfilters" }, + { name = "pygments" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload_time = "2025-01-28T09:29:14.724Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload_time = "2025-01-28T09:29:12.551Z" }, +] + +[[package]] +name = "nbformat" +version = "5.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload_time = "2024-04-04T11:20:37.371Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 }, + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload_time = "2024-04-04T11:20:34.895Z" }, ] [[package]] name = "nest-asyncio" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418 } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload_time = "2024-01-21T14:25:19.227Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload_time = "2024-01-21T14:25:17.223Z" }, +] + +[[package]] +name = "networkx" +version = "3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065, upload_time = "2025-05-29T11:35:07.804Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload_time = "2025-05-29T11:35:04.961Z" }, ] [[package]] name = "nodeenv" version = "1.9.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437 } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload_time = "2024-06-04T18:44:11.171Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload_time = "2024-06-04T18:44:08.352Z" }, ] [[package]] name = "numpy" version = "2.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2e/19/d7c972dfe90a353dbd3efbbe1d14a5951de80c99c9dc1b93cd998d51dc0f/numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b", size = 20390372 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/56/71ad5022e2f63cfe0ca93559403d0edef14aea70a841d640bd13cdba578e/numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d", size = 20896664 }, - { url = "https://files.pythonhosted.org/packages/25/65/2db52ba049813670f7f987cc5db6dac9be7cd95e923cc6832b3d32d87cef/numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29", size = 14131078 }, - { url = "https://files.pythonhosted.org/packages/57/dd/28fa3c17b0e751047ac928c1e1b6990238faad76e9b147e585b573d9d1bd/numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc", size = 5112554 }, - { url = "https://files.pythonhosted.org/packages/c9/fc/84ea0cba8e760c4644b708b6819d91784c290288c27aca916115e3311d17/numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943", size = 6646560 }, - { url = "https://files.pythonhosted.org/packages/61/b2/512b0c2ddec985ad1e496b0bd853eeb572315c0f07cd6997473ced8f15e2/numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25", size = 14260638 }, - { url = "https://files.pythonhosted.org/packages/6e/45/c51cb248e679a6c6ab14b7a8e3ead3f4a3fe7425fc7a6f98b3f147bec532/numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660", size = 16632729 }, - { url = "https://files.pythonhosted.org/packages/e4/ff/feb4be2e5c09a3da161b412019caf47183099cbea1132fd98061808c2df2/numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952", size = 15565330 }, - { url = "https://files.pythonhosted.org/packages/bc/6d/ceafe87587101e9ab0d370e4f6e5f3f3a85b9a697f2318738e5e7e176ce3/numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77", size = 18361734 }, - { url = "https://files.pythonhosted.org/packages/2b/19/0fb49a3ea088be691f040c9bf1817e4669a339d6e98579f91859b902c636/numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab", size = 6320411 }, - { url = "https://files.pythonhosted.org/packages/b1/3e/e28f4c1dd9e042eb57a3eb652f200225e311b608632bc727ae378623d4f8/numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76", size = 12734973 }, - { url = "https://files.pythonhosted.org/packages/04/a8/8a5e9079dc722acf53522b8f8842e79541ea81835e9b5483388701421073/numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30", size = 10191491 }, - { url = "https://files.pythonhosted.org/packages/d4/bd/35ad97006d8abff8631293f8ea6adf07b0108ce6fec68da3c3fcca1197f2/numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8", size = 20889381 }, - { url = "https://files.pythonhosted.org/packages/f1/4f/df5923874d8095b6062495b39729178eef4a922119cee32a12ee1bd4664c/numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e", size = 14152726 }, - { url = "https://files.pythonhosted.org/packages/8c/0f/a1f269b125806212a876f7efb049b06c6f8772cf0121139f97774cd95626/numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0", size = 5105145 }, - { url = "https://files.pythonhosted.org/packages/6d/63/a7f7fd5f375b0361682f6ffbf686787e82b7bbd561268e4f30afad2bb3c0/numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d", size = 6639409 }, - { url = "https://files.pythonhosted.org/packages/bf/0d/1854a4121af895aab383f4aa233748f1df4671ef331d898e32426756a8a6/numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1", size = 14257630 }, - { url = "https://files.pythonhosted.org/packages/50/30/af1b277b443f2fb08acf1c55ce9d68ee540043f158630d62cef012750f9f/numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1", size = 16627546 }, - { url = "https://files.pythonhosted.org/packages/6e/ec/3b68220c277e463095342d254c61be8144c31208db18d3fd8ef02712bcd6/numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0", size = 15562538 }, - { url = "https://files.pythonhosted.org/packages/77/2b/4014f2bcc4404484021c74d4c5ee8eb3de7e3f7ac75f06672f8dcf85140a/numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8", size = 18360327 }, - { url = "https://files.pythonhosted.org/packages/40/8d/2ddd6c9b30fcf920837b8672f6c65590c7d92e43084c25fc65edc22e93ca/numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8", size = 6312330 }, - { url = "https://files.pythonhosted.org/packages/dd/c8/beaba449925988d415efccb45bf977ff8327a02f655090627318f6398c7b/numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42", size = 12731565 }, - { url = "https://files.pythonhosted.org/packages/0b/c3/5c0c575d7ec78c1126998071f58facfc124006635da75b090805e642c62e/numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e", size = 10190262 }, - { url = "https://files.pythonhosted.org/packages/ea/19/a029cd335cf72f79d2644dcfc22d90f09caa86265cbbde3b5702ccef6890/numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8", size = 20987593 }, - { url = "https://files.pythonhosted.org/packages/25/91/8ea8894406209107d9ce19b66314194675d31761fe2cb3c84fe2eeae2f37/numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb", size = 14300523 }, - { url = "https://files.pythonhosted.org/packages/a6/7f/06187b0066eefc9e7ce77d5f2ddb4e314a55220ad62dd0bfc9f2c44bac14/numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee", size = 5227993 }, - { url = "https://files.pythonhosted.org/packages/e8/ec/a926c293c605fa75e9cfb09f1e4840098ed46d2edaa6e2152ee35dc01ed3/numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992", size = 6736652 }, - { url = "https://files.pythonhosted.org/packages/e3/62/d68e52fb6fde5586650d4c0ce0b05ff3a48ad4df4ffd1b8866479d1d671d/numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c", size = 14331561 }, - { url = "https://files.pythonhosted.org/packages/fc/ec/b74d3f2430960044bdad6900d9f5edc2dc0fb8bf5a0be0f65287bf2cbe27/numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48", size = 16693349 }, - { url = "https://files.pythonhosted.org/packages/0d/15/def96774b9d7eb198ddadfcbd20281b20ebb510580419197e225f5c55c3e/numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee", size = 15642053 }, - { url = "https://files.pythonhosted.org/packages/2b/57/c3203974762a759540c6ae71d0ea2341c1fa41d84e4971a8e76d7141678a/numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280", size = 18434184 }, - { url = "https://files.pythonhosted.org/packages/22/8a/ccdf201457ed8ac6245187850aff4ca56a79edbea4829f4e9f14d46fa9a5/numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e", size = 6440678 }, - { url = "https://files.pythonhosted.org/packages/f1/7e/7f431d8bd8eb7e03d79294aed238b1b0b174b3148570d03a8a8a8f6a0da9/numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc", size = 12870697 }, - { url = "https://files.pythonhosted.org/packages/d4/ca/af82bf0fad4c3e573c6930ed743b5308492ff19917c7caaf2f9b6f9e2e98/numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244", size = 10260376 }, +sdist = { url = "https://files.pythonhosted.org/packages/2e/19/d7c972dfe90a353dbd3efbbe1d14a5951de80c99c9dc1b93cd998d51dc0f/numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b", size = 20390372, upload_time = "2025-06-21T12:28:33.469Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c6/56/71ad5022e2f63cfe0ca93559403d0edef14aea70a841d640bd13cdba578e/numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d", size = 20896664, upload_time = "2025-06-21T12:15:30.845Z" }, + { url = "https://files.pythonhosted.org/packages/25/65/2db52ba049813670f7f987cc5db6dac9be7cd95e923cc6832b3d32d87cef/numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29", size = 14131078, upload_time = "2025-06-21T12:15:52.23Z" }, + { url = "https://files.pythonhosted.org/packages/57/dd/28fa3c17b0e751047ac928c1e1b6990238faad76e9b147e585b573d9d1bd/numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc", size = 5112554, upload_time = "2025-06-21T12:16:01.434Z" }, + { url = "https://files.pythonhosted.org/packages/c9/fc/84ea0cba8e760c4644b708b6819d91784c290288c27aca916115e3311d17/numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943", size = 6646560, upload_time = "2025-06-21T12:16:11.895Z" }, + { url = "https://files.pythonhosted.org/packages/61/b2/512b0c2ddec985ad1e496b0bd853eeb572315c0f07cd6997473ced8f15e2/numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25", size = 14260638, upload_time = "2025-06-21T12:16:32.611Z" }, + { url = "https://files.pythonhosted.org/packages/6e/45/c51cb248e679a6c6ab14b7a8e3ead3f4a3fe7425fc7a6f98b3f147bec532/numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660", size = 16632729, upload_time = "2025-06-21T12:16:57.439Z" }, + { url = "https://files.pythonhosted.org/packages/e4/ff/feb4be2e5c09a3da161b412019caf47183099cbea1132fd98061808c2df2/numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952", size = 15565330, upload_time = "2025-06-21T12:17:20.638Z" }, + { url = "https://files.pythonhosted.org/packages/bc/6d/ceafe87587101e9ab0d370e4f6e5f3f3a85b9a697f2318738e5e7e176ce3/numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77", size = 18361734, upload_time = "2025-06-21T12:17:47.938Z" }, + { url = "https://files.pythonhosted.org/packages/2b/19/0fb49a3ea088be691f040c9bf1817e4669a339d6e98579f91859b902c636/numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab", size = 6320411, upload_time = "2025-06-21T12:17:58.475Z" }, + { url = "https://files.pythonhosted.org/packages/b1/3e/e28f4c1dd9e042eb57a3eb652f200225e311b608632bc727ae378623d4f8/numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76", size = 12734973, upload_time = "2025-06-21T12:18:17.601Z" }, + { url = "https://files.pythonhosted.org/packages/04/a8/8a5e9079dc722acf53522b8f8842e79541ea81835e9b5483388701421073/numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30", size = 10191491, upload_time = "2025-06-21T12:18:33.585Z" }, + { url = "https://files.pythonhosted.org/packages/d4/bd/35ad97006d8abff8631293f8ea6adf07b0108ce6fec68da3c3fcca1197f2/numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8", size = 20889381, upload_time = "2025-06-21T12:19:04.103Z" }, + { url = "https://files.pythonhosted.org/packages/f1/4f/df5923874d8095b6062495b39729178eef4a922119cee32a12ee1bd4664c/numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e", size = 14152726, upload_time = "2025-06-21T12:19:25.599Z" }, + { url = "https://files.pythonhosted.org/packages/8c/0f/a1f269b125806212a876f7efb049b06c6f8772cf0121139f97774cd95626/numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0", size = 5105145, upload_time = "2025-06-21T12:19:34.782Z" }, + { url = "https://files.pythonhosted.org/packages/6d/63/a7f7fd5f375b0361682f6ffbf686787e82b7bbd561268e4f30afad2bb3c0/numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d", size = 6639409, upload_time = "2025-06-21T12:19:45.228Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0d/1854a4121af895aab383f4aa233748f1df4671ef331d898e32426756a8a6/numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1", size = 14257630, upload_time = "2025-06-21T12:20:06.544Z" }, + { url = "https://files.pythonhosted.org/packages/50/30/af1b277b443f2fb08acf1c55ce9d68ee540043f158630d62cef012750f9f/numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1", size = 16627546, upload_time = "2025-06-21T12:20:31.002Z" }, + { url = "https://files.pythonhosted.org/packages/6e/ec/3b68220c277e463095342d254c61be8144c31208db18d3fd8ef02712bcd6/numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0", size = 15562538, upload_time = "2025-06-21T12:20:54.322Z" }, + { url = "https://files.pythonhosted.org/packages/77/2b/4014f2bcc4404484021c74d4c5ee8eb3de7e3f7ac75f06672f8dcf85140a/numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8", size = 18360327, upload_time = "2025-06-21T12:21:21.053Z" }, + { url = "https://files.pythonhosted.org/packages/40/8d/2ddd6c9b30fcf920837b8672f6c65590c7d92e43084c25fc65edc22e93ca/numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8", size = 6312330, upload_time = "2025-06-21T12:25:07.447Z" }, + { url = "https://files.pythonhosted.org/packages/dd/c8/beaba449925988d415efccb45bf977ff8327a02f655090627318f6398c7b/numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42", size = 12731565, upload_time = "2025-06-21T12:25:26.444Z" }, + { url = "https://files.pythonhosted.org/packages/0b/c3/5c0c575d7ec78c1126998071f58facfc124006635da75b090805e642c62e/numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e", size = 10190262, upload_time = "2025-06-21T12:25:42.196Z" }, + { url = "https://files.pythonhosted.org/packages/ea/19/a029cd335cf72f79d2644dcfc22d90f09caa86265cbbde3b5702ccef6890/numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8", size = 20987593, upload_time = "2025-06-21T12:21:51.664Z" }, + { url = "https://files.pythonhosted.org/packages/25/91/8ea8894406209107d9ce19b66314194675d31761fe2cb3c84fe2eeae2f37/numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb", size = 14300523, upload_time = "2025-06-21T12:22:13.583Z" }, + { url = "https://files.pythonhosted.org/packages/a6/7f/06187b0066eefc9e7ce77d5f2ddb4e314a55220ad62dd0bfc9f2c44bac14/numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee", size = 5227993, upload_time = "2025-06-21T12:22:22.53Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ec/a926c293c605fa75e9cfb09f1e4840098ed46d2edaa6e2152ee35dc01ed3/numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992", size = 6736652, upload_time = "2025-06-21T12:22:33.629Z" }, + { url = "https://files.pythonhosted.org/packages/e3/62/d68e52fb6fde5586650d4c0ce0b05ff3a48ad4df4ffd1b8866479d1d671d/numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c", size = 14331561, upload_time = "2025-06-21T12:22:55.056Z" }, + { url = "https://files.pythonhosted.org/packages/fc/ec/b74d3f2430960044bdad6900d9f5edc2dc0fb8bf5a0be0f65287bf2cbe27/numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48", size = 16693349, upload_time = "2025-06-21T12:23:20.53Z" }, + { url = "https://files.pythonhosted.org/packages/0d/15/def96774b9d7eb198ddadfcbd20281b20ebb510580419197e225f5c55c3e/numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee", size = 15642053, upload_time = "2025-06-21T12:23:43.697Z" }, + { url = "https://files.pythonhosted.org/packages/2b/57/c3203974762a759540c6ae71d0ea2341c1fa41d84e4971a8e76d7141678a/numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280", size = 18434184, upload_time = "2025-06-21T12:24:10.708Z" }, + { url = "https://files.pythonhosted.org/packages/22/8a/ccdf201457ed8ac6245187850aff4ca56a79edbea4829f4e9f14d46fa9a5/numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e", size = 6440678, upload_time = "2025-06-21T12:24:21.596Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7e/7f431d8bd8eb7e03d79294aed238b1b0b174b3148570d03a8a8a8f6a0da9/numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc", size = 12870697, upload_time = "2025-06-21T12:24:40.644Z" }, + { url = "https://files.pythonhosted.org/packages/d4/ca/af82bf0fad4c3e573c6930ed743b5308492ff19917c7caaf2f9b6f9e2e98/numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244", size = 10260376, upload_time = "2025-06-21T12:24:56.884Z" }, ] [[package]] @@ -1216,9 +1637,9 @@ dependencies = [ { name = "pyarrow" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1a/d1/5c0bb2a714ebea7df131b8e87010eab39d0df75878f6785f2a214ff66bb2/oda_reader-1.2.2.tar.gz", hash = "sha256:55be081e1744e75184eca3d09e794fad71958201d08b48fb497aac97a95f3685", size = 35630 } +sdist = { url = "https://files.pythonhosted.org/packages/1a/d1/5c0bb2a714ebea7df131b8e87010eab39d0df75878f6785f2a214ff66bb2/oda_reader-1.2.2.tar.gz", hash = "sha256:55be081e1744e75184eca3d09e794fad71958201d08b48fb497aac97a95f3685", size = 35630, upload_time = "2025-06-16T16:15:05.49Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d8/ec/59338ec9108848dc53f50e7381b9817595bf98f414f4a732100a06828a3b/oda_reader-1.2.2-py3-none-any.whl", hash = "sha256:7f7b854ab1e9bc2cf64b6c63bd56a2ac64cb90ec054518fd01b741fd518cf007", size = 45314 }, + { url = "https://files.pythonhosted.org/packages/d8/ec/59338ec9108848dc53f50e7381b9817595bf98f414f4a732100a06828a3b/oda_reader-1.2.2-py3-none-any.whl", hash = "sha256:7f7b854ab1e9bc2cf64b6c63bd56a2ac64cb90ec054518fd01b741fd518cf007", size = 45314, upload_time = "2025-06-16T16:15:04.328Z" }, ] [[package]] @@ -1228,27 +1649,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "et-xmlfile" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464 } +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload_time = "2024-06-28T14:03:44.161Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910 }, + { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload_time = "2024-06-28T14:03:41.161Z" }, ] [[package]] name = "packaging" version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload_time = "2025-04-19T11:48:59.673Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload_time = "2025-04-19T11:48:57.875Z" }, ] [[package]] name = "paginate" version = "0.5.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload_time = "2024-08-25T14:17:24.139Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload_time = "2024-08-25T14:17:22.55Z" }, ] [[package]] @@ -1261,53 +1682,62 @@ dependencies = [ { name = "pytz" }, { name = "tzdata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d1/6f/75aa71f8a14267117adeeed5d21b204770189c0a0025acbdc03c337b28fc/pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2", size = 4487493 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/de/b8445e0f5d217a99fe0eeb2f4988070908979bec3587c0633e5428ab596c/pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3", size = 11588172 }, - { url = "https://files.pythonhosted.org/packages/1e/e0/801cdb3564e65a5ac041ab99ea6f1d802a6c325bb6e58c79c06a3f1cd010/pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232", size = 10717365 }, - { url = "https://files.pythonhosted.org/packages/51/a5/c76a8311833c24ae61a376dbf360eb1b1c9247a5d9c1e8b356563b31b80c/pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e", size = 11280411 }, - { url = "https://files.pythonhosted.org/packages/da/01/e383018feba0a1ead6cf5fe8728e5d767fee02f06a3d800e82c489e5daaf/pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4", size = 11988013 }, - { url = "https://files.pythonhosted.org/packages/5b/14/cec7760d7c9507f11c97d64f29022e12a6cc4fc03ac694535e89f88ad2ec/pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8", size = 12767210 }, - { url = "https://files.pythonhosted.org/packages/50/b9/6e2d2c6728ed29fb3d4d4d302504fb66f1a543e37eb2e43f352a86365cdf/pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679", size = 13440571 }, - { url = "https://files.pythonhosted.org/packages/80/a5/3a92893e7399a691bad7664d977cb5e7c81cf666c81f89ea76ba2bff483d/pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8", size = 10987601 }, - { url = "https://files.pythonhosted.org/packages/32/ed/ff0a67a2c5505e1854e6715586ac6693dd860fbf52ef9f81edee200266e7/pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22", size = 11531393 }, - { url = "https://files.pythonhosted.org/packages/c7/db/d8f24a7cc9fb0972adab0cc80b6817e8bef888cfd0024eeb5a21c0bb5c4a/pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a", size = 10668750 }, - { url = "https://files.pythonhosted.org/packages/0f/b0/80f6ec783313f1e2356b28b4fd8d2148c378370045da918c73145e6aab50/pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928", size = 11342004 }, - { url = "https://files.pythonhosted.org/packages/e9/e2/20a317688435470872885e7fc8f95109ae9683dec7c50be29b56911515a5/pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9", size = 12050869 }, - { url = "https://files.pythonhosted.org/packages/55/79/20d746b0a96c67203a5bee5fb4e00ac49c3e8009a39e1f78de264ecc5729/pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12", size = 12750218 }, - { url = "https://files.pythonhosted.org/packages/7c/0f/145c8b41e48dbf03dd18fdd7f24f8ba95b8254a97a3379048378f33e7838/pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb", size = 13416763 }, - { url = "https://files.pythonhosted.org/packages/b2/c0/54415af59db5cdd86a3d3bf79863e8cc3fa9ed265f0745254061ac09d5f2/pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956", size = 10987482 }, - { url = "https://files.pythonhosted.org/packages/48/64/2fd2e400073a1230e13b8cd604c9bc95d9e3b962e5d44088ead2e8f0cfec/pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a", size = 12029159 }, - { url = "https://files.pythonhosted.org/packages/d8/0a/d84fd79b0293b7ef88c760d7dca69828d867c89b6d9bc52d6a27e4d87316/pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9", size = 11393287 }, - { url = "https://files.pythonhosted.org/packages/50/ae/ff885d2b6e88f3c7520bb74ba319268b42f05d7e583b5dded9837da2723f/pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275", size = 11309381 }, - { url = "https://files.pythonhosted.org/packages/85/86/1fa345fc17caf5d7780d2699985c03dbe186c68fee00b526813939062bb0/pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab", size = 11883998 }, - { url = "https://files.pythonhosted.org/packages/81/aa/e58541a49b5e6310d89474333e994ee57fea97c8aaa8fc7f00b873059bbf/pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96", size = 12704705 }, - { url = "https://files.pythonhosted.org/packages/d5/f9/07086f5b0f2a19872554abeea7658200824f5835c58a106fa8f2ae96a46c/pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444", size = 13189044 }, +sdist = { url = "https://files.pythonhosted.org/packages/d1/6f/75aa71f8a14267117adeeed5d21b204770189c0a0025acbdc03c337b28fc/pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2", size = 4487493, upload_time = "2025-07-07T19:20:04.079Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/de/b8445e0f5d217a99fe0eeb2f4988070908979bec3587c0633e5428ab596c/pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3", size = 11588172, upload_time = "2025-07-07T19:18:52.054Z" }, + { url = "https://files.pythonhosted.org/packages/1e/e0/801cdb3564e65a5ac041ab99ea6f1d802a6c325bb6e58c79c06a3f1cd010/pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232", size = 10717365, upload_time = "2025-07-07T19:18:54.785Z" }, + { url = "https://files.pythonhosted.org/packages/51/a5/c76a8311833c24ae61a376dbf360eb1b1c9247a5d9c1e8b356563b31b80c/pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e", size = 11280411, upload_time = "2025-07-07T19:18:57.045Z" }, + { url = "https://files.pythonhosted.org/packages/da/01/e383018feba0a1ead6cf5fe8728e5d767fee02f06a3d800e82c489e5daaf/pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4", size = 11988013, upload_time = "2025-07-07T19:18:59.771Z" }, + { url = "https://files.pythonhosted.org/packages/5b/14/cec7760d7c9507f11c97d64f29022e12a6cc4fc03ac694535e89f88ad2ec/pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8", size = 12767210, upload_time = "2025-07-07T19:19:02.944Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/6e2d2c6728ed29fb3d4d4d302504fb66f1a543e37eb2e43f352a86365cdf/pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679", size = 13440571, upload_time = "2025-07-07T19:19:06.82Z" }, + { url = "https://files.pythonhosted.org/packages/80/a5/3a92893e7399a691bad7664d977cb5e7c81cf666c81f89ea76ba2bff483d/pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8", size = 10987601, upload_time = "2025-07-07T19:19:09.589Z" }, + { url = "https://files.pythonhosted.org/packages/32/ed/ff0a67a2c5505e1854e6715586ac6693dd860fbf52ef9f81edee200266e7/pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22", size = 11531393, upload_time = "2025-07-07T19:19:12.245Z" }, + { url = "https://files.pythonhosted.org/packages/c7/db/d8f24a7cc9fb0972adab0cc80b6817e8bef888cfd0024eeb5a21c0bb5c4a/pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a", size = 10668750, upload_time = "2025-07-07T19:19:14.612Z" }, + { url = "https://files.pythonhosted.org/packages/0f/b0/80f6ec783313f1e2356b28b4fd8d2148c378370045da918c73145e6aab50/pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928", size = 11342004, upload_time = "2025-07-07T19:19:16.857Z" }, + { url = "https://files.pythonhosted.org/packages/e9/e2/20a317688435470872885e7fc8f95109ae9683dec7c50be29b56911515a5/pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9", size = 12050869, upload_time = "2025-07-07T19:19:19.265Z" }, + { url = "https://files.pythonhosted.org/packages/55/79/20d746b0a96c67203a5bee5fb4e00ac49c3e8009a39e1f78de264ecc5729/pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12", size = 12750218, upload_time = "2025-07-07T19:19:21.547Z" }, + { url = "https://files.pythonhosted.org/packages/7c/0f/145c8b41e48dbf03dd18fdd7f24f8ba95b8254a97a3379048378f33e7838/pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb", size = 13416763, upload_time = "2025-07-07T19:19:23.939Z" }, + { url = "https://files.pythonhosted.org/packages/b2/c0/54415af59db5cdd86a3d3bf79863e8cc3fa9ed265f0745254061ac09d5f2/pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956", size = 10987482, upload_time = "2025-07-07T19:19:42.699Z" }, + { url = "https://files.pythonhosted.org/packages/48/64/2fd2e400073a1230e13b8cd604c9bc95d9e3b962e5d44088ead2e8f0cfec/pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a", size = 12029159, upload_time = "2025-07-07T19:19:26.362Z" }, + { url = "https://files.pythonhosted.org/packages/d8/0a/d84fd79b0293b7ef88c760d7dca69828d867c89b6d9bc52d6a27e4d87316/pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9", size = 11393287, upload_time = "2025-07-07T19:19:29.157Z" }, + { url = "https://files.pythonhosted.org/packages/50/ae/ff885d2b6e88f3c7520bb74ba319268b42f05d7e583b5dded9837da2723f/pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275", size = 11309381, upload_time = "2025-07-07T19:19:31.436Z" }, + { url = "https://files.pythonhosted.org/packages/85/86/1fa345fc17caf5d7780d2699985c03dbe186c68fee00b526813939062bb0/pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab", size = 11883998, upload_time = "2025-07-07T19:19:34.267Z" }, + { url = "https://files.pythonhosted.org/packages/81/aa/e58541a49b5e6310d89474333e994ee57fea97c8aaa8fc7f00b873059bbf/pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96", size = 12704705, upload_time = "2025-07-07T19:19:36.856Z" }, + { url = "https://files.pythonhosted.org/packages/d5/f9/07086f5b0f2a19872554abeea7658200824f5835c58a106fa8f2ae96a46c/pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444", size = 13189044, upload_time = "2025-07-07T19:19:39.999Z" }, +] + +[[package]] +name = "pandocfilters" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload_time = "2024-01-18T20:08:13.726Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload_time = "2024-01-18T20:08:11.28Z" }, ] [[package]] name = "parso" version = "0.8.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609 } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609, upload_time = "2024-04-05T09:43:55.897Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 }, + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650, upload_time = "2024-04-05T09:43:53.299Z" }, ] [[package]] name = "pathspec" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload_time = "2023-12-10T22:30:45Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload_time = "2023-12-10T22:30:43.14Z" }, ] [[package]] name = "petl" version = "1.7.16" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/99/28/ce7321fbd3b981fd9c212adf7455e0e4e42babebd83b92e24f8265d13dd3/petl-1.7.16.tar.gz", hash = "sha256:9c2fea64d859da45e120fd86d471e5387396cc45d5d4986efa79679f18eb8752", size = 420780 } +sdist = { url = "https://files.pythonhosted.org/packages/99/28/ce7321fbd3b981fd9c212adf7455e0e4e42babebd83b92e24f8265d13dd3/petl-1.7.16.tar.gz", hash = "sha256:9c2fea64d859da45e120fd86d471e5387396cc45d5d4986efa79679f18eb8752", size = 420780, upload_time = "2025-04-04T23:54:50.921Z" } [[package]] name = "pexpect" @@ -1316,9 +1746,75 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ptyprocess" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 }, +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload_time = "2023-11-25T09:07:26.339Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload_time = "2023-11-25T06:56:14.81Z" }, +] + +[[package]] +name = "pillow" +version = "11.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload_time = "2025-07-01T09:16:30.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800, upload_time = "2025-07-01T09:14:17.648Z" }, + { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296, upload_time = "2025-07-01T09:14:19.828Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726, upload_time = "2025-07-03T13:10:04.448Z" }, + { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652, upload_time = "2025-07-03T13:10:10.391Z" }, + { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787, upload_time = "2025-07-01T09:14:21.63Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236, upload_time = "2025-07-01T09:14:23.321Z" }, + { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950, upload_time = "2025-07-01T09:14:25.237Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358, upload_time = "2025-07-01T09:14:27.053Z" }, + { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079, upload_time = "2025-07-01T09:14:30.104Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324, upload_time = "2025-07-01T09:14:31.899Z" }, + { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067, upload_time = "2025-07-01T09:14:33.709Z" }, + { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload_time = "2025-07-01T09:14:35.276Z" }, + { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload_time = "2025-07-01T09:14:37.203Z" }, + { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload_time = "2025-07-01T09:14:39.344Z" }, + { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload_time = "2025-07-01T09:14:41.843Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload_time = "2025-07-01T09:14:44.008Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload_time = "2025-07-03T13:10:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload_time = "2025-07-03T13:10:21.857Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload_time = "2025-07-01T09:14:45.698Z" }, + { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload_time = "2025-07-01T09:14:47.415Z" }, + { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload_time = "2025-07-01T09:14:49.636Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload_time = "2025-07-01T09:14:51.962Z" }, + { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload_time = "2025-07-01T09:14:54.142Z" }, + { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload_time = "2025-07-01T09:14:56.436Z" }, + { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload_time = "2025-07-01T09:14:58.072Z" }, + { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload_time = "2025-07-01T09:14:59.79Z" }, + { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload_time = "2025-07-01T09:15:01.648Z" }, + { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload_time = "2025-07-03T13:10:27.018Z" }, + { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload_time = "2025-07-03T13:10:33.01Z" }, + { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload_time = "2025-07-01T09:15:03.365Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload_time = "2025-07-01T09:15:05.655Z" }, + { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload_time = "2025-07-01T09:15:07.358Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload_time = "2025-07-01T09:15:09.317Z" }, + { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload_time = "2025-07-01T09:15:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload_time = "2025-07-01T09:15:13.164Z" }, + { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload_time = "2025-07-01T09:15:15.695Z" }, + { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload_time = "2025-07-01T09:15:17.429Z" }, + { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload_time = "2025-07-01T09:15:19.423Z" }, + { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload_time = "2025-07-03T13:10:38.404Z" }, + { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload_time = "2025-07-03T13:10:44.987Z" }, + { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload_time = "2025-07-01T09:15:21.237Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload_time = "2025-07-01T09:15:23.186Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload_time = "2025-07-01T09:15:25.1Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload_time = "2025-07-01T09:15:27.378Z" }, + { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload_time = "2025-07-01T09:15:29.294Z" }, + { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload_time = "2025-07-01T09:15:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload_time = "2025-07-01T09:15:33.328Z" }, + { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload_time = "2025-07-01T09:15:35.194Z" }, + { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload_time = "2025-07-01T09:15:37.114Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload_time = "2025-07-03T13:10:50.248Z" }, + { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload_time = "2025-07-03T13:10:56.432Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload_time = "2025-07-01T09:15:39.436Z" }, + { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload_time = "2025-07-01T09:15:41.269Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload_time = "2025-07-01T09:15:43.13Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload_time = "2025-07-01T09:15:44.937Z" }, + { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload_time = "2025-07-01T09:15:46.673Z" }, + { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload_time = "2025-07-01T09:15:48.512Z" }, + { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload_time = "2025-07-01T09:15:50.399Z" }, ] [[package]] @@ -1331,36 +1827,36 @@ dependencies = [ { name = "platformdirs" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/20/bb/52b15ddf7b7706ed591134a895dbf6e41c8348171fb635e655e0a4bbb0ea/pint-0.24.4.tar.gz", hash = "sha256:35275439b574837a6cd3020a5a4a73645eb125ce4152a73a2f126bf164b91b80", size = 342225 } +sdist = { url = "https://files.pythonhosted.org/packages/20/bb/52b15ddf7b7706ed591134a895dbf6e41c8348171fb635e655e0a4bbb0ea/pint-0.24.4.tar.gz", hash = "sha256:35275439b574837a6cd3020a5a4a73645eb125ce4152a73a2f126bf164b91b80", size = 342225, upload_time = "2024-11-07T16:29:46.061Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/16/bd2f5904557265882108dc2e04f18abc05ab0c2b7082ae9430091daf1d5c/Pint-0.24.4-py3-none-any.whl", hash = "sha256:aa54926c8772159fcf65f82cc0d34de6768c151b32ad1deb0331291c38fe7659", size = 302029 }, + { url = "https://files.pythonhosted.org/packages/b7/16/bd2f5904557265882108dc2e04f18abc05ab0c2b7082ae9430091daf1d5c/Pint-0.24.4-py3-none-any.whl", hash = "sha256:aa54926c8772159fcf65f82cc0d34de6768c151b32ad1deb0331291c38fe7659", size = 302029, upload_time = "2024-11-07T16:29:43.976Z" }, ] [[package]] name = "platformdirs" version = "4.3.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362 } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload_time = "2025-05-07T22:47:42.121Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567 }, + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload_time = "2025-05-07T22:47:40.376Z" }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload_time = "2025-05-15T12:30:07.975Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload_time = "2025-05-15T12:30:06.134Z" }, ] [[package]] name = "ply" version = "3.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130 } +sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130, upload_time = "2018-02-15T19:01:31.097Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567 }, + { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567, upload_time = "2018-02-15T19:01:27.172Z" }, ] [[package]] @@ -1374,9 +1870,9 @@ dependencies = [ { name = "pyyaml" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424 } +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload_time = "2025-03-18T21:35:20.987Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707 }, + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload_time = "2025-03-18T21:35:19.343Z" }, ] [[package]] @@ -1386,86 +1882,86 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wcwidth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940 } +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload_time = "2025-04-15T09:18:47.731Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload_time = "2025-04-15T09:18:44.753Z" }, ] [[package]] name = "psutil" version = "7.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003 } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload_time = "2025-02-13T21:54:07.946Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051 }, - { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535 }, - { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004 }, - { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986 }, - { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544 }, - { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053 }, - { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885 }, + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload_time = "2025-02-13T21:54:12.36Z" }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload_time = "2025-02-13T21:54:16.07Z" }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload_time = "2025-02-13T21:54:18.662Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload_time = "2025-02-13T21:54:21.811Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload_time = "2025-02-13T21:54:24.68Z" }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload_time = "2025-02-13T21:54:34.31Z" }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload_time = "2025-02-13T21:54:37.486Z" }, ] [[package]] name = "ptyprocess" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762 } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload_time = "2020-12-28T15:15:30.155Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993 }, + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload_time = "2020-12-28T15:15:28.35Z" }, ] [[package]] name = "pure-eval" version = "0.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752 } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload_time = "2024-07-21T12:58:21.801Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842 }, + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload_time = "2024-07-21T12:58:20.04Z" }, ] [[package]] name = "pyarrow" version = "20.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067 }, - { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128 }, - { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890 }, - { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775 }, - { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231 }, - { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639 }, - { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549 }, - { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216 }, - { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496 }, - { url = "https://files.pythonhosted.org/packages/9b/aa/daa413b81446d20d4dad2944110dcf4cf4f4179ef7f685dd5a6d7570dc8e/pyarrow-20.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a15532e77b94c61efadde86d10957950392999503b3616b2ffcef7621a002893", size = 30798501 }, - { url = "https://files.pythonhosted.org/packages/ff/75/2303d1caa410925de902d32ac215dc80a7ce7dd8dfe95358c165f2adf107/pyarrow-20.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:dd43f58037443af715f34f1322c782ec463a3c8a94a85fdb2d987ceb5658e061", size = 32277895 }, - { url = "https://files.pythonhosted.org/packages/92/41/fe18c7c0b38b20811b73d1bdd54b1fccba0dab0e51d2048878042d84afa8/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa0d288143a8585806e3cc7c39566407aab646fb9ece164609dac1cfff45f6ae", size = 41327322 }, - { url = "https://files.pythonhosted.org/packages/da/ab/7dbf3d11db67c72dbf36ae63dcbc9f30b866c153b3a22ef728523943eee6/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6953f0114f8d6f3d905d98e987d0924dabce59c3cda380bdfaa25a6201563b4", size = 42411441 }, - { url = "https://files.pythonhosted.org/packages/90/c3/0c7da7b6dac863af75b64e2f827e4742161128c350bfe7955b426484e226/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:991f85b48a8a5e839b2128590ce07611fae48a904cae6cab1f089c5955b57eb5", size = 40677027 }, - { url = "https://files.pythonhosted.org/packages/be/27/43a47fa0ff9053ab5203bb3faeec435d43c0d8bfa40179bfd076cdbd4e1c/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:97c8dc984ed09cb07d618d57d8d4b67a5100a30c3818c2fb0b04599f0da2de7b", size = 42281473 }, - { url = "https://files.pythonhosted.org/packages/bc/0b/d56c63b078876da81bbb9ba695a596eabee9b085555ed12bf6eb3b7cab0e/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9b71daf534f4745818f96c214dbc1e6124d7daf059167330b610fc69b6f3d3e3", size = 42893897 }, - { url = "https://files.pythonhosted.org/packages/92/ac/7d4bd020ba9145f354012838692d48300c1b8fe5634bfda886abcada67ed/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e8b88758f9303fa5a83d6c90e176714b2fd3852e776fc2d7e42a22dd6c2fb368", size = 44543847 }, - { url = "https://files.pythonhosted.org/packages/9d/07/290f4abf9ca702c5df7b47739c1b2c83588641ddfa2cc75e34a301d42e55/pyarrow-20.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:30b3051b7975801c1e1d387e17c588d8ab05ced9b1e14eec57915f79869b5031", size = 25653219 }, - { url = "https://files.pythonhosted.org/packages/95/df/720bb17704b10bd69dde086e1400b8eefb8f58df3f8ac9cff6c425bf57f1/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:ca151afa4f9b7bc45bcc791eb9a89e90a9eb2772767d0b1e5389609c7d03db63", size = 30853957 }, - { url = "https://files.pythonhosted.org/packages/d9/72/0d5f875efc31baef742ba55a00a25213a19ea64d7176e0fe001c5d8b6e9a/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:4680f01ecd86e0dd63e39eb5cd59ef9ff24a9d166db328679e36c108dc993d4c", size = 32247972 }, - { url = "https://files.pythonhosted.org/packages/d5/bc/e48b4fa544d2eea72f7844180eb77f83f2030b84c8dad860f199f94307ed/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f4c8534e2ff059765647aa69b75d6543f9fef59e2cd4c6d18015192565d2b70", size = 41256434 }, - { url = "https://files.pythonhosted.org/packages/c3/01/974043a29874aa2cf4f87fb07fd108828fc7362300265a2a64a94965e35b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e1f8a47f4b4ae4c69c4d702cfbdfe4d41e18e5c7ef6f1bb1c50918c1e81c57b", size = 42353648 }, - { url = "https://files.pythonhosted.org/packages/68/95/cc0d3634cde9ca69b0e51cbe830d8915ea32dda2157560dda27ff3b3337b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:a1f60dc14658efaa927f8214734f6a01a806d7690be4b3232ba526836d216122", size = 40619853 }, - { url = "https://files.pythonhosted.org/packages/29/c2/3ad40e07e96a3e74e7ed7cc8285aadfa84eb848a798c98ec0ad009eb6bcc/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:204a846dca751428991346976b914d6d2a82ae5b8316a6ed99789ebf976551e6", size = 42241743 }, - { url = "https://files.pythonhosted.org/packages/eb/cb/65fa110b483339add6a9bc7b6373614166b14e20375d4daa73483755f830/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f3b117b922af5e4c6b9a9115825726cac7d8b1421c37c2b5e24fbacc8930612c", size = 42839441 }, - { url = "https://files.pythonhosted.org/packages/98/7b/f30b1954589243207d7a0fbc9997401044bf9a033eec78f6cb50da3f304a/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e724a3fd23ae5b9c010e7be857f4405ed5e679db5c93e66204db1a69f733936a", size = 44503279 }, - { url = "https://files.pythonhosted.org/packages/37/40/ad395740cd641869a13bcf60851296c89624662575621968dcfafabaa7f6/pyarrow-20.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:82f1ee5133bd8f49d31be1299dc07f585136679666b502540db854968576faf9", size = 25944982 }, +sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187, upload_time = "2025-04-27T12:34:23.264Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067, upload_time = "2025-04-27T12:29:44.384Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128, upload_time = "2025-04-27T12:29:52.038Z" }, + { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890, upload_time = "2025-04-27T12:29:59.452Z" }, + { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775, upload_time = "2025-04-27T12:30:06.875Z" }, + { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231, upload_time = "2025-04-27T12:30:13.954Z" }, + { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639, upload_time = "2025-04-27T12:30:21.949Z" }, + { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549, upload_time = "2025-04-27T12:30:29.551Z" }, + { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216, upload_time = "2025-04-27T12:30:36.977Z" }, + { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496, upload_time = "2025-04-27T12:30:42.809Z" }, + { url = "https://files.pythonhosted.org/packages/9b/aa/daa413b81446d20d4dad2944110dcf4cf4f4179ef7f685dd5a6d7570dc8e/pyarrow-20.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a15532e77b94c61efadde86d10957950392999503b3616b2ffcef7621a002893", size = 30798501, upload_time = "2025-04-27T12:30:48.351Z" }, + { url = "https://files.pythonhosted.org/packages/ff/75/2303d1caa410925de902d32ac215dc80a7ce7dd8dfe95358c165f2adf107/pyarrow-20.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:dd43f58037443af715f34f1322c782ec463a3c8a94a85fdb2d987ceb5658e061", size = 32277895, upload_time = "2025-04-27T12:30:55.238Z" }, + { url = "https://files.pythonhosted.org/packages/92/41/fe18c7c0b38b20811b73d1bdd54b1fccba0dab0e51d2048878042d84afa8/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa0d288143a8585806e3cc7c39566407aab646fb9ece164609dac1cfff45f6ae", size = 41327322, upload_time = "2025-04-27T12:31:05.587Z" }, + { url = "https://files.pythonhosted.org/packages/da/ab/7dbf3d11db67c72dbf36ae63dcbc9f30b866c153b3a22ef728523943eee6/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6953f0114f8d6f3d905d98e987d0924dabce59c3cda380bdfaa25a6201563b4", size = 42411441, upload_time = "2025-04-27T12:31:15.675Z" }, + { url = "https://files.pythonhosted.org/packages/90/c3/0c7da7b6dac863af75b64e2f827e4742161128c350bfe7955b426484e226/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:991f85b48a8a5e839b2128590ce07611fae48a904cae6cab1f089c5955b57eb5", size = 40677027, upload_time = "2025-04-27T12:31:24.631Z" }, + { url = "https://files.pythonhosted.org/packages/be/27/43a47fa0ff9053ab5203bb3faeec435d43c0d8bfa40179bfd076cdbd4e1c/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:97c8dc984ed09cb07d618d57d8d4b67a5100a30c3818c2fb0b04599f0da2de7b", size = 42281473, upload_time = "2025-04-27T12:31:31.311Z" }, + { url = "https://files.pythonhosted.org/packages/bc/0b/d56c63b078876da81bbb9ba695a596eabee9b085555ed12bf6eb3b7cab0e/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9b71daf534f4745818f96c214dbc1e6124d7daf059167330b610fc69b6f3d3e3", size = 42893897, upload_time = "2025-04-27T12:31:39.406Z" }, + { url = "https://files.pythonhosted.org/packages/92/ac/7d4bd020ba9145f354012838692d48300c1b8fe5634bfda886abcada67ed/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e8b88758f9303fa5a83d6c90e176714b2fd3852e776fc2d7e42a22dd6c2fb368", size = 44543847, upload_time = "2025-04-27T12:31:45.997Z" }, + { url = "https://files.pythonhosted.org/packages/9d/07/290f4abf9ca702c5df7b47739c1b2c83588641ddfa2cc75e34a301d42e55/pyarrow-20.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:30b3051b7975801c1e1d387e17c588d8ab05ced9b1e14eec57915f79869b5031", size = 25653219, upload_time = "2025-04-27T12:31:54.11Z" }, + { url = "https://files.pythonhosted.org/packages/95/df/720bb17704b10bd69dde086e1400b8eefb8f58df3f8ac9cff6c425bf57f1/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:ca151afa4f9b7bc45bcc791eb9a89e90a9eb2772767d0b1e5389609c7d03db63", size = 30853957, upload_time = "2025-04-27T12:31:59.215Z" }, + { url = "https://files.pythonhosted.org/packages/d9/72/0d5f875efc31baef742ba55a00a25213a19ea64d7176e0fe001c5d8b6e9a/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:4680f01ecd86e0dd63e39eb5cd59ef9ff24a9d166db328679e36c108dc993d4c", size = 32247972, upload_time = "2025-04-27T12:32:05.369Z" }, + { url = "https://files.pythonhosted.org/packages/d5/bc/e48b4fa544d2eea72f7844180eb77f83f2030b84c8dad860f199f94307ed/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f4c8534e2ff059765647aa69b75d6543f9fef59e2cd4c6d18015192565d2b70", size = 41256434, upload_time = "2025-04-27T12:32:11.814Z" }, + { url = "https://files.pythonhosted.org/packages/c3/01/974043a29874aa2cf4f87fb07fd108828fc7362300265a2a64a94965e35b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e1f8a47f4b4ae4c69c4d702cfbdfe4d41e18e5c7ef6f1bb1c50918c1e81c57b", size = 42353648, upload_time = "2025-04-27T12:32:20.766Z" }, + { url = "https://files.pythonhosted.org/packages/68/95/cc0d3634cde9ca69b0e51cbe830d8915ea32dda2157560dda27ff3b3337b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:a1f60dc14658efaa927f8214734f6a01a806d7690be4b3232ba526836d216122", size = 40619853, upload_time = "2025-04-27T12:32:28.1Z" }, + { url = "https://files.pythonhosted.org/packages/29/c2/3ad40e07e96a3e74e7ed7cc8285aadfa84eb848a798c98ec0ad009eb6bcc/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:204a846dca751428991346976b914d6d2a82ae5b8316a6ed99789ebf976551e6", size = 42241743, upload_time = "2025-04-27T12:32:35.792Z" }, + { url = "https://files.pythonhosted.org/packages/eb/cb/65fa110b483339add6a9bc7b6373614166b14e20375d4daa73483755f830/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f3b117b922af5e4c6b9a9115825726cac7d8b1421c37c2b5e24fbacc8930612c", size = 42839441, upload_time = "2025-04-27T12:32:46.64Z" }, + { url = "https://files.pythonhosted.org/packages/98/7b/f30b1954589243207d7a0fbc9997401044bf9a033eec78f6cb50da3f304a/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e724a3fd23ae5b9c010e7be857f4405ed5e679db5c93e66204db1a69f733936a", size = 44503279, upload_time = "2025-04-27T12:32:56.503Z" }, + { url = "https://files.pythonhosted.org/packages/37/40/ad395740cd641869a13bcf60851296c89624662575621968dcfafabaa7f6/pyarrow-20.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:82f1ee5133bd8f49d31be1299dc07f585136679666b502540db854968576faf9", size = 25944982, upload_time = "2025-04-27T12:33:04.72Z" }, ] [[package]] name = "pycparser" version = "2.22" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736 } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload_time = "2024-03-30T13:22:22.564Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload_time = "2024-03-30T13:22:20.476Z" }, ] [[package]] @@ -1478,9 +1974,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350 } +sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload_time = "2025-06-14T08:33:17.137Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782 }, + { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload_time = "2025-06-14T08:33:14.905Z" }, ] [[package]] @@ -1490,39 +1986,39 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, - { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688 }, - { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808 }, - { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580 }, - { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859 }, - { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810 }, - { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498 }, - { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611 }, - { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924 }, - { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196 }, - { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389 }, - { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223 }, - { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473 }, - { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269 }, - { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921 }, - { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162 }, - { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560 }, - { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777 }, +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload_time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload_time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload_time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload_time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload_time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload_time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload_time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload_time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload_time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload_time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload_time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload_time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload_time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload_time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload_time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload_time = "2025-04-23T18:31:53.175Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload_time = "2025-04-23T18:31:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload_time = "2025-04-23T18:31:57.393Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload_time = "2025-04-23T18:31:59.065Z" }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload_time = "2025-04-23T18:32:00.78Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload_time = "2025-04-23T18:32:02.418Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload_time = "2025-04-23T18:32:04.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload_time = "2025-04-23T18:32:06.129Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload_time = "2025-04-23T18:32:08.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload_time = "2025-04-23T18:32:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload_time = "2025-04-23T18:32:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload_time = "2025-04-23T18:32:14.034Z" }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload_time = "2025-04-23T18:32:15.783Z" }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload_time = "2025-04-23T18:32:18.473Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload_time = "2025-04-23T18:32:20.188Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload_time = "2025-04-23T18:32:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload_time = "2025-04-23T18:32:25.088Z" }, ] [[package]] @@ -1538,18 +2034,57 @@ dependencies = [ { name = "requests" }, { name = "wbgapi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/72/3e56d8166ca4b366a4e37c85711a706bba66768f70ba690bdb279f728d8d/pydeflate-2.1.3.tar.gz", hash = "sha256:48a2b74ad900dd8c50dfb1e4cdfcea8ca11cbd2d3a713bf9208f2028fea4cf4f", size = 26586 } +sdist = { url = "https://files.pythonhosted.org/packages/5e/72/3e56d8166ca4b366a4e37c85711a706bba66768f70ba690bdb279f728d8d/pydeflate-2.1.3.tar.gz", hash = "sha256:48a2b74ad900dd8c50dfb1e4cdfcea8ca11cbd2d3a713bf9208f2028fea4cf4f", size = 26586, upload_time = "2025-06-03T09:38:12.25Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/31/e703ab5bc311c58e4dc00759d7a48a850877b8bbcd64c9778e2315e06bd5/pydeflate-2.1.3-py3-none-any.whl", hash = "sha256:09ebdde04eb2fea1c4b6712889cb2a9d4c2dd22ce0204aaeae64f4335667354f", size = 32540 }, + { url = "https://files.pythonhosted.org/packages/31/31/e703ab5bc311c58e4dc00759d7a48a850877b8bbcd64c9778e2315e06bd5/pydeflate-2.1.3-py3-none-any.whl", hash = "sha256:09ebdde04eb2fea1c4b6712889cb2a9d4c2dd22ce0204aaeae64f4335667354f", size = 32540, upload_time = "2025-06-03T09:38:10.858Z" }, +] + +[[package]] +name = "pygithub" +version = "2.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyjwt", extra = ["crypto"] }, + { name = "pynacl" }, + { name = "requests" }, + { name = "typing-extensions" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6a/a7/403e04aa96e2d94e1518d518d69718c2ba978c8d3ffa4ab3b101b94dbafa/pygithub-2.7.0.tar.gz", hash = "sha256:7cd6eafabb09b5369afba3586d86b1f1ad6f1326d2ff01bc47bb26615dce4cbb", size = 3707928, upload_time = "2025-07-31T11:52:53.714Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/57/76/d768dd31322173b3956692b75471ac37bf3759c7abb603152f6a9b6594a8/pygithub-2.7.0-py3-none-any.whl", hash = "sha256:40ecbfe26dc55cc34ab4b0ffa1d455e6f816ef9a2bc8d6f5ad18ce572f163700", size = 416514, upload_time = "2025-07-31T11:52:51.909Z" }, ] [[package]] name = "pygments" version = "2.19.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631 } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload_time = "2025-06-21T13:39:12.283Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217 }, + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload_time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pygtrie" +version = "2.5.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/13/55deec25bf09383216fa7f1dfcdbfca40a04aa00b6d15a5cbf25af8fce5f/pygtrie-2.5.0.tar.gz", hash = "sha256:203514ad826eb403dab1d2e2ddd034e0d1534bbe4dbe0213bb0593f66beba4e2", size = 39266, upload_time = "2022-07-16T14:29:47.459Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/cd/bd196b2cf014afb1009de8b0f05ecd54011d881944e62763f3c1b1e8ef37/pygtrie-2.5.0-py3-none-any.whl", hash = "sha256:8795cda8105493d5ae159a5bef313ff13156c5d4d72feddefacaad59f8c8ce16", size = 25099, upload_time = "2022-09-23T20:30:05.12Z" }, +] + +[[package]] +name = "pyjwt" +version = "2.10.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785, upload_time = "2024-11-28T03:43:29.933Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997, upload_time = "2024-11-28T03:43:27.893Z" }, +] + +[package.optional-dependencies] +crypto = [ + { name = "cryptography" }, ] [[package]] @@ -1560,9 +2095,49 @@ dependencies = [ { name = "markdown" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1a/0a/c06b542ac108bfc73200677309cd9188a3a01b127a63f20cadc18d873d88/pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de", size = 853197 } +sdist = { url = "https://files.pythonhosted.org/packages/1a/0a/c06b542ac108bfc73200677309cd9188a3a01b127a63f20cadc18d873d88/pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de", size = 853197, upload_time = "2025-06-21T17:56:36.974Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/d4/10bb14004d3c792811e05e21b5e5dcae805aacb739bd12a0540967b99592/pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2", size = 266143 }, + { url = "https://files.pythonhosted.org/packages/98/d4/10bb14004d3c792811e05e21b5e5dcae805aacb739bd12a0540967b99592/pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2", size = 266143, upload_time = "2025-06-21T17:56:35.356Z" }, +] + +[[package]] +name = "pynacl" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba", size = 3392854, upload_time = "2022-01-07T22:05:41.134Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1", size = 349920, upload_time = "2022-01-07T22:05:49.156Z" }, + { url = "https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92", size = 601722, upload_time = "2022-01-07T22:05:50.989Z" }, + { url = "https://files.pythonhosted.org/packages/5d/70/87a065c37cca41a75f2ce113a5a2c2aa7533be648b184ade58971b5f7ccc/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394", size = 680087, upload_time = "2022-01-07T22:05:52.539Z" }, + { url = "https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d", size = 856678, upload_time = "2022-01-07T22:05:54.251Z" }, + { url = "https://files.pythonhosted.org/packages/66/28/ca86676b69bf9f90e710571b67450508484388bfce09acf8a46f0b8c785f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858", size = 1133660, upload_time = "2022-01-07T22:05:56.056Z" }, + { url = "https://files.pythonhosted.org/packages/3d/85/c262db650e86812585e2bc59e497a8f59948a005325a11bbbc9ecd3fe26b/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b", size = 663824, upload_time = "2022-01-07T22:05:57.434Z" }, + { url = "https://files.pythonhosted.org/packages/fd/1a/cc308a884bd299b651f1633acb978e8596c71c33ca85e9dc9fa33a5399b9/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff", size = 1117912, upload_time = "2022-01-07T22:05:58.665Z" }, + { url = "https://files.pythonhosted.org/packages/25/2d/b7df6ddb0c2a33afdb358f8af6ea3b8c4d1196ca45497dd37a56f0c122be/PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543", size = 204624, upload_time = "2022-01-07T22:06:00.085Z" }, + { url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93", size = 212141, upload_time = "2022-01-07T22:06:01.861Z" }, +] + +[[package]] +name = "pyomo" +version = "6.9.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ply" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/91/d4/bbb4ab79bb3015e3bdd488435ef71f7806144cc6ae4146ee6c5f64ac53f2/pyomo-6.9.4.tar.gz", hash = "sha256:34ad22cd6bf9956de9c0d3842d01c1f92dee0515b25aa3e8f113b326549b1231", size = 3033231, upload_time = "2025-08-28T02:11:24.976Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/6b/80f40b4b72a3c6a207130ce431765f897c76133a15e7e38e66f9f40d36f3/pyomo-6.9.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cc3cd52c143991071821bbb9943d2a59512481b5d15adb7add32f92def4172ce", size = 4266926, upload_time = "2025-08-28T02:09:44.833Z" }, + { url = "https://files.pythonhosted.org/packages/48/30/f7ef1be3deb445694b63800de6a36dff31670014d5aa67d42e1716c04970/pyomo-6.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3a5e1dc79e1a2ec1f6247f0df59ac3572781e40218093a624f9213dd3ae6913f", size = 4255513, upload_time = "2025-08-28T02:09:49.197Z" }, + { url = "https://files.pythonhosted.org/packages/76/f4/9493daae82595d7d776ba6cd0d5d167951700670e363dec443415e753808/pyomo-6.9.4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:abea6ca55295b179c1c91184db4eece7589cfd6099869eff8e3e6aa8a06463d1", size = 4311852, upload_time = "2025-08-28T02:09:53.415Z" }, + { url = "https://files.pythonhosted.org/packages/83/d7/e39e605ab33c2729afb043bed94ce7ee382bd5b4bc708f6c90a1d2600456/pyomo-6.9.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddd48dec34b270ca2621863a216c4f3a6fcc409db86a7dc34c31eb788a44b8c6", size = 4343130, upload_time = "2025-08-28T02:09:57.397Z" }, + { url = "https://files.pythonhosted.org/packages/65/04/dc4d3d9369c4cb1b6e68ce18bbba066ea83284942322836e791dbf693bb2/pyomo-6.9.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1a768a178ae3f0391c66e2334da3d1618c9c85c9d879bc86de441efd143f491", size = 4267029, upload_time = "2025-08-28T02:10:02.066Z" }, + { url = "https://files.pythonhosted.org/packages/6b/52/824e9cea51ed0a25636b66e8c122dce5fcd22a197bf4646dd6c5f138fe36/pyomo-6.9.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:09cde10e5fe8414f453d1ed3bccef1b42fc048fc2da0a9c936e40b2f877201bf", size = 4255606, upload_time = "2025-08-28T02:10:06.383Z" }, + { url = "https://files.pythonhosted.org/packages/a2/dc/97005d683ca57e231a8f613921adaf480d3a82f40d280c6d0185855a92c6/pyomo-6.9.4-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df3e173d330666f881258deefa79f37373b941d4a5b00edc6aa5b10680720dc1", size = 4312670, upload_time = "2025-08-28T02:10:11.563Z" }, + { url = "https://files.pythonhosted.org/packages/64/73/47525078660eced084abb9a79e1e4c74098c992316c93ab6ead2dc7f8bda/pyomo-6.9.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a13baebcdb05deadeb0ec4b04ecedffa65f1e86179418fa67e603a4f8f1bf17", size = 4344540, upload_time = "2025-08-28T02:10:15.731Z" }, + { url = "https://files.pythonhosted.org/packages/d8/e3/56c20c3358e58206e7270a42ff666a267a6c01492213c8c47aad8676b487/pyomo-6.9.4-py3-none-any.whl", hash = "sha256:a274d74616c0b793279931f3b2175a31f9c63213f2d7b86c14d168c6c264f782", size = 3892640, upload_time = "2025-08-28T02:11:13.845Z" }, ] [[package]] @@ -1572,9 +2147,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "unidecode" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d6/7c/7c45a9e9bf6ddb57b67e66cf4e8076a7baf3a790a3411daac1a7a2df0c5b/pyphonetics-0.5.3.tar.gz", hash = "sha256:2d3c2e359fde91a3c57914f0b5468bba7a5daf38e7927fd999992ea68990fbe4", size = 10314 } +sdist = { url = "https://files.pythonhosted.org/packages/d6/7c/7c45a9e9bf6ddb57b67e66cf4e8076a7baf3a790a3411daac1a7a2df0c5b/pyphonetics-0.5.3.tar.gz", hash = "sha256:2d3c2e359fde91a3c57914f0b5468bba7a5daf38e7927fd999992ea68990fbe4", size = 10314, upload_time = "2020-02-25T12:08:31.049Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/dd/a7d0a860efd3d4335d538b4361b8e9af8311f2aba2e8c7e4c7a47d623b6e/pyphonetics-0.5.3-py2.py3-none-any.whl", hash = "sha256:e6b29671d0d624dda1cac59c0c5a8a7216d8db504bae4941bfc482e04a0621d1", size = 10729 }, + { url = "https://files.pythonhosted.org/packages/bd/dd/a7d0a860efd3d4335d538b4361b8e9af8311f2aba2e8c7e4c7a47d623b6e/pyphonetics-0.5.3-py2.py3-none-any.whl", hash = "sha256:e6b29671d0d624dda1cac59c0c5a8a7216d8db504bae4941bfc482e04a0621d1", size = 10729, upload_time = "2020-02-25T12:08:25.368Z" }, ] [[package]] @@ -1588,9 +2163,9 @@ dependencies = [ { name = "pluggy" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714 } +sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload_time = "2025-06-18T05:48:06.109Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474 }, + { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload_time = "2025-06-18T05:48:03.955Z" }, ] [[package]] @@ -1602,9 +2177,9 @@ dependencies = [ { name = "pluggy" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/18/99/668cade231f434aaa59bbfbf49469068d2ddd945000621d3d165d2e7dd7b/pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2", size = 69432 } +sdist = { url = "https://files.pythonhosted.org/packages/18/99/668cade231f434aaa59bbfbf49469068d2ddd945000621d3d165d2e7dd7b/pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2", size = 69432, upload_time = "2025-06-12T10:47:47.684Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/16/4ea354101abb1287856baa4af2732be351c7bee728065aed451b678153fd/pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5", size = 24644 }, + { url = "https://files.pythonhosted.org/packages/bc/16/4ea354101abb1287856baa4af2732be351c7bee728065aed451b678153fd/pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5", size = 24644, upload_time = "2025-06-12T10:47:45.932Z" }, ] [[package]] @@ -1615,9 +2190,46 @@ dependencies = [ { name = "execnet" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/78/b4/439b179d1ff526791eb921115fca8e44e596a13efeda518b9d845a619450/pytest_xdist-3.8.0.tar.gz", hash = "sha256:7e578125ec9bc6050861aa93f2d59f1d8d085595d6551c2c90b6f4fad8d3a9f1", size = 88069 } +sdist = { url = "https://files.pythonhosted.org/packages/78/b4/439b179d1ff526791eb921115fca8e44e596a13efeda518b9d845a619450/pytest_xdist-3.8.0.tar.gz", hash = "sha256:7e578125ec9bc6050861aa93f2d59f1d8d085595d6551c2c90b6f4fad8d3a9f1", size = 88069, upload_time = "2025-07-01T13:30:59.346Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ca/31/d4e37e9e550c2b92a9cbc2e4d0b7420a27224968580b5a447f420847c975/pytest_xdist-3.8.0-py3-none-any.whl", hash = "sha256:202ca578cfeb7370784a8c33d6d05bc6e13b4f25b5053c30a152269fd10f0b88", size = 46396 }, + { url = "https://files.pythonhosted.org/packages/ca/31/d4e37e9e550c2b92a9cbc2e4d0b7420a27224968580b5a447f420847c975/pytest_xdist-3.8.0-py3-none-any.whl", hash = "sha256:202ca578cfeb7370784a8c33d6d05bc6e13b4f25b5053c30a152269fd10f0b88", size = 46396, upload_time = "2025-07-01T13:30:56.632Z" }, +] + +[[package]] +name = "python-calamine" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cc/03/269f96535705b2f18c8977fa58e76763b4e4727a9b3ae277a9468c8ffe05/python_calamine-0.4.0.tar.gz", hash = "sha256:94afcbae3fec36d2d7475095a59d4dc6fae45829968c743cb799ebae269d7bbf", size = 127737, upload_time = "2025-07-04T06:05:28.626Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/60/f951513aaaa470b3a38a87d65eca45e0a02bc329b47864f5a17db563f746/python_calamine-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:74bca5d44a73acf3dcfa5370820797fcfd225c8c71abcddea987c5b4f5077e98", size = 826603, upload_time = "2025-07-04T06:03:51.245Z" }, + { url = "https://files.pythonhosted.org/packages/76/3f/789955bbc77831c639890758f945eb2b25d6358065edf00da6751226cf31/python_calamine-0.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cf80178f5d1b0ee2ccfffb8549c50855f6249e930664adc5807f4d0d6c2b269c", size = 805826, upload_time = "2025-07-04T06:03:52.482Z" }, + { url = "https://files.pythonhosted.org/packages/00/4c/f87d17d996f647030a40bfd124fe45fe893c002bee35ae6aca9910a923ae/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65cfef345386ae86f7720f1be93495a40fd7e7feabb8caa1df5025d7fbc58a1f", size = 874989, upload_time = "2025-07-04T06:03:53.794Z" }, + { url = "https://files.pythonhosted.org/packages/47/d2/3269367303f6c0488cf1bfebded3f9fe968d118a988222e04c9b2636bf2e/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f23e6214dbf9b29065a5dcfd6a6c674dd0e251407298c9138611c907d53423ff", size = 877504, upload_time = "2025-07-04T06:03:55.095Z" }, + { url = "https://files.pythonhosted.org/packages/f9/6d/c7ac35f5c7125e8bd07eb36773f300fda20dd2da635eae78a8cebb0b6ab7/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d792d304ee232ab01598e1d3ab22e074a32c2511476b5fb4f16f4222d9c2a265", size = 1014171, upload_time = "2025-07-04T06:03:56.777Z" }, + { url = "https://files.pythonhosted.org/packages/f0/81/5ea8792a2e9ab5e2a05872db3a4d3ed3538ad5af1861282c789e2f13a8cf/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf813425918fd68f3e991ef7c4b5015be0a1a95fc4a8ab7e73c016ef1b881bb4", size = 926737, upload_time = "2025-07-04T06:03:58.024Z" }, + { url = "https://files.pythonhosted.org/packages/cc/6e/989e56e6f073fc0981a74ba7a393881eb351bb143e5486aa629b5e5d6a8b/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbe2a0ccb4d003635888eea83a995ff56b0748c8c76fc71923544f5a4a7d4cd7", size = 887032, upload_time = "2025-07-04T06:03:59.298Z" }, + { url = "https://files.pythonhosted.org/packages/5d/92/2c9bd64277c6fe4be695d7d5a803b38d953ec8565037486be7506642c27c/python_calamine-0.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a7b3bb5f0d910b9b03c240987560f843256626fd443279759df4e91b717826d2", size = 929700, upload_time = "2025-07-04T06:04:01.388Z" }, + { url = "https://files.pythonhosted.org/packages/64/fa/fc758ca37701d354a6bc7d63118699f1c73788a1f2e1b44d720824992764/python_calamine-0.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bd2c0fc2b5eabd08ceac8a2935bffa88dbc6116db971aa8c3f244bad3fd0f644", size = 1053971, upload_time = "2025-07-04T06:04:02.704Z" }, + { url = "https://files.pythonhosted.org/packages/65/52/40d7e08ae0ddba331cdc9f7fb3e92972f8f38d7afbd00228158ff6d1fceb/python_calamine-0.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:85b547cb1c5b692a0c2406678d666dbc1cec65a714046104683fe4f504a1721d", size = 1057057, upload_time = "2025-07-04T06:04:04.014Z" }, + { url = "https://files.pythonhosted.org/packages/16/de/e8a071c0adfda73285d891898a24f6e99338328c404f497ff5b0e6bc3d45/python_calamine-0.4.0-cp312-cp312-win32.whl", hash = "sha256:4c2a1e3a0db4d6de4587999a21cc35845648c84fba81c03dd6f3072c690888e4", size = 665540, upload_time = "2025-07-04T06:04:05.679Z" }, + { url = "https://files.pythonhosted.org/packages/5e/f2/7fdfada13f80db12356853cf08697ff4e38800a1809c2bdd26ee60962e7a/python_calamine-0.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b193c89ffcc146019475cd121c552b23348411e19c04dedf5c766a20db64399a", size = 695366, upload_time = "2025-07-04T06:04:06.977Z" }, + { url = "https://files.pythonhosted.org/packages/20/66/d37412ad854480ce32f50d9f74f2a2f88b1b8a6fbc32f70aabf3211ae89e/python_calamine-0.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:43a0f15e0b60c75a71b21a012b911d5d6f5fa052afad2a8edbc728af43af0fcf", size = 670740, upload_time = "2025-07-04T06:04:08.656Z" }, + { url = "https://files.pythonhosted.org/packages/5a/10/f78218ccdc5bb5591a37d582c7e8723121d0fbe8196c5a4089110ec02f22/python_calamine-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f8d6b2d2ae73acf91343f02756bdcb2fa6117db4eaf5cfab75ce50dfb54525ee", size = 826339, upload_time = "2025-07-04T06:04:10.254Z" }, + { url = "https://files.pythonhosted.org/packages/15/b1/d7d0dbbd0469db0fc628b1b9ee3a8f3b698391279f0d7aea96e2018a3863/python_calamine-0.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:aca7e019f42ca16806fef53e3028fa158005c0e68eabda577c3f3c2bea9735fd", size = 805473, upload_time = "2025-07-04T06:04:11.557Z" }, + { url = "https://files.pythonhosted.org/packages/46/52/033b902fb11f9b4bb59fa18621acbf5eaf4ecb0bce878d34fcb0020229df/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aca67cb447ba8dcefa4d5a1131d1cfdd1e0d0a0f0c6470655ce9ad37b7cfa228", size = 874275, upload_time = "2025-07-04T06:04:13.318Z" }, + { url = "https://files.pythonhosted.org/packages/56/12/e6b589293314a5d10b2c309411542424ebefb77430cc715d7601d80349ae/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e127d3b78d511d4f6fbdfed02fe666d83a722d73e27dd64d1718be9efafbabfe", size = 877061, upload_time = "2025-07-04T06:04:15.013Z" }, + { url = "https://files.pythonhosted.org/packages/64/24/0eeb583eb5d44f674ca9f7a846c665e33190431386d7c9f6d08ec9f09d3c/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e47891d9d62e3015448749ddb2ba60ab583a651d0fca9a3a1794936942ad7d5d", size = 1013946, upload_time = "2025-07-04T06:04:16.647Z" }, + { url = "https://files.pythonhosted.org/packages/c4/93/360cf58b8e24f760a3d4643423389dbc37bdca8b6fdda75ffc664ce622b5/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4072bf9dcb8ec49f5b92688bd960b5d0e03e4826d227bbd66478a6f6b0aea06", size = 926462, upload_time = "2025-07-04T06:04:17.936Z" }, + { url = "https://files.pythonhosted.org/packages/5a/5d/3b8c46ccc62d020858bc52f2d792208910eb68682c6ebf8d6706593d7a88/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eabc9dc770f753c4227aacedd8390056937e67af0bf65d6696c584d3054f1287", size = 886319, upload_time = "2025-07-04T06:04:19.33Z" }, + { url = "https://files.pythonhosted.org/packages/66/cf/73241714800bddb277f827c4683f579b81915406bf7dc643dc185cef7eb2/python_calamine-0.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6a4bcf36dc77674892616b66cffba432f5fd62df3e0adb0487ec245036b50041", size = 929044, upload_time = "2025-07-04T06:04:20.689Z" }, + { url = "https://files.pythonhosted.org/packages/7c/6b/71e30ee568ce1ea6676be66f1a42c6397946859effc471cc102922fb4792/python_calamine-0.4.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:f81518d4b49c47054cb1861badf5bcef44b0a49959968fb2e9c9cb89645c76af", size = 1053084, upload_time = "2025-07-04T06:04:22.414Z" }, + { url = "https://files.pythonhosted.org/packages/75/19/87b42fe975f8952754562785a545f6d2eec17c353befdf33a8e16c046ce0/python_calamine-0.4.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:18375eb3ac1362fcbf3a9fcad0672d8dc054001247bc52f063e0054a3e01a8d1", size = 1056735, upload_time = "2025-07-04T06:04:23.903Z" }, + { url = "https://files.pythonhosted.org/packages/04/db/ecee6e5d6ed4f3725312580a83c4cb1758c9060aa08bf2d8512d3396cea1/python_calamine-0.4.0-cp313-cp313-win32.whl", hash = "sha256:c7e98c7e531bafdf719414d0c428f25f933a82640fb92e6e84864a85e758aecc", size = 665282, upload_time = "2025-07-04T06:04:25.274Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0b/26337e0a0e2b335c1d6225bda8de259a21fea129a06009c1471deda28e1f/python_calamine-0.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:6ec081b874e78f4dbcbe70804644281366814289956755575a5871f725592d4e", size = 694982, upload_time = "2025-07-04T06:04:26.573Z" }, + { url = "https://files.pythonhosted.org/packages/90/26/f72c2b2fe70f2901abb41fcdf8249181133ddd72b9392cfb63d030393b3e/python_calamine-0.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:3f9bdf570023138ee4090a51b1e34786978d6e649852ccc3b83ac9729f125ca2", size = 670283, upload_time = "2025-07-04T06:04:28.434Z" }, ] [[package]] @@ -1627,9 +2239,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload_time = "2024-03-01T18:36:20.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload_time = "2024-03-01T18:36:18.57Z" }, ] [[package]] @@ -1639,16 +2251,16 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "charset-normalizer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/4b/3c4cf635311b6203f17c2d693dc15e898969983dd3f729bee3c428aa60d4/python-debian-1.0.1.tar.gz", hash = "sha256:3ada9b83a3d671b58081782c0969cffa0102f6ce433fbbc7cf21275b8b5cc771", size = 127249 } +sdist = { url = "https://files.pythonhosted.org/packages/bf/4b/3c4cf635311b6203f17c2d693dc15e898969983dd3f729bee3c428aa60d4/python-debian-1.0.1.tar.gz", hash = "sha256:3ada9b83a3d671b58081782c0969cffa0102f6ce433fbbc7cf21275b8b5cc771", size = 127249, upload_time = "2025-03-11T12:27:27.245Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/15/e8096189b18dda72e4923622abc10b021ecff723b397e22eff29fb86637b/python_debian-1.0.1-py3-none-any.whl", hash = "sha256:8f137c230c1d9279c2ac892b35915068b2aca090c9fd3da5671ff87af32af12c", size = 137453 }, + { url = "https://files.pythonhosted.org/packages/ba/15/e8096189b18dda72e4923622abc10b021ecff723b397e22eff29fb86637b/python_debian-1.0.1-py3-none-any.whl", hash = "sha256:8f137c230c1d9279c2ac892b35915068b2aca090c9fd3da5671ff87af32af12c", size = 137453, upload_time = "2025-03-11T12:27:25.014Z" }, ] [[package]] name = "python-io-wrapper" version = "0.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/74/8dc5f7d0b7cc1a0ca9e5c320abf11adee2094998c93ae8c9c80d9a8323ff/python-io-wrapper-0.3.1.tar.gz", hash = "sha256:e3391787ff0d9870e739294c6392437915502153e695a017450aa46b6d091762", size = 3271 } +sdist = { url = "https://files.pythonhosted.org/packages/d7/74/8dc5f7d0b7cc1a0ca9e5c320abf11adee2094998c93ae8c9c80d9a8323ff/python-io-wrapper-0.3.1.tar.gz", hash = "sha256:e3391787ff0d9870e739294c6392437915502153e695a017450aa46b6d091762", size = 3271, upload_time = "2022-11-14T15:00:10.932Z" } [[package]] name = "python-slugify" @@ -1657,18 +2269,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "text-unidecode" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921 } +sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921, upload_time = "2024-02-08T18:32:45.488Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051 }, + { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051, upload_time = "2024-02-08T18:32:43.911Z" }, ] [[package]] name = "pytz" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload_time = "2025-03-25T02:25:00.538Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload_time = "2025-03-25T02:24:58.468Z" }, ] [[package]] @@ -1676,38 +2288,38 @@ name = "pywin32" version = "310" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, - { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, - { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, - { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384 }, - { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039 }, - { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152 }, + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload_time = "2025-03-17T00:55:58.807Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload_time = "2025-03-17T00:56:00.8Z" }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload_time = "2025-03-17T00:56:02.601Z" }, + { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384, upload_time = "2025-03-17T00:56:04.383Z" }, + { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039, upload_time = "2025-03-17T00:56:06.207Z" }, + { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152, upload_time = "2025-03-17T00:56:07.819Z" }, ] [[package]] name = "pyyaml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, - { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, - { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, - { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, - { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, - { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, - { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, - { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, - { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, - { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload_time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload_time = "2024-08-06T20:32:25.131Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload_time = "2024-08-06T20:32:26.511Z" }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload_time = "2024-08-06T20:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload_time = "2024-08-06T20:32:30.058Z" }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload_time = "2024-08-06T20:32:31.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload_time = "2024-08-06T20:32:37.083Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload_time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload_time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload_time = "2024-08-06T20:32:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload_time = "2024-08-06T20:32:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload_time = "2024-08-06T20:32:44.801Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload_time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload_time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload_time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload_time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload_time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload_time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload_time = "2024-08-06T20:33:04.33Z" }, ] [[package]] @@ -1717,9 +2329,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737, upload_time = "2025-05-13T15:24:01.64Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722 }, + { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722, upload_time = "2025-05-13T15:23:59.629Z" }, ] [[package]] @@ -1729,34 +2341,34 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "implementation_name == 'pypy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f1/06/50a4e9648b3e8b992bef8eb632e457307553a89d294103213cfd47b3da69/pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf", size = 280478 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/93/a7/9ad68f55b8834ede477842214feba6a4c786d936c022a67625497aacf61d/pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52", size = 1305438 }, - { url = "https://files.pythonhosted.org/packages/ba/ee/26aa0f98665a22bc90ebe12dced1de5f3eaca05363b717f6fb229b3421b3/pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3", size = 895095 }, - { url = "https://files.pythonhosted.org/packages/cf/85/c57e7ab216ecd8aa4cc7e3b83b06cc4e9cf45c87b0afc095f10cd5ce87c1/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152", size = 651826 }, - { url = "https://files.pythonhosted.org/packages/69/9a/9ea7e230feda9400fb0ae0d61d7d6ddda635e718d941c44eeab22a179d34/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22", size = 839750 }, - { url = "https://files.pythonhosted.org/packages/08/66/4cebfbe71f3dfbd417011daca267539f62ed0fbc68105357b68bbb1a25b7/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371", size = 1641357 }, - { url = "https://files.pythonhosted.org/packages/ac/f6/b0f62578c08d2471c791287149cb8c2aaea414ae98c6e995c7dbe008adfb/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d", size = 2020281 }, - { url = "https://files.pythonhosted.org/packages/37/b9/4f670b15c7498495da9159edc374ec09c88a86d9cd5a47d892f69df23450/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be", size = 1877110 }, - { url = "https://files.pythonhosted.org/packages/66/31/9dee25c226295b740609f0d46db2fe972b23b6f5cf786360980524a3ba92/pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4", size = 559297 }, - { url = "https://files.pythonhosted.org/packages/9b/12/52da5509800f7ff2d287b2f2b4e636e7ea0f001181cba6964ff6c1537778/pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371", size = 619203 }, - { url = "https://files.pythonhosted.org/packages/93/6d/7f2e53b19d1edb1eb4f09ec7c3a1f945ca0aac272099eab757d15699202b/pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e", size = 551927 }, - { url = "https://files.pythonhosted.org/packages/19/62/876b27c4ff777db4ceba1c69ea90d3c825bb4f8d5e7cd987ce5802e33c55/pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688", size = 1340826 }, - { url = "https://files.pythonhosted.org/packages/43/69/58ef8f4f59d3bcd505260c73bee87b008850f45edca40ddaba54273c35f4/pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38", size = 897283 }, - { url = "https://files.pythonhosted.org/packages/43/15/93a0d0396700a60475ad3c5d42c5f1c308d3570bc94626b86c71ef9953e0/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a", size = 660567 }, - { url = "https://files.pythonhosted.org/packages/0e/b3/fe055513e498ca32f64509abae19b9c9eb4d7c829e02bd8997dd51b029eb/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9", size = 847681 }, - { url = "https://files.pythonhosted.org/packages/b6/4f/ff15300b00b5b602191f3df06bbc8dd4164e805fdd65bb77ffbb9c5facdc/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d", size = 1650148 }, - { url = "https://files.pythonhosted.org/packages/c4/6f/84bdfff2a224a6f26a24249a342e5906993c50b0761e311e81b39aef52a7/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44", size = 2023768 }, - { url = "https://files.pythonhosted.org/packages/64/39/dc2db178c26a42228c5ac94a9cc595030458aa64c8d796a7727947afbf55/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef", size = 1885199 }, - { url = "https://files.pythonhosted.org/packages/c7/21/dae7b06a1f8cdee5d8e7a63d99c5d129c401acc40410bef2cbf42025e26f/pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad", size = 575439 }, - { url = "https://files.pythonhosted.org/packages/eb/bc/1709dc55f0970cf4cb8259e435e6773f9946f41a045c2cb90e870b7072da/pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f", size = 639933 }, +sdist = { url = "https://files.pythonhosted.org/packages/f1/06/50a4e9648b3e8b992bef8eb632e457307553a89d294103213cfd47b3da69/pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf", size = 280478, upload_time = "2025-06-13T14:09:07.087Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/a7/9ad68f55b8834ede477842214feba6a4c786d936c022a67625497aacf61d/pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52", size = 1305438, upload_time = "2025-06-13T14:07:31.676Z" }, + { url = "https://files.pythonhosted.org/packages/ba/ee/26aa0f98665a22bc90ebe12dced1de5f3eaca05363b717f6fb229b3421b3/pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3", size = 895095, upload_time = "2025-06-13T14:07:33.104Z" }, + { url = "https://files.pythonhosted.org/packages/cf/85/c57e7ab216ecd8aa4cc7e3b83b06cc4e9cf45c87b0afc095f10cd5ce87c1/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152", size = 651826, upload_time = "2025-06-13T14:07:34.831Z" }, + { url = "https://files.pythonhosted.org/packages/69/9a/9ea7e230feda9400fb0ae0d61d7d6ddda635e718d941c44eeab22a179d34/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22", size = 839750, upload_time = "2025-06-13T14:07:36.553Z" }, + { url = "https://files.pythonhosted.org/packages/08/66/4cebfbe71f3dfbd417011daca267539f62ed0fbc68105357b68bbb1a25b7/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371", size = 1641357, upload_time = "2025-06-13T14:07:38.21Z" }, + { url = "https://files.pythonhosted.org/packages/ac/f6/b0f62578c08d2471c791287149cb8c2aaea414ae98c6e995c7dbe008adfb/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d", size = 2020281, upload_time = "2025-06-13T14:07:39.599Z" }, + { url = "https://files.pythonhosted.org/packages/37/b9/4f670b15c7498495da9159edc374ec09c88a86d9cd5a47d892f69df23450/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be", size = 1877110, upload_time = "2025-06-13T14:07:41.027Z" }, + { url = "https://files.pythonhosted.org/packages/66/31/9dee25c226295b740609f0d46db2fe972b23b6f5cf786360980524a3ba92/pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4", size = 559297, upload_time = "2025-06-13T14:07:42.533Z" }, + { url = "https://files.pythonhosted.org/packages/9b/12/52da5509800f7ff2d287b2f2b4e636e7ea0f001181cba6964ff6c1537778/pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371", size = 619203, upload_time = "2025-06-13T14:07:43.843Z" }, + { url = "https://files.pythonhosted.org/packages/93/6d/7f2e53b19d1edb1eb4f09ec7c3a1f945ca0aac272099eab757d15699202b/pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e", size = 551927, upload_time = "2025-06-13T14:07:45.51Z" }, + { url = "https://files.pythonhosted.org/packages/19/62/876b27c4ff777db4ceba1c69ea90d3c825bb4f8d5e7cd987ce5802e33c55/pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688", size = 1340826, upload_time = "2025-06-13T14:07:46.881Z" }, + { url = "https://files.pythonhosted.org/packages/43/69/58ef8f4f59d3bcd505260c73bee87b008850f45edca40ddaba54273c35f4/pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38", size = 897283, upload_time = "2025-06-13T14:07:49.562Z" }, + { url = "https://files.pythonhosted.org/packages/43/15/93a0d0396700a60475ad3c5d42c5f1c308d3570bc94626b86c71ef9953e0/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a", size = 660567, upload_time = "2025-06-13T14:07:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/0e/b3/fe055513e498ca32f64509abae19b9c9eb4d7c829e02bd8997dd51b029eb/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9", size = 847681, upload_time = "2025-06-13T14:07:52.77Z" }, + { url = "https://files.pythonhosted.org/packages/b6/4f/ff15300b00b5b602191f3df06bbc8dd4164e805fdd65bb77ffbb9c5facdc/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d", size = 1650148, upload_time = "2025-06-13T14:07:54.178Z" }, + { url = "https://files.pythonhosted.org/packages/c4/6f/84bdfff2a224a6f26a24249a342e5906993c50b0761e311e81b39aef52a7/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44", size = 2023768, upload_time = "2025-06-13T14:07:55.714Z" }, + { url = "https://files.pythonhosted.org/packages/64/39/dc2db178c26a42228c5ac94a9cc595030458aa64c8d796a7727947afbf55/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef", size = 1885199, upload_time = "2025-06-13T14:07:57.166Z" }, + { url = "https://files.pythonhosted.org/packages/c7/21/dae7b06a1f8cdee5d8e7a63d99c5d129c401acc40410bef2cbf42025e26f/pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad", size = 575439, upload_time = "2025-06-13T14:07:58.959Z" }, + { url = "https://files.pythonhosted.org/packages/eb/bc/1709dc55f0970cf4cb8259e435e6773f9946f41a045c2cb90e870b7072da/pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f", size = 639933, upload_time = "2025-06-13T14:08:00.777Z" }, ] [[package]] name = "ratelimit" version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ab/38/ff60c8fc9e002d50d48822cc5095deb8ebbc5f91a6b8fdd9731c87a147c9/ratelimit-2.2.1.tar.gz", hash = "sha256:af8a9b64b821529aca09ebaf6d8d279100d766f19e90b5059ac6a718ca6dee42", size = 5251 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/38/ff60c8fc9e002d50d48822cc5095deb8ebbc5f91a6b8fdd9731c87a147c9/ratelimit-2.2.1.tar.gz", hash = "sha256:af8a9b64b821529aca09ebaf6d8d279100d766f19e90b5059ac6a718ca6dee42", size = 5251, upload_time = "2018-12-17T18:55:49.675Z" } [[package]] name = "referencing" @@ -1767,9 +2379,9 @@ dependencies = [ { name = "rpds-py" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload_time = "2025-01-25T08:48:16.138Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 }, + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload_time = "2025-01-25T08:48:14.241Z" }, ] [[package]] @@ -1782,9 +2394,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258 } +sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload_time = "2025-06-09T16:43:07.34Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847 }, + { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload_time = "2025-06-09T16:43:05.728Z" }, ] [[package]] @@ -1794,9 +2406,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/97/bf44e6c6bd8ddbb99943baf7ba8b1a8485bcd2fe0e55e5708d7fee4ff1ae/requests_file-2.1.0.tar.gz", hash = "sha256:0f549a3f3b0699415ac04d167e9cb39bccfb730cb832b4d20be3d9867356e658", size = 6891 } +sdist = { url = "https://files.pythonhosted.org/packages/72/97/bf44e6c6bd8ddbb99943baf7ba8b1a8485bcd2fe0e55e5708d7fee4ff1ae/requests_file-2.1.0.tar.gz", hash = "sha256:0f549a3f3b0699415ac04d167e9cb39bccfb730cb832b4d20be3d9867356e658", size = 6891, upload_time = "2024-05-21T16:28:00.24Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/25/dd878a121fcfdf38f52850f11c512e13ec87c2ea72385933818e5b6c15ce/requests_file-2.1.0-py2.py3-none-any.whl", hash = "sha256:cf270de5a4c5874e84599fc5778303d496c10ae5e870bfa378818f35d21bda5c", size = 4244 }, + { url = "https://files.pythonhosted.org/packages/d7/25/dd878a121fcfdf38f52850f11c512e13ec87c2ea72385933818e5b6c15ce/requests_file-2.1.0-py2.py3-none-any.whl", hash = "sha256:cf270de5a4c5874e84599fc5778303d496c10ae5e870bfa378818f35d21bda5c", size = 4244, upload_time = "2024-05-21T16:27:57.733Z" }, ] [[package]] @@ -1813,107 +2425,107 @@ dependencies = [ { name = "python-debian" }, { name = "tomlkit" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/43/35421efe0e69823787b331362e11cc16bb697cd6f19cbed284d421615f14/reuse-5.0.2.tar.gz", hash = "sha256:878016ae5dd29c10bad4606d6676c12a268c12aa9fcfea66403598e16eed085c", size = 358798 } +sdist = { url = "https://files.pythonhosted.org/packages/08/43/35421efe0e69823787b331362e11cc16bb697cd6f19cbed284d421615f14/reuse-5.0.2.tar.gz", hash = "sha256:878016ae5dd29c10bad4606d6676c12a268c12aa9fcfea66403598e16eed085c", size = 358798, upload_time = "2024-11-14T09:33:17.512Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0a/2f/73de654df9e7e5f67d742c1d949b5c0c7c1203e84b2272d9e34a91faaf5c/reuse-5.0.2-cp313-cp313-manylinux_2_40_x86_64.whl", hash = "sha256:7a680f00324e87a72061677a892d8cbabfddf7adcf7a5376aeeed2d78995bbbb", size = 184309 }, + { url = "https://files.pythonhosted.org/packages/0a/2f/73de654df9e7e5f67d742c1d949b5c0c7c1203e84b2272d9e34a91faaf5c/reuse-5.0.2-cp313-cp313-manylinux_2_40_x86_64.whl", hash = "sha256:7a680f00324e87a72061677a892d8cbabfddf7adcf7a5376aeeed2d78995bbbb", size = 184309, upload_time = "2024-11-14T09:33:15.047Z" }, ] [[package]] name = "rfc3986" version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026 } +sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026, upload_time = "2022-01-10T00:52:30.832Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326 }, + { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326, upload_time = "2022-01-10T00:52:29.594Z" }, ] [[package]] name = "rich" -version = "14.0.0" +version = "13.9.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a1/53/830aa4c3066a8ab0ae9a9955976fb770fe9c6102117c8ec4ab3ea62d89e8/rich-14.0.0.tar.gz", hash = "sha256:82f1bc23a6a21ebca4ae0c45af9bdbc492ed20231dcb63f297d6d1021a9d5725", size = 224078 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149, upload_time = "2024-11-01T16:43:57.873Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/9b/63f4c7ebc259242c89b3acafdb37b41d1185c07ff0011164674e9076b491/rich-14.0.0-py3-none-any.whl", hash = "sha256:1c9491e1951aac09caffd42f448ee3d04e58923ffe14993f6e83068dc395d7e0", size = 243229 }, + { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424, upload_time = "2024-11-01T16:43:55.817Z" }, ] [[package]] name = "rpds-py" version = "0.26.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/aa/4456d84bbb54adc6a916fb10c9b374f78ac840337644e4a5eda229c81275/rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0", size = 27385 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ea/86/90eb87c6f87085868bd077c7a9938006eb1ce19ed4d06944a90d3560fce2/rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d", size = 363933 }, - { url = "https://files.pythonhosted.org/packages/63/78/4469f24d34636242c924626082b9586f064ada0b5dbb1e9d096ee7a8e0c6/rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136", size = 350447 }, - { url = "https://files.pythonhosted.org/packages/ad/91/c448ed45efdfdade82348d5e7995e15612754826ea640afc20915119734f/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582", size = 384711 }, - { url = "https://files.pythonhosted.org/packages/ec/43/e5c86fef4be7f49828bdd4ecc8931f0287b1152c0bb0163049b3218740e7/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e", size = 400865 }, - { url = "https://files.pythonhosted.org/packages/55/34/e00f726a4d44f22d5c5fe2e5ddd3ac3d7fd3f74a175607781fbdd06fe375/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15", size = 517763 }, - { url = "https://files.pythonhosted.org/packages/52/1c/52dc20c31b147af724b16104500fba13e60123ea0334beba7b40e33354b4/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8", size = 406651 }, - { url = "https://files.pythonhosted.org/packages/2e/77/87d7bfabfc4e821caa35481a2ff6ae0b73e6a391bb6b343db2c91c2b9844/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a", size = 386079 }, - { url = "https://files.pythonhosted.org/packages/e3/d4/7f2200c2d3ee145b65b3cddc4310d51f7da6a26634f3ac87125fd789152a/rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323", size = 421379 }, - { url = "https://files.pythonhosted.org/packages/ae/13/9fdd428b9c820869924ab62236b8688b122baa22d23efdd1c566938a39ba/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158", size = 562033 }, - { url = "https://files.pythonhosted.org/packages/f3/e1/b69686c3bcbe775abac3a4c1c30a164a2076d28df7926041f6c0eb5e8d28/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3", size = 591639 }, - { url = "https://files.pythonhosted.org/packages/5c/c9/1e3d8c8863c84a90197ac577bbc3d796a92502124c27092413426f670990/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2", size = 557105 }, - { url = "https://files.pythonhosted.org/packages/9f/c5/90c569649057622959f6dcc40f7b516539608a414dfd54b8d77e3b201ac0/rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44", size = 223272 }, - { url = "https://files.pythonhosted.org/packages/7d/16/19f5d9f2a556cfed454eebe4d354c38d51c20f3db69e7b4ce6cff904905d/rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c", size = 234995 }, - { url = "https://files.pythonhosted.org/packages/83/f0/7935e40b529c0e752dfaa7880224771b51175fce08b41ab4a92eb2fbdc7f/rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8", size = 223198 }, - { url = "https://files.pythonhosted.org/packages/6a/67/bb62d0109493b12b1c6ab00de7a5566aa84c0e44217c2d94bee1bd370da9/rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d", size = 363917 }, - { url = "https://files.pythonhosted.org/packages/4b/f3/34e6ae1925a5706c0f002a8d2d7f172373b855768149796af87bd65dcdb9/rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1", size = 350073 }, - { url = "https://files.pythonhosted.org/packages/75/83/1953a9d4f4e4de7fd0533733e041c28135f3c21485faaef56a8aadbd96b5/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e", size = 384214 }, - { url = "https://files.pythonhosted.org/packages/48/0e/983ed1b792b3322ea1d065e67f4b230f3b96025f5ce3878cc40af09b7533/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1", size = 400113 }, - { url = "https://files.pythonhosted.org/packages/69/7f/36c0925fff6f660a80be259c5b4f5e53a16851f946eb080351d057698528/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9", size = 515189 }, - { url = "https://files.pythonhosted.org/packages/13/45/cbf07fc03ba7a9b54662c9badb58294ecfb24f828b9732970bd1a431ed5c/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7", size = 406998 }, - { url = "https://files.pythonhosted.org/packages/6c/b0/8fa5e36e58657997873fd6a1cf621285ca822ca75b4b3434ead047daa307/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04", size = 385903 }, - { url = "https://files.pythonhosted.org/packages/4b/f7/b25437772f9f57d7a9fbd73ed86d0dcd76b4c7c6998348c070d90f23e315/rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1", size = 419785 }, - { url = "https://files.pythonhosted.org/packages/a7/6b/63ffa55743dfcb4baf2e9e77a0b11f7f97ed96a54558fcb5717a4b2cd732/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9", size = 561329 }, - { url = "https://files.pythonhosted.org/packages/2f/07/1f4f5e2886c480a2346b1e6759c00278b8a69e697ae952d82ae2e6ee5db0/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9", size = 590875 }, - { url = "https://files.pythonhosted.org/packages/cc/bc/e6639f1b91c3a55f8c41b47d73e6307051b6e246254a827ede730624c0f8/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba", size = 556636 }, - { url = "https://files.pythonhosted.org/packages/05/4c/b3917c45566f9f9a209d38d9b54a1833f2bb1032a3e04c66f75726f28876/rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b", size = 222663 }, - { url = "https://files.pythonhosted.org/packages/e0/0b/0851bdd6025775aaa2365bb8de0697ee2558184c800bfef8d7aef5ccde58/rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5", size = 234428 }, - { url = "https://files.pythonhosted.org/packages/ed/e8/a47c64ed53149c75fb581e14a237b7b7cd18217e969c30d474d335105622/rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256", size = 222571 }, - { url = "https://files.pythonhosted.org/packages/89/bf/3d970ba2e2bcd17d2912cb42874107390f72873e38e79267224110de5e61/rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618", size = 360475 }, - { url = "https://files.pythonhosted.org/packages/82/9f/283e7e2979fc4ec2d8ecee506d5a3675fce5ed9b4b7cb387ea5d37c2f18d/rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35", size = 346692 }, - { url = "https://files.pythonhosted.org/packages/e3/03/7e50423c04d78daf391da3cc4330bdb97042fc192a58b186f2d5deb7befd/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f", size = 379415 }, - { url = "https://files.pythonhosted.org/packages/57/00/d11ee60d4d3b16808432417951c63df803afb0e0fc672b5e8d07e9edaaae/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83", size = 391783 }, - { url = "https://files.pythonhosted.org/packages/08/b3/1069c394d9c0d6d23c5b522e1f6546b65793a22950f6e0210adcc6f97c3e/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1", size = 512844 }, - { url = "https://files.pythonhosted.org/packages/08/3b/c4fbf0926800ed70b2c245ceca99c49f066456755f5d6eb8863c2c51e6d0/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8", size = 402105 }, - { url = "https://files.pythonhosted.org/packages/1c/b0/db69b52ca07413e568dae9dc674627a22297abb144c4d6022c6d78f1e5cc/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f", size = 383440 }, - { url = "https://files.pythonhosted.org/packages/4c/e1/c65255ad5b63903e56b3bb3ff9dcc3f4f5c3badde5d08c741ee03903e951/rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed", size = 412759 }, - { url = "https://files.pythonhosted.org/packages/e4/22/bb731077872377a93c6e93b8a9487d0406c70208985831034ccdeed39c8e/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632", size = 556032 }, - { url = "https://files.pythonhosted.org/packages/e0/8b/393322ce7bac5c4530fb96fc79cc9ea2f83e968ff5f6e873f905c493e1c4/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c", size = 585416 }, - { url = "https://files.pythonhosted.org/packages/49/ae/769dc372211835bf759319a7aae70525c6eb523e3371842c65b7ef41c9c6/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0", size = 554049 }, - { url = "https://files.pythonhosted.org/packages/6b/f9/4c43f9cc203d6ba44ce3146246cdc38619d92c7bd7bad4946a3491bd5b70/rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9", size = 218428 }, - { url = "https://files.pythonhosted.org/packages/7e/8b/9286b7e822036a4a977f2f1e851c7345c20528dbd56b687bb67ed68a8ede/rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9", size = 231524 }, - { url = "https://files.pythonhosted.org/packages/55/07/029b7c45db910c74e182de626dfdae0ad489a949d84a468465cd0ca36355/rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a", size = 364292 }, - { url = "https://files.pythonhosted.org/packages/13/d1/9b3d3f986216b4d1f584878dca15ce4797aaf5d372d738974ba737bf68d6/rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf", size = 350334 }, - { url = "https://files.pythonhosted.org/packages/18/98/16d5e7bc9ec715fa9668731d0cf97f6b032724e61696e2db3d47aeb89214/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12", size = 384875 }, - { url = "https://files.pythonhosted.org/packages/f9/13/aa5e2b1ec5ab0e86a5c464d53514c0467bec6ba2507027d35fc81818358e/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20", size = 399993 }, - { url = "https://files.pythonhosted.org/packages/17/03/8021810b0e97923abdbab6474c8b77c69bcb4b2c58330777df9ff69dc559/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331", size = 516683 }, - { url = "https://files.pythonhosted.org/packages/dc/b1/da8e61c87c2f3d836954239fdbbfb477bb7b54d74974d8f6fcb34342d166/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f", size = 408825 }, - { url = "https://files.pythonhosted.org/packages/38/bc/1fc173edaaa0e52c94b02a655db20697cb5fa954ad5a8e15a2c784c5cbdd/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246", size = 387292 }, - { url = "https://files.pythonhosted.org/packages/7c/eb/3a9bb4bd90867d21916f253caf4f0d0be7098671b6715ad1cead9fe7bab9/rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387", size = 420435 }, - { url = "https://files.pythonhosted.org/packages/cd/16/e066dcdb56f5632713445271a3f8d3d0b426d51ae9c0cca387799df58b02/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af", size = 562410 }, - { url = "https://files.pythonhosted.org/packages/60/22/ddbdec7eb82a0dc2e455be44c97c71c232983e21349836ce9f272e8a3c29/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33", size = 590724 }, - { url = "https://files.pythonhosted.org/packages/2c/b4/95744085e65b7187d83f2fcb0bef70716a1ea0a9e5d8f7f39a86e5d83424/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953", size = 558285 }, - { url = "https://files.pythonhosted.org/packages/37/37/6309a75e464d1da2559446f9c811aa4d16343cebe3dbb73701e63f760caa/rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9", size = 223459 }, - { url = "https://files.pythonhosted.org/packages/d9/6f/8e9c11214c46098b1d1391b7e02b70bb689ab963db3b19540cba17315291/rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37", size = 236083 }, - { url = "https://files.pythonhosted.org/packages/47/af/9c4638994dd623d51c39892edd9d08e8be8220a4b7e874fa02c2d6e91955/rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867", size = 223291 }, - { url = "https://files.pythonhosted.org/packages/4d/db/669a241144460474aab03e254326b32c42def83eb23458a10d163cb9b5ce/rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da", size = 361445 }, - { url = "https://files.pythonhosted.org/packages/3b/2d/133f61cc5807c6c2fd086a46df0eb8f63a23f5df8306ff9f6d0fd168fecc/rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7", size = 347206 }, - { url = "https://files.pythonhosted.org/packages/05/bf/0e8fb4c05f70273469eecf82f6ccf37248558526a45321644826555db31b/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad", size = 380330 }, - { url = "https://files.pythonhosted.org/packages/d4/a8/060d24185d8b24d3923322f8d0ede16df4ade226a74e747b8c7c978e3dd3/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d", size = 392254 }, - { url = "https://files.pythonhosted.org/packages/b9/7b/7c2e8a9ee3e6bc0bae26bf29f5219955ca2fbb761dca996a83f5d2f773fe/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca", size = 516094 }, - { url = "https://files.pythonhosted.org/packages/75/d6/f61cafbed8ba1499b9af9f1777a2a199cd888f74a96133d8833ce5eaa9c5/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19", size = 402889 }, - { url = "https://files.pythonhosted.org/packages/92/19/c8ac0a8a8df2dd30cdec27f69298a5c13e9029500d6d76718130f5e5be10/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8", size = 384301 }, - { url = "https://files.pythonhosted.org/packages/41/e1/6b1859898bc292a9ce5776016c7312b672da00e25cec74d7beced1027286/rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b", size = 412891 }, - { url = "https://files.pythonhosted.org/packages/ef/b9/ceb39af29913c07966a61367b3c08b4f71fad841e32c6b59a129d5974698/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a", size = 557044 }, - { url = "https://files.pythonhosted.org/packages/2f/27/35637b98380731a521f8ec4f3fd94e477964f04f6b2f8f7af8a2d889a4af/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170", size = 585774 }, - { url = "https://files.pythonhosted.org/packages/52/d9/3f0f105420fecd18551b678c9a6ce60bd23986098b252a56d35781b3e7e9/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e", size = 554886 }, - { url = "https://files.pythonhosted.org/packages/6b/c5/347c056a90dc8dd9bc240a08c527315008e1b5042e7a4cf4ac027be9d38a/rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f", size = 219027 }, - { url = "https://files.pythonhosted.org/packages/75/04/5302cea1aa26d886d34cadbf2dc77d90d7737e576c0065f357b96dc7a1a6/rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7", size = 232821 }, +sdist = { url = "https://files.pythonhosted.org/packages/a5/aa/4456d84bbb54adc6a916fb10c9b374f78ac840337644e4a5eda229c81275/rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0", size = 27385, upload_time = "2025-07-01T15:57:13.958Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/86/90eb87c6f87085868bd077c7a9938006eb1ce19ed4d06944a90d3560fce2/rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d", size = 363933, upload_time = "2025-07-01T15:54:15.734Z" }, + { url = "https://files.pythonhosted.org/packages/63/78/4469f24d34636242c924626082b9586f064ada0b5dbb1e9d096ee7a8e0c6/rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136", size = 350447, upload_time = "2025-07-01T15:54:16.922Z" }, + { url = "https://files.pythonhosted.org/packages/ad/91/c448ed45efdfdade82348d5e7995e15612754826ea640afc20915119734f/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582", size = 384711, upload_time = "2025-07-01T15:54:18.101Z" }, + { url = "https://files.pythonhosted.org/packages/ec/43/e5c86fef4be7f49828bdd4ecc8931f0287b1152c0bb0163049b3218740e7/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e", size = 400865, upload_time = "2025-07-01T15:54:19.295Z" }, + { url = "https://files.pythonhosted.org/packages/55/34/e00f726a4d44f22d5c5fe2e5ddd3ac3d7fd3f74a175607781fbdd06fe375/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15", size = 517763, upload_time = "2025-07-01T15:54:20.858Z" }, + { url = "https://files.pythonhosted.org/packages/52/1c/52dc20c31b147af724b16104500fba13e60123ea0334beba7b40e33354b4/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8", size = 406651, upload_time = "2025-07-01T15:54:22.508Z" }, + { url = "https://files.pythonhosted.org/packages/2e/77/87d7bfabfc4e821caa35481a2ff6ae0b73e6a391bb6b343db2c91c2b9844/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a", size = 386079, upload_time = "2025-07-01T15:54:23.987Z" }, + { url = "https://files.pythonhosted.org/packages/e3/d4/7f2200c2d3ee145b65b3cddc4310d51f7da6a26634f3ac87125fd789152a/rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323", size = 421379, upload_time = "2025-07-01T15:54:25.073Z" }, + { url = "https://files.pythonhosted.org/packages/ae/13/9fdd428b9c820869924ab62236b8688b122baa22d23efdd1c566938a39ba/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158", size = 562033, upload_time = "2025-07-01T15:54:26.225Z" }, + { url = "https://files.pythonhosted.org/packages/f3/e1/b69686c3bcbe775abac3a4c1c30a164a2076d28df7926041f6c0eb5e8d28/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3", size = 591639, upload_time = "2025-07-01T15:54:27.424Z" }, + { url = "https://files.pythonhosted.org/packages/5c/c9/1e3d8c8863c84a90197ac577bbc3d796a92502124c27092413426f670990/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2", size = 557105, upload_time = "2025-07-01T15:54:29.93Z" }, + { url = "https://files.pythonhosted.org/packages/9f/c5/90c569649057622959f6dcc40f7b516539608a414dfd54b8d77e3b201ac0/rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44", size = 223272, upload_time = "2025-07-01T15:54:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/7d/16/19f5d9f2a556cfed454eebe4d354c38d51c20f3db69e7b4ce6cff904905d/rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c", size = 234995, upload_time = "2025-07-01T15:54:32.195Z" }, + { url = "https://files.pythonhosted.org/packages/83/f0/7935e40b529c0e752dfaa7880224771b51175fce08b41ab4a92eb2fbdc7f/rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8", size = 223198, upload_time = "2025-07-01T15:54:33.271Z" }, + { url = "https://files.pythonhosted.org/packages/6a/67/bb62d0109493b12b1c6ab00de7a5566aa84c0e44217c2d94bee1bd370da9/rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d", size = 363917, upload_time = "2025-07-01T15:54:34.755Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f3/34e6ae1925a5706c0f002a8d2d7f172373b855768149796af87bd65dcdb9/rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1", size = 350073, upload_time = "2025-07-01T15:54:36.292Z" }, + { url = "https://files.pythonhosted.org/packages/75/83/1953a9d4f4e4de7fd0533733e041c28135f3c21485faaef56a8aadbd96b5/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e", size = 384214, upload_time = "2025-07-01T15:54:37.469Z" }, + { url = "https://files.pythonhosted.org/packages/48/0e/983ed1b792b3322ea1d065e67f4b230f3b96025f5ce3878cc40af09b7533/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1", size = 400113, upload_time = "2025-07-01T15:54:38.954Z" }, + { url = "https://files.pythonhosted.org/packages/69/7f/36c0925fff6f660a80be259c5b4f5e53a16851f946eb080351d057698528/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9", size = 515189, upload_time = "2025-07-01T15:54:40.57Z" }, + { url = "https://files.pythonhosted.org/packages/13/45/cbf07fc03ba7a9b54662c9badb58294ecfb24f828b9732970bd1a431ed5c/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7", size = 406998, upload_time = "2025-07-01T15:54:43.025Z" }, + { url = "https://files.pythonhosted.org/packages/6c/b0/8fa5e36e58657997873fd6a1cf621285ca822ca75b4b3434ead047daa307/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04", size = 385903, upload_time = "2025-07-01T15:54:44.752Z" }, + { url = "https://files.pythonhosted.org/packages/4b/f7/b25437772f9f57d7a9fbd73ed86d0dcd76b4c7c6998348c070d90f23e315/rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1", size = 419785, upload_time = "2025-07-01T15:54:46.043Z" }, + { url = "https://files.pythonhosted.org/packages/a7/6b/63ffa55743dfcb4baf2e9e77a0b11f7f97ed96a54558fcb5717a4b2cd732/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9", size = 561329, upload_time = "2025-07-01T15:54:47.64Z" }, + { url = "https://files.pythonhosted.org/packages/2f/07/1f4f5e2886c480a2346b1e6759c00278b8a69e697ae952d82ae2e6ee5db0/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9", size = 590875, upload_time = "2025-07-01T15:54:48.9Z" }, + { url = "https://files.pythonhosted.org/packages/cc/bc/e6639f1b91c3a55f8c41b47d73e6307051b6e246254a827ede730624c0f8/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba", size = 556636, upload_time = "2025-07-01T15:54:50.619Z" }, + { url = "https://files.pythonhosted.org/packages/05/4c/b3917c45566f9f9a209d38d9b54a1833f2bb1032a3e04c66f75726f28876/rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b", size = 222663, upload_time = "2025-07-01T15:54:52.023Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0b/0851bdd6025775aaa2365bb8de0697ee2558184c800bfef8d7aef5ccde58/rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5", size = 234428, upload_time = "2025-07-01T15:54:53.692Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e8/a47c64ed53149c75fb581e14a237b7b7cd18217e969c30d474d335105622/rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256", size = 222571, upload_time = "2025-07-01T15:54:54.822Z" }, + { url = "https://files.pythonhosted.org/packages/89/bf/3d970ba2e2bcd17d2912cb42874107390f72873e38e79267224110de5e61/rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618", size = 360475, upload_time = "2025-07-01T15:54:56.228Z" }, + { url = "https://files.pythonhosted.org/packages/82/9f/283e7e2979fc4ec2d8ecee506d5a3675fce5ed9b4b7cb387ea5d37c2f18d/rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35", size = 346692, upload_time = "2025-07-01T15:54:58.561Z" }, + { url = "https://files.pythonhosted.org/packages/e3/03/7e50423c04d78daf391da3cc4330bdb97042fc192a58b186f2d5deb7befd/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f", size = 379415, upload_time = "2025-07-01T15:54:59.751Z" }, + { url = "https://files.pythonhosted.org/packages/57/00/d11ee60d4d3b16808432417951c63df803afb0e0fc672b5e8d07e9edaaae/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83", size = 391783, upload_time = "2025-07-01T15:55:00.898Z" }, + { url = "https://files.pythonhosted.org/packages/08/b3/1069c394d9c0d6d23c5b522e1f6546b65793a22950f6e0210adcc6f97c3e/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1", size = 512844, upload_time = "2025-07-01T15:55:02.201Z" }, + { url = "https://files.pythonhosted.org/packages/08/3b/c4fbf0926800ed70b2c245ceca99c49f066456755f5d6eb8863c2c51e6d0/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8", size = 402105, upload_time = "2025-07-01T15:55:03.698Z" }, + { url = "https://files.pythonhosted.org/packages/1c/b0/db69b52ca07413e568dae9dc674627a22297abb144c4d6022c6d78f1e5cc/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f", size = 383440, upload_time = "2025-07-01T15:55:05.398Z" }, + { url = "https://files.pythonhosted.org/packages/4c/e1/c65255ad5b63903e56b3bb3ff9dcc3f4f5c3badde5d08c741ee03903e951/rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed", size = 412759, upload_time = "2025-07-01T15:55:08.316Z" }, + { url = "https://files.pythonhosted.org/packages/e4/22/bb731077872377a93c6e93b8a9487d0406c70208985831034ccdeed39c8e/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632", size = 556032, upload_time = "2025-07-01T15:55:09.52Z" }, + { url = "https://files.pythonhosted.org/packages/e0/8b/393322ce7bac5c4530fb96fc79cc9ea2f83e968ff5f6e873f905c493e1c4/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c", size = 585416, upload_time = "2025-07-01T15:55:11.216Z" }, + { url = "https://files.pythonhosted.org/packages/49/ae/769dc372211835bf759319a7aae70525c6eb523e3371842c65b7ef41c9c6/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0", size = 554049, upload_time = "2025-07-01T15:55:13.004Z" }, + { url = "https://files.pythonhosted.org/packages/6b/f9/4c43f9cc203d6ba44ce3146246cdc38619d92c7bd7bad4946a3491bd5b70/rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9", size = 218428, upload_time = "2025-07-01T15:55:14.486Z" }, + { url = "https://files.pythonhosted.org/packages/7e/8b/9286b7e822036a4a977f2f1e851c7345c20528dbd56b687bb67ed68a8ede/rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9", size = 231524, upload_time = "2025-07-01T15:55:15.745Z" }, + { url = "https://files.pythonhosted.org/packages/55/07/029b7c45db910c74e182de626dfdae0ad489a949d84a468465cd0ca36355/rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a", size = 364292, upload_time = "2025-07-01T15:55:17.001Z" }, + { url = "https://files.pythonhosted.org/packages/13/d1/9b3d3f986216b4d1f584878dca15ce4797aaf5d372d738974ba737bf68d6/rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf", size = 350334, upload_time = "2025-07-01T15:55:18.922Z" }, + { url = "https://files.pythonhosted.org/packages/18/98/16d5e7bc9ec715fa9668731d0cf97f6b032724e61696e2db3d47aeb89214/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12", size = 384875, upload_time = "2025-07-01T15:55:20.399Z" }, + { url = "https://files.pythonhosted.org/packages/f9/13/aa5e2b1ec5ab0e86a5c464d53514c0467bec6ba2507027d35fc81818358e/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20", size = 399993, upload_time = "2025-07-01T15:55:21.729Z" }, + { url = "https://files.pythonhosted.org/packages/17/03/8021810b0e97923abdbab6474c8b77c69bcb4b2c58330777df9ff69dc559/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331", size = 516683, upload_time = "2025-07-01T15:55:22.918Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b1/da8e61c87c2f3d836954239fdbbfb477bb7b54d74974d8f6fcb34342d166/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f", size = 408825, upload_time = "2025-07-01T15:55:24.207Z" }, + { url = "https://files.pythonhosted.org/packages/38/bc/1fc173edaaa0e52c94b02a655db20697cb5fa954ad5a8e15a2c784c5cbdd/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246", size = 387292, upload_time = "2025-07-01T15:55:25.554Z" }, + { url = "https://files.pythonhosted.org/packages/7c/eb/3a9bb4bd90867d21916f253caf4f0d0be7098671b6715ad1cead9fe7bab9/rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387", size = 420435, upload_time = "2025-07-01T15:55:27.798Z" }, + { url = "https://files.pythonhosted.org/packages/cd/16/e066dcdb56f5632713445271a3f8d3d0b426d51ae9c0cca387799df58b02/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af", size = 562410, upload_time = "2025-07-01T15:55:29.057Z" }, + { url = "https://files.pythonhosted.org/packages/60/22/ddbdec7eb82a0dc2e455be44c97c71c232983e21349836ce9f272e8a3c29/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33", size = 590724, upload_time = "2025-07-01T15:55:30.719Z" }, + { url = "https://files.pythonhosted.org/packages/2c/b4/95744085e65b7187d83f2fcb0bef70716a1ea0a9e5d8f7f39a86e5d83424/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953", size = 558285, upload_time = "2025-07-01T15:55:31.981Z" }, + { url = "https://files.pythonhosted.org/packages/37/37/6309a75e464d1da2559446f9c811aa4d16343cebe3dbb73701e63f760caa/rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9", size = 223459, upload_time = "2025-07-01T15:55:33.312Z" }, + { url = "https://files.pythonhosted.org/packages/d9/6f/8e9c11214c46098b1d1391b7e02b70bb689ab963db3b19540cba17315291/rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37", size = 236083, upload_time = "2025-07-01T15:55:34.933Z" }, + { url = "https://files.pythonhosted.org/packages/47/af/9c4638994dd623d51c39892edd9d08e8be8220a4b7e874fa02c2d6e91955/rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867", size = 223291, upload_time = "2025-07-01T15:55:36.202Z" }, + { url = "https://files.pythonhosted.org/packages/4d/db/669a241144460474aab03e254326b32c42def83eb23458a10d163cb9b5ce/rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da", size = 361445, upload_time = "2025-07-01T15:55:37.483Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2d/133f61cc5807c6c2fd086a46df0eb8f63a23f5df8306ff9f6d0fd168fecc/rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7", size = 347206, upload_time = "2025-07-01T15:55:38.828Z" }, + { url = "https://files.pythonhosted.org/packages/05/bf/0e8fb4c05f70273469eecf82f6ccf37248558526a45321644826555db31b/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad", size = 380330, upload_time = "2025-07-01T15:55:40.175Z" }, + { url = "https://files.pythonhosted.org/packages/d4/a8/060d24185d8b24d3923322f8d0ede16df4ade226a74e747b8c7c978e3dd3/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d", size = 392254, upload_time = "2025-07-01T15:55:42.015Z" }, + { url = "https://files.pythonhosted.org/packages/b9/7b/7c2e8a9ee3e6bc0bae26bf29f5219955ca2fbb761dca996a83f5d2f773fe/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca", size = 516094, upload_time = "2025-07-01T15:55:43.603Z" }, + { url = "https://files.pythonhosted.org/packages/75/d6/f61cafbed8ba1499b9af9f1777a2a199cd888f74a96133d8833ce5eaa9c5/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19", size = 402889, upload_time = "2025-07-01T15:55:45.275Z" }, + { url = "https://files.pythonhosted.org/packages/92/19/c8ac0a8a8df2dd30cdec27f69298a5c13e9029500d6d76718130f5e5be10/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8", size = 384301, upload_time = "2025-07-01T15:55:47.098Z" }, + { url = "https://files.pythonhosted.org/packages/41/e1/6b1859898bc292a9ce5776016c7312b672da00e25cec74d7beced1027286/rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b", size = 412891, upload_time = "2025-07-01T15:55:48.412Z" }, + { url = "https://files.pythonhosted.org/packages/ef/b9/ceb39af29913c07966a61367b3c08b4f71fad841e32c6b59a129d5974698/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a", size = 557044, upload_time = "2025-07-01T15:55:49.816Z" }, + { url = "https://files.pythonhosted.org/packages/2f/27/35637b98380731a521f8ec4f3fd94e477964f04f6b2f8f7af8a2d889a4af/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170", size = 585774, upload_time = "2025-07-01T15:55:51.192Z" }, + { url = "https://files.pythonhosted.org/packages/52/d9/3f0f105420fecd18551b678c9a6ce60bd23986098b252a56d35781b3e7e9/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e", size = 554886, upload_time = "2025-07-01T15:55:52.541Z" }, + { url = "https://files.pythonhosted.org/packages/6b/c5/347c056a90dc8dd9bc240a08c527315008e1b5042e7a4cf4ac027be9d38a/rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f", size = 219027, upload_time = "2025-07-01T15:55:53.874Z" }, + { url = "https://files.pythonhosted.org/packages/75/04/5302cea1aa26d886d34cadbf2dc77d90d7737e576c0065f357b96dc7a1a6/rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7", size = 232821, upload_time = "2025-07-01T15:55:55.167Z" }, ] [[package]] @@ -1923,35 +2535,35 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ruamel-yaml-clib", marker = "python_full_version < '3.14' and platform_python_implementation == 'CPython'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/87/6da0df742a4684263261c253f00edd5829e6aca970fff69e75028cccc547/ruamel.yaml-0.18.14.tar.gz", hash = "sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7", size = 145511 } +sdist = { url = "https://files.pythonhosted.org/packages/39/87/6da0df742a4684263261c253f00edd5829e6aca970fff69e75028cccc547/ruamel.yaml-0.18.14.tar.gz", hash = "sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7", size = 145511, upload_time = "2025-06-09T08:51:09.828Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/af/6d/6fe4805235e193aad4aaf979160dd1f3c487c57d48b810c816e6e842171b/ruamel.yaml-0.18.14-py3-none-any.whl", hash = "sha256:710ff198bb53da66718c7db27eec4fbcc9aa6ca7204e4c1df2f282b6fe5eb6b2", size = 118570 }, + { url = "https://files.pythonhosted.org/packages/af/6d/6fe4805235e193aad4aaf979160dd1f3c487c57d48b810c816e6e842171b/ruamel.yaml-0.18.14-py3-none-any.whl", hash = "sha256:710ff198bb53da66718c7db27eec4fbcc9aa6ca7204e4c1df2f282b6fe5eb6b2", size = 118570, upload_time = "2025-06-09T08:51:06.348Z" }, ] [[package]] name = "ruamel-yaml-clib" version = "0.2.12" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433 }, - { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362 }, - { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118 }, - { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497 }, - { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042 }, - { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831 }, - { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692 }, - { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777 }, - { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523 }, - { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011 }, - { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488 }, - { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066 }, - { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785 }, - { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017 }, - { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270 }, - { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059 }, - { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583 }, - { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190 }, +sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315, upload_time = "2024-10-20T10:10:56.22Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433, upload_time = "2024-10-20T10:12:55.657Z" }, + { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362, upload_time = "2024-10-20T10:12:57.155Z" }, + { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118, upload_time = "2024-10-20T10:12:58.501Z" }, + { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497, upload_time = "2024-10-20T10:13:00.211Z" }, + { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042, upload_time = "2024-10-21T11:26:46.038Z" }, + { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831, upload_time = "2024-10-21T11:26:47.487Z" }, + { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692, upload_time = "2024-12-11T19:58:17.252Z" }, + { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777, upload_time = "2024-10-20T10:13:01.395Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523, upload_time = "2024-10-20T10:13:02.768Z" }, + { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011, upload_time = "2024-10-20T10:13:04.377Z" }, + { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488, upload_time = "2024-10-20T10:13:05.906Z" }, + { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066, upload_time = "2024-10-20T10:13:07.26Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785, upload_time = "2024-10-20T10:13:08.504Z" }, + { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017, upload_time = "2024-10-21T11:26:48.866Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270, upload_time = "2024-10-21T11:26:50.213Z" }, + { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059, upload_time = "2024-12-11T19:58:18.846Z" }, + { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583, upload_time = "2024-10-20T10:13:09.658Z" }, + { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190, upload_time = "2024-10-20T10:13:10.66Z" }, ] [[package]] @@ -1962,54 +2574,139 @@ dependencies = [ { name = "click" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/84/a4/b61c6e7a13b848fd985c9ed9acd525ccb1c2675e6cfa0d62292ae8015792/savepagenow-1.3.0.tar.gz", hash = "sha256:d0bc6bbe4606c700315015c3defcfab3c329208002b2b8cdc59f9b52996c6d3f", size = 42927 } +sdist = { url = "https://files.pythonhosted.org/packages/84/a4/b61c6e7a13b848fd985c9ed9acd525ccb1c2675e6cfa0d62292ae8015792/savepagenow-1.3.0.tar.gz", hash = "sha256:d0bc6bbe4606c700315015c3defcfab3c329208002b2b8cdc59f9b52996c6d3f", size = 42927, upload_time = "2023-07-01T13:31:49.607Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/8f/aea39979f8a7091ad2242a038a0e4c2b463593923ce598a914255dfba9ef/savepagenow-1.3.0-py2.py3-none-any.whl", hash = "sha256:4b0a4fff47254c160a37a20868ab53bb90da3d3f9f96086a9255b2375e39fcbf", size = 5649 }, + { url = "https://files.pythonhosted.org/packages/a6/8f/aea39979f8a7091ad2242a038a0e4c2b463593923ce598a914255dfba9ef/savepagenow-1.3.0-py2.py3-none-any.whl", hash = "sha256:4b0a4fff47254c160a37a20868ab53bb90da3d3f9f96086a9255b2375e39fcbf", size = 5649, upload_time = "2023-07-01T13:31:48.005Z" }, +] + +[[package]] +name = "scikit-learn" +version = "1.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "joblib" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "threadpoolctl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/41/84/5f4af978fff619706b8961accac84780a6d298d82a8873446f72edb4ead0/scikit_learn-1.7.1.tar.gz", hash = "sha256:24b3f1e976a4665aa74ee0fcaac2b8fccc6ae77c8e07ab25da3ba6d3292b9802", size = 7190445, upload_time = "2025-07-18T08:01:54.5Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/16/57f176585b35ed865f51b04117947fe20f130f78940c6477b6d66279c9c2/scikit_learn-1.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3cee419b49b5bbae8796ecd690f97aa412ef1674410c23fc3257c6b8b85b8087", size = 9260431, upload_time = "2025-07-18T08:01:22.77Z" }, + { url = "https://files.pythonhosted.org/packages/67/4e/899317092f5efcab0e9bc929e3391341cec8fb0e816c4789686770024580/scikit_learn-1.7.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2fd8b8d35817b0d9ebf0b576f7d5ffbbabdb55536b0655a8aaae629d7ffd2e1f", size = 8637191, upload_time = "2025-07-18T08:01:24.731Z" }, + { url = "https://files.pythonhosted.org/packages/f3/1b/998312db6d361ded1dd56b457ada371a8d8d77ca2195a7d18fd8a1736f21/scikit_learn-1.7.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:588410fa19a96a69763202f1d6b7b91d5d7a5d73be36e189bc6396bfb355bd87", size = 9486346, upload_time = "2025-07-18T08:01:26.713Z" }, + { url = "https://files.pythonhosted.org/packages/ad/09/a2aa0b4e644e5c4ede7006748f24e72863ba2ae71897fecfd832afea01b4/scikit_learn-1.7.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e3142f0abe1ad1d1c31a2ae987621e41f6b578144a911ff4ac94781a583adad7", size = 9290988, upload_time = "2025-07-18T08:01:28.938Z" }, + { url = "https://files.pythonhosted.org/packages/15/fa/c61a787e35f05f17fc10523f567677ec4eeee5f95aa4798dbbbcd9625617/scikit_learn-1.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:3ddd9092c1bd469acab337d87930067c87eac6bd544f8d5027430983f1e1ae88", size = 8735568, upload_time = "2025-07-18T08:01:30.936Z" }, + { url = "https://files.pythonhosted.org/packages/52/f8/e0533303f318a0f37b88300d21f79b6ac067188d4824f1047a37214ab718/scikit_learn-1.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b7839687fa46d02e01035ad775982f2470be2668e13ddd151f0f55a5bf123bae", size = 9213143, upload_time = "2025-07-18T08:01:32.942Z" }, + { url = "https://files.pythonhosted.org/packages/71/f3/f1df377d1bdfc3e3e2adc9c119c238b182293e6740df4cbeac6de2cc3e23/scikit_learn-1.7.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a10f276639195a96c86aa572ee0698ad64ee939a7b042060b98bd1930c261d10", size = 8591977, upload_time = "2025-07-18T08:01:34.967Z" }, + { url = "https://files.pythonhosted.org/packages/99/72/c86a4cd867816350fe8dee13f30222340b9cd6b96173955819a5561810c5/scikit_learn-1.7.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:13679981fdaebc10cc4c13c43344416a86fcbc61449cb3e6517e1df9d12c8309", size = 9436142, upload_time = "2025-07-18T08:01:37.397Z" }, + { url = "https://files.pythonhosted.org/packages/e8/66/277967b29bd297538dc7a6ecfb1a7dce751beabd0d7f7a2233be7a4f7832/scikit_learn-1.7.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4f1262883c6a63f067a980a8cdd2d2e7f2513dddcef6a9eaada6416a7a7cbe43", size = 9282996, upload_time = "2025-07-18T08:01:39.721Z" }, + { url = "https://files.pythonhosted.org/packages/e2/47/9291cfa1db1dae9880420d1e07dbc7e8dd4a7cdbc42eaba22512e6bde958/scikit_learn-1.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:ca6d31fb10e04d50bfd2b50d66744729dbb512d4efd0223b864e2fdbfc4cee11", size = 8707418, upload_time = "2025-07-18T08:01:42.124Z" }, + { url = "https://files.pythonhosted.org/packages/61/95/45726819beccdaa34d3362ea9b2ff9f2b5d3b8bf721bd632675870308ceb/scikit_learn-1.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:781674d096303cfe3d351ae6963ff7c958db61cde3421cd490e3a5a58f2a94ae", size = 9561466, upload_time = "2025-07-18T08:01:44.195Z" }, + { url = "https://files.pythonhosted.org/packages/ee/1c/6f4b3344805de783d20a51eb24d4c9ad4b11a7f75c1801e6ec6d777361fd/scikit_learn-1.7.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:10679f7f125fe7ecd5fad37dd1aa2daae7e3ad8df7f3eefa08901b8254b3e12c", size = 9040467, upload_time = "2025-07-18T08:01:46.671Z" }, + { url = "https://files.pythonhosted.org/packages/6f/80/abe18fe471af9f1d181904203d62697998b27d9b62124cd281d740ded2f9/scikit_learn-1.7.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1f812729e38c8cb37f760dce71a9b83ccfb04f59b3dca7c6079dcdc60544fa9e", size = 9532052, upload_time = "2025-07-18T08:01:48.676Z" }, + { url = "https://files.pythonhosted.org/packages/14/82/b21aa1e0c4cee7e74864d3a5a721ab8fcae5ca55033cb6263dca297ed35b/scikit_learn-1.7.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:88e1a20131cf741b84b89567e1717f27a2ced228e0f29103426102bc2e3b8ef7", size = 9361575, upload_time = "2025-07-18T08:01:50.639Z" }, + { url = "https://files.pythonhosted.org/packages/f2/20/f4777fcd5627dc6695fa6b92179d0edb7a3ac1b91bcd9a1c7f64fa7ade23/scikit_learn-1.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b1bd1d919210b6a10b7554b717c9000b5485aa95a1d0f177ae0d7ee8ec750da5", size = 9277310, upload_time = "2025-07-18T08:01:52.547Z" }, +] + +[[package]] +name = "scipy" +version = "1.16.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f5/4a/b927028464795439faec8eaf0b03b011005c487bb2d07409f28bf30879c4/scipy-1.16.1.tar.gz", hash = "sha256:44c76f9e8b6e8e488a586190ab38016e4ed2f8a038af7cd3defa903c0a2238b3", size = 30580861, upload_time = "2025-07-27T16:33:30.834Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/d9/ec4864f5896232133f51382b54a08de91a9d1af7a76dfa372894026dfee2/scipy-1.16.1-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:81b433bbeaf35728dad619afc002db9b189e45eebe2cd676effe1fb93fef2b9c", size = 36575194, upload_time = "2025-07-27T16:27:41.321Z" }, + { url = "https://files.pythonhosted.org/packages/5c/6d/40e81ecfb688e9d25d34a847dca361982a6addf8e31f0957b1a54fbfa994/scipy-1.16.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:886cc81fdb4c6903a3bb0464047c25a6d1016fef77bb97949817d0c0d79f9e04", size = 28594590, upload_time = "2025-07-27T16:27:49.204Z" }, + { url = "https://files.pythonhosted.org/packages/0e/37/9f65178edfcc629377ce9a64fc09baebea18c80a9e57ae09a52edf84880b/scipy-1.16.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:15240c3aac087a522b4eaedb09f0ad061753c5eebf1ea430859e5bf8640d5919", size = 20866458, upload_time = "2025-07-27T16:27:54.98Z" }, + { url = "https://files.pythonhosted.org/packages/2c/7b/749a66766871ea4cb1d1ea10f27004db63023074c22abed51f22f09770e0/scipy-1.16.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:65f81a25805f3659b48126b5053d9e823d3215e4a63730b5e1671852a1705921", size = 23539318, upload_time = "2025-07-27T16:28:01.604Z" }, + { url = "https://files.pythonhosted.org/packages/c4/db/8d4afec60eb833a666434d4541a3151eedbf2494ea6d4d468cbe877f00cd/scipy-1.16.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6c62eea7f607f122069b9bad3f99489ddca1a5173bef8a0c75555d7488b6f725", size = 33292899, upload_time = "2025-07-27T16:28:09.147Z" }, + { url = "https://files.pythonhosted.org/packages/51/1e/79023ca3bbb13a015d7d2757ecca3b81293c663694c35d6541b4dca53e98/scipy-1.16.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f965bbf3235b01c776115ab18f092a95aa74c271a52577bcb0563e85738fd618", size = 35162637, upload_time = "2025-07-27T16:28:17.535Z" }, + { url = "https://files.pythonhosted.org/packages/b6/49/0648665f9c29fdaca4c679182eb972935b3b4f5ace41d323c32352f29816/scipy-1.16.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f006e323874ffd0b0b816d8c6a8e7f9a73d55ab3b8c3f72b752b226d0e3ac83d", size = 35490507, upload_time = "2025-07-27T16:28:25.705Z" }, + { url = "https://files.pythonhosted.org/packages/62/8f/66cbb9d6bbb18d8c658f774904f42a92078707a7c71e5347e8bf2f52bb89/scipy-1.16.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8fd15fc5085ab4cca74cb91fe0a4263b1f32e4420761ddae531ad60934c2119", size = 37923998, upload_time = "2025-07-27T16:28:34.339Z" }, + { url = "https://files.pythonhosted.org/packages/14/c3/61f273ae550fbf1667675701112e380881905e28448c080b23b5a181df7c/scipy-1.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:f7b8013c6c066609577d910d1a2a077021727af07b6fab0ee22c2f901f22352a", size = 38508060, upload_time = "2025-07-27T16:28:43.242Z" }, + { url = "https://files.pythonhosted.org/packages/93/0b/b5c99382b839854a71ca9482c684e3472badc62620287cbbdab499b75ce6/scipy-1.16.1-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:5451606823a5e73dfa621a89948096c6528e2896e40b39248295d3a0138d594f", size = 36533717, upload_time = "2025-07-27T16:28:51.706Z" }, + { url = "https://files.pythonhosted.org/packages/eb/e5/69ab2771062c91e23e07c12e7d5033a6b9b80b0903ee709c3c36b3eb520c/scipy-1.16.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:89728678c5ca5abd610aee148c199ac1afb16e19844401ca97d43dc548a354eb", size = 28570009, upload_time = "2025-07-27T16:28:57.017Z" }, + { url = "https://files.pythonhosted.org/packages/f4/69/bd75dbfdd3cf524f4d753484d723594aed62cfaac510123e91a6686d520b/scipy-1.16.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e756d688cb03fd07de0fffad475649b03cb89bee696c98ce508b17c11a03f95c", size = 20841942, upload_time = "2025-07-27T16:29:01.152Z" }, + { url = "https://files.pythonhosted.org/packages/ea/74/add181c87663f178ba7d6144b370243a87af8476664d5435e57d599e6874/scipy-1.16.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5aa2687b9935da3ed89c5dbed5234576589dd28d0bf7cd237501ccfbdf1ad608", size = 23498507, upload_time = "2025-07-27T16:29:05.202Z" }, + { url = "https://files.pythonhosted.org/packages/1d/74/ece2e582a0d9550cee33e2e416cc96737dce423a994d12bbe59716f47ff1/scipy-1.16.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0851f6a1e537fe9399f35986897e395a1aa61c574b178c0d456be5b1a0f5ca1f", size = 33286040, upload_time = "2025-07-27T16:29:10.201Z" }, + { url = "https://files.pythonhosted.org/packages/e4/82/08e4076df538fb56caa1d489588d880ec7c52d8273a606bb54d660528f7c/scipy-1.16.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fedc2cbd1baed37474b1924c331b97bdff611d762c196fac1a9b71e67b813b1b", size = 35176096, upload_time = "2025-07-27T16:29:17.091Z" }, + { url = "https://files.pythonhosted.org/packages/fa/79/cd710aab8c921375711a8321c6be696e705a120e3011a643efbbcdeeabcc/scipy-1.16.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2ef500e72f9623a6735769e4b93e9dcb158d40752cdbb077f305487e3e2d1f45", size = 35490328, upload_time = "2025-07-27T16:29:22.928Z" }, + { url = "https://files.pythonhosted.org/packages/71/73/e9cc3d35ee4526d784520d4494a3e1ca969b071fb5ae5910c036a375ceec/scipy-1.16.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:978d8311674b05a8f7ff2ea6c6bce5d8b45a0cb09d4c5793e0318f448613ea65", size = 37939921, upload_time = "2025-07-27T16:29:29.108Z" }, + { url = "https://files.pythonhosted.org/packages/21/12/c0efd2941f01940119b5305c375ae5c0fcb7ec193f806bd8f158b73a1782/scipy-1.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:81929ed0fa7a5713fcdd8b2e6f73697d3b4c4816d090dd34ff937c20fa90e8ab", size = 38479462, upload_time = "2025-07-27T16:30:24.078Z" }, + { url = "https://files.pythonhosted.org/packages/7a/19/c3d08b675260046a991040e1ea5d65f91f40c7df1045fffff412dcfc6765/scipy-1.16.1-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:bcc12db731858abda693cecdb3bdc9e6d4bd200213f49d224fe22df82687bdd6", size = 36938832, upload_time = "2025-07-27T16:29:35.057Z" }, + { url = "https://files.pythonhosted.org/packages/81/f2/ce53db652c033a414a5b34598dba6b95f3d38153a2417c5a3883da429029/scipy-1.16.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:744d977daa4becb9fc59135e75c069f8d301a87d64f88f1e602a9ecf51e77b27", size = 29093084, upload_time = "2025-07-27T16:29:40.201Z" }, + { url = "https://files.pythonhosted.org/packages/a9/ae/7a10ff04a7dc15f9057d05b33737ade244e4bd195caa3f7cc04d77b9e214/scipy-1.16.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:dc54f76ac18073bcecffb98d93f03ed6b81a92ef91b5d3b135dcc81d55a724c7", size = 21365098, upload_time = "2025-07-27T16:29:44.295Z" }, + { url = "https://files.pythonhosted.org/packages/36/ac/029ff710959932ad3c2a98721b20b405f05f752f07344622fd61a47c5197/scipy-1.16.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:367d567ee9fc1e9e2047d31f39d9d6a7a04e0710c86e701e053f237d14a9b4f6", size = 23896858, upload_time = "2025-07-27T16:29:48.784Z" }, + { url = "https://files.pythonhosted.org/packages/71/13/d1ef77b6bd7898720e1f0b6b3743cb945f6c3cafa7718eaac8841035ab60/scipy-1.16.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4cf5785e44e19dcd32a0e4807555e1e9a9b8d475c6afff3d21c3c543a6aa84f4", size = 33438311, upload_time = "2025-07-27T16:29:54.164Z" }, + { url = "https://files.pythonhosted.org/packages/2d/e0/e64a6821ffbb00b4c5b05169f1c1fddb4800e9307efe3db3788995a82a2c/scipy-1.16.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3d0b80fb26d3e13a794c71d4b837e2a589d839fd574a6bbb4ee1288c213ad4a3", size = 35279542, upload_time = "2025-07-27T16:30:00.249Z" }, + { url = "https://files.pythonhosted.org/packages/57/59/0dc3c8b43e118f1e4ee2b798dcc96ac21bb20014e5f1f7a8e85cc0653bdb/scipy-1.16.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8503517c44c18d1030d666cb70aaac1cc8913608816e06742498833b128488b7", size = 35667665, upload_time = "2025-07-27T16:30:05.916Z" }, + { url = "https://files.pythonhosted.org/packages/45/5f/844ee26e34e2f3f9f8febb9343748e72daeaec64fe0c70e9bf1ff84ec955/scipy-1.16.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:30cc4bb81c41831ecfd6dc450baf48ffd80ef5aed0f5cf3ea775740e80f16ecc", size = 38045210, upload_time = "2025-07-27T16:30:11.655Z" }, + { url = "https://files.pythonhosted.org/packages/8d/d7/210f2b45290f444f1de64bc7353aa598ece9f0e90c384b4a156f9b1a5063/scipy-1.16.1-cp313-cp313t-win_amd64.whl", hash = "sha256:c24fa02f7ed23ae514460a22c57eca8f530dbfa50b1cfdbf4f37c05b5309cc39", size = 38593661, upload_time = "2025-07-27T16:30:17.825Z" }, + { url = "https://files.pythonhosted.org/packages/81/ea/84d481a5237ed223bd3d32d6e82d7a6a96e34756492666c260cef16011d1/scipy-1.16.1-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:796a5a9ad36fa3a782375db8f4241ab02a091308eb079746bc0f874c9b998318", size = 36525921, upload_time = "2025-07-27T16:30:30.081Z" }, + { url = "https://files.pythonhosted.org/packages/4e/9f/d9edbdeff9f3a664807ae3aea383e10afaa247e8e6255e6d2aa4515e8863/scipy-1.16.1-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:3ea0733a2ff73fd6fdc5fecca54ee9b459f4d74f00b99aced7d9a3adb43fb1cc", size = 28564152, upload_time = "2025-07-27T16:30:35.336Z" }, + { url = "https://files.pythonhosted.org/packages/3b/95/8125bcb1fe04bc267d103e76516243e8d5e11229e6b306bda1024a5423d1/scipy-1.16.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:85764fb15a2ad994e708258bb4ed8290d1305c62a4e1ef07c414356a24fcfbf8", size = 20836028, upload_time = "2025-07-27T16:30:39.421Z" }, + { url = "https://files.pythonhosted.org/packages/77/9c/bf92e215701fc70bbcd3d14d86337cf56a9b912a804b9c776a269524a9e9/scipy-1.16.1-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:ca66d980469cb623b1759bdd6e9fd97d4e33a9fad5b33771ced24d0cb24df67e", size = 23489666, upload_time = "2025-07-27T16:30:43.663Z" }, + { url = "https://files.pythonhosted.org/packages/5e/00/5e941d397d9adac41b02839011594620d54d99488d1be5be755c00cde9ee/scipy-1.16.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e7cc1ffcc230f568549fc56670bcf3df1884c30bd652c5da8138199c8c76dae0", size = 33358318, upload_time = "2025-07-27T16:30:48.982Z" }, + { url = "https://files.pythonhosted.org/packages/0e/87/8db3aa10dde6e3e8e7eb0133f24baa011377d543f5b19c71469cf2648026/scipy-1.16.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3ddfb1e8d0b540cb4ee9c53fc3dea3186f97711248fb94b4142a1b27178d8b4b", size = 35185724, upload_time = "2025-07-27T16:30:54.26Z" }, + { url = "https://files.pythonhosted.org/packages/89/b4/6ab9ae443216807622bcff02690262d8184078ea467efee2f8c93288a3b1/scipy-1.16.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4dc0e7be79e95d8ba3435d193e0d8ce372f47f774cffd882f88ea4e1e1ddc731", size = 35554335, upload_time = "2025-07-27T16:30:59.765Z" }, + { url = "https://files.pythonhosted.org/packages/9c/9a/d0e9dc03c5269a1afb60661118296a32ed5d2c24298af61b676c11e05e56/scipy-1.16.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f23634f9e5adb51b2a77766dac217063e764337fbc816aa8ad9aaebcd4397fd3", size = 37960310, upload_time = "2025-07-27T16:31:06.151Z" }, + { url = "https://files.pythonhosted.org/packages/5e/00/c8f3130a50521a7977874817ca89e0599b1b4ee8e938bad8ae798a0e1f0d/scipy-1.16.1-cp314-cp314-win_amd64.whl", hash = "sha256:57d75524cb1c5a374958a2eae3d84e1929bb971204cc9d52213fb8589183fc19", size = 39319239, upload_time = "2025-07-27T16:31:59.942Z" }, + { url = "https://files.pythonhosted.org/packages/f2/f2/1ca3eda54c3a7e4c92f6acef7db7b3a057deb135540d23aa6343ef8ad333/scipy-1.16.1-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:d8da7c3dd67bcd93f15618938f43ed0995982eb38973023d46d4646c4283ad65", size = 36939460, upload_time = "2025-07-27T16:31:11.865Z" }, + { url = "https://files.pythonhosted.org/packages/80/30/98c2840b293a132400c0940bb9e140171dcb8189588619048f42b2ce7b4f/scipy-1.16.1-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:cc1d2f2fd48ba1e0620554fe5bc44d3e8f5d4185c8c109c7fbdf5af2792cfad2", size = 29093322, upload_time = "2025-07-27T16:31:17.045Z" }, + { url = "https://files.pythonhosted.org/packages/c1/e6/1e6e006e850622cf2a039b62d1a6ddc4497d4851e58b68008526f04a9a00/scipy-1.16.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:21a611ced9275cb861bacadbada0b8c0623bc00b05b09eb97f23b370fc2ae56d", size = 21365329, upload_time = "2025-07-27T16:31:21.188Z" }, + { url = "https://files.pythonhosted.org/packages/8e/02/72a5aa5b820589dda9a25e329ca752842bfbbaf635e36bc7065a9b42216e/scipy-1.16.1-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:8dfbb25dffc4c3dd9371d8ab456ca81beeaf6f9e1c2119f179392f0dc1ab7695", size = 23897544, upload_time = "2025-07-27T16:31:25.408Z" }, + { url = "https://files.pythonhosted.org/packages/2b/dc/7122d806a6f9eb8a33532982234bed91f90272e990f414f2830cfe656e0b/scipy-1.16.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f0ebb7204f063fad87fc0a0e4ff4a2ff40b2a226e4ba1b7e34bf4b79bf97cd86", size = 33442112, upload_time = "2025-07-27T16:31:30.62Z" }, + { url = "https://files.pythonhosted.org/packages/24/39/e383af23564daa1021a5b3afbe0d8d6a68ec639b943661841f44ac92de85/scipy-1.16.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f1b9e5962656f2734c2b285a8745358ecb4e4efbadd00208c80a389227ec61ff", size = 35286594, upload_time = "2025-07-27T16:31:36.112Z" }, + { url = "https://files.pythonhosted.org/packages/95/47/1a0b0aff40c3056d955f38b0df5d178350c3d74734ec54f9c68d23910be5/scipy-1.16.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e1a106f8c023d57a2a903e771228bf5c5b27b5d692088f457acacd3b54511e4", size = 35665080, upload_time = "2025-07-27T16:31:42.025Z" }, + { url = "https://files.pythonhosted.org/packages/64/df/ce88803e9ed6e27fe9b9abefa157cf2c80e4fa527cf17ee14be41f790ad4/scipy-1.16.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:709559a1db68a9abc3b2c8672c4badf1614f3b440b3ab326d86a5c0491eafae3", size = 38050306, upload_time = "2025-07-27T16:31:48.109Z" }, + { url = "https://files.pythonhosted.org/packages/6e/6c/a76329897a7cae4937d403e623aa6aaea616a0bb5b36588f0b9d1c9a3739/scipy-1.16.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c0c804d60492a0aad7f5b2bb1862f4548b990049e27e828391ff2bf6f7199998", size = 39427705, upload_time = "2025-07-27T16:31:53.96Z" }, ] [[package]] name = "shellingham" version = "1.5.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310 } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload_time = "2023-10-24T04:13:40.426Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 }, + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload_time = "2023-10-24T04:13:38.866Z" }, ] [[package]] name = "simpleeval" version = "1.0.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ff/6f/15be211749430f52f2c8f0c69158a6fc961c03aac93fa28d44d1a6f5ebc7/simpleeval-1.0.3.tar.gz", hash = "sha256:67bbf246040ac3b57c29cf048657b9cf31d4e7b9d6659684daa08ca8f1e45829", size = 24358 } +sdist = { url = "https://files.pythonhosted.org/packages/ff/6f/15be211749430f52f2c8f0c69158a6fc961c03aac93fa28d44d1a6f5ebc7/simpleeval-1.0.3.tar.gz", hash = "sha256:67bbf246040ac3b57c29cf048657b9cf31d4e7b9d6659684daa08ca8f1e45829", size = 24358, upload_time = "2024-11-02T10:29:46.912Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/e9/e58082fbb8cecbb6fb4133033c40cc50c248b1a331582be3a0f39138d65b/simpleeval-1.0.3-py3-none-any.whl", hash = "sha256:e3bdbb8c82c26297c9a153902d0fd1858a6c3774bf53ff4f134788c3f2035c38", size = 15762 }, + { url = "https://files.pythonhosted.org/packages/a0/e9/e58082fbb8cecbb6fb4133033c40cc50c248b1a331582be3a0f39138d65b/simpleeval-1.0.3-py3-none-any.whl", hash = "sha256:e3bdbb8c82c26297c9a153902d0fd1858a6c3774bf53ff4f134788c3f2035c38", size = 15762, upload_time = "2024-11-02T10:29:45.706Z" }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload_time = "2024-12-04T17:35:28.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload_time = "2024-12-04T17:35:26.475Z" }, ] [[package]] name = "smmap" version = "5.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329 } +sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329, upload_time = "2025-01-02T07:14:40.909Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303 }, + { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303, upload_time = "2025-01-02T07:14:38.724Z" }, ] [[package]] name = "soupsieve" version = "2.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418 } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload_time = "2025-04-20T18:50:08.518Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677 }, + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload_time = "2025-04-20T18:50:07.196Z" }, ] [[package]] @@ -2021,18 +2718,18 @@ dependencies = [ { name = "executing" }, { name = "pure-eval" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707 } +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload_time = "2023-09-30T13:58:05.479Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload_time = "2023-09-30T13:58:03.53Z" }, ] [[package]] name = "structlog" version = "25.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/b9/6e672db4fec07349e7a8a8172c1a6ae235c58679ca29c3f86a61b5e59ff3/structlog-25.4.0.tar.gz", hash = "sha256:186cd1b0a8ae762e29417095664adf1d6a31702160a46dacb7796ea82f7409e4", size = 1369138 } +sdist = { url = "https://files.pythonhosted.org/packages/79/b9/6e672db4fec07349e7a8a8172c1a6ae235c58679ca29c3f86a61b5e59ff3/structlog-25.4.0.tar.gz", hash = "sha256:186cd1b0a8ae762e29417095664adf1d6a31702160a46dacb7796ea82f7409e4", size = 1369138, upload_time = "2025-06-02T08:21:12.971Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/4a/97ee6973e3a73c74c8120d59829c3861ea52210667ec3e7a16045c62b64d/structlog-25.4.0-py3-none-any.whl", hash = "sha256:fe809ff5c27e557d14e613f45ca441aabda051d119ee5a0102aaba6ce40eed2c", size = 68720 }, + { url = "https://files.pythonhosted.org/packages/a0/4a/97ee6973e3a73c74c8120d59829c3861ea52210667ec3e7a16045c62b64d/structlog-25.4.0-py3-none-any.whl", hash = "sha256:fe809ff5c27e557d14e613f45ca441aabda051d119ee5a0102aaba6ce40eed2c", size = 68720, upload_time = "2025-06-02T08:21:11.43Z" }, ] [[package]] @@ -2044,18 +2741,18 @@ dependencies = [ { name = "pyyaml" }, { name = "xlsxwriter" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/23/2d/5b5c0127e959a715c5365b3b491846fba5bc1fb7f94370cc3a4fb3f51f68/tableschema-to-template-0.0.13.tar.gz", hash = "sha256:2d8d2250efb840e0ecb9012c5e879a82ef68f65dd86bdff574200fdfc978ff1c", size = 13564 } +sdist = { url = "https://files.pythonhosted.org/packages/23/2d/5b5c0127e959a715c5365b3b491846fba5bc1fb7f94370cc3a4fb3f51f68/tableschema-to-template-0.0.13.tar.gz", hash = "sha256:2d8d2250efb840e0ecb9012c5e879a82ef68f65dd86bdff574200fdfc978ff1c", size = 13564, upload_time = "2023-02-01T21:53:17.238Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/7f/3c129377d9b815c0bb92b8c24bbecabe5e6b13b831f38924f80d2e5b40b2/tableschema_to_template-0.0.13-py3-none-any.whl", hash = "sha256:4905500a4235740654230c3223629d26fdccb7a0457ec1d0110ea102c4f1146c", size = 14860 }, + { url = "https://files.pythonhosted.org/packages/9f/7f/3c129377d9b815c0bb92b8c24bbecabe5e6b13b831f38924f80d2e5b40b2/tableschema_to_template-0.0.13-py3-none-any.whl", hash = "sha256:4905500a4235740654230c3223629d26fdccb7a0457ec1d0110ea102c4f1146c", size = 14860, upload_time = "2023-02-01T21:53:16.02Z" }, ] [[package]] name = "tabulate" version = "0.9.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090 } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload_time = "2022-10-06T17:21:48.54Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252 }, + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload_time = "2022-10-06T17:21:44.262Z" }, ] [[package]] @@ -2084,13 +2781,26 @@ dev = [ { name = "technologydata" }, ] docs = [ + { name = "cairosvg" }, + { name = "gurobipy" }, + { name = "mkdocs-argref-plugin" }, { name = "mkdocs-autolinks-plugin" }, + { name = "mkdocs-ezlinks-plugin" }, + { name = "mkdocs-git-committers-plugin" }, { name = "mkdocs-git-revision-date-localized-plugin" }, + { name = "mkdocs-jupyter" }, { name = "mkdocs-material" }, { name = "mkdocs-minify-plugin" }, { name = "mkdocs-open-in-new-tab" }, + { name = "mkdocs-redirects" }, + { name = "mkdocs-table-reader-plugin" }, + { name = "mkdocs-video" }, { name = "mkdocstrings" }, { name = "mkdocstrings-python" }, + { name = "openpyxl" }, + { name = "pillow" }, + { name = "python-calamine" }, + { name = "tsam" }, ] [package.metadata] @@ -2117,68 +2827,132 @@ dev = [ { name = "technologydata", editable = "." }, ] docs = [ + { name = "cairosvg", specifier = ">=2.8.2" }, + { name = "gurobipy", specifier = ">=12.0.3" }, + { name = "mkdocs-argref-plugin", specifier = ">=0.5.0" }, { name = "mkdocs-autolinks-plugin", specifier = ">=0.7.1" }, + { name = "mkdocs-ezlinks-plugin", specifier = ">=0.1.14" }, + { name = "mkdocs-git-committers-plugin", specifier = ">=0.2.3" }, { name = "mkdocs-git-revision-date-localized-plugin", specifier = ">=1.4.7" }, + { name = "mkdocs-jupyter", specifier = ">=0.25.1" }, { name = "mkdocs-material", specifier = ">=9.6.14" }, { name = "mkdocs-minify-plugin", specifier = ">=0.8.0" }, { name = "mkdocs-open-in-new-tab", specifier = ">=1.0.8" }, + { name = "mkdocs-redirects", specifier = ">=1.2.2" }, + { name = "mkdocs-table-reader-plugin", specifier = ">=3.1.0" }, + { name = "mkdocs-video", specifier = ">=1.5.0" }, { name = "mkdocstrings", specifier = ">=0.29.1" }, { name = "mkdocstrings-python", specifier = ">=1.16.11" }, + { name = "openpyxl", specifier = ">=3.1.5" }, + { name = "pillow", specifier = ">=11.3.0" }, + { name = "python-calamine", specifier = ">=0.4.0" }, + { name = "tsam", specifier = ">=2.3.9" }, ] [[package]] name = "tenacity" version = "9.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload_time = "2025-04-02T08:25:09.966Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 }, + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload_time = "2025-04-02T08:25:07.678Z" }, ] [[package]] name = "text-unidecode" version = "1.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload_time = "2019-08-30T21:36:45.405Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154 }, + { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload_time = "2019-08-30T21:37:03.543Z" }, +] + +[[package]] +name = "threadpoolctl" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload_time = "2025-03-13T13:49:23.031Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload_time = "2025-03-13T13:49:21.846Z" }, +] + +[[package]] +name = "tinycss2" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload_time = "2024-10-24T14:58:29.895Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload_time = "2024-10-24T14:58:28.029Z" }, ] [[package]] name = "tomlkit" version = "0.13.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207 } +sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207, upload_time = "2025-06-05T07:13:44.947Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901 }, + { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload_time = "2025-06-05T07:13:43.546Z" }, ] [[package]] name = "tornado" version = "6.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934 } +sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934, upload_time = "2025-05-22T18:15:38.788Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948 }, - { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112 }, - { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672 }, - { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019 }, - { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252 }, - { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930 }, - { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351 }, - { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328 }, - { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396 }, - { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840 }, - { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596 }, + { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948, upload_time = "2025-05-22T18:15:20.862Z" }, + { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112, upload_time = "2025-05-22T18:15:22.591Z" }, + { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672, upload_time = "2025-05-22T18:15:24.027Z" }, + { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019, upload_time = "2025-05-22T18:15:25.735Z" }, + { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252, upload_time = "2025-05-22T18:15:27.499Z" }, + { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930, upload_time = "2025-05-22T18:15:29.299Z" }, + { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351, upload_time = "2025-05-22T18:15:31.038Z" }, + { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328, upload_time = "2025-05-22T18:15:32.426Z" }, + { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396, upload_time = "2025-05-22T18:15:34.205Z" }, + { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840, upload_time = "2025-05-22T18:15:36.1Z" }, + { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596, upload_time = "2025-05-22T18:15:37.433Z" }, +] + +[[package]] +name = "tqdm" +version = "4.67.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload_time = "2024-11-24T20:12:22.481Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload_time = "2024-11-24T20:12:19.698Z" }, ] [[package]] name = "traitlets" version = "5.14.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload_time = "2024-04-19T11:11:49.746Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload_time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "tsam" +version = "2.3.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "highspy" }, + { name = "networkx" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pyomo" }, + { name = "scikit-learn" }, + { name = "tqdm" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e7/67/c69f8c46fd46e01480ca10280ab612253255a729a850e2d61fdf0ea08258/tsam-2.3.9.tar.gz", hash = "sha256:1f219eef05788d199af1ff61bd5a3d9217a26f9279988b1ef4b7d5af2757ed15", size = 223755, upload_time = "2025-06-16T07:30:03.015Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/e7/5c072b990bddccc4a78a186d641e50257993c50658cddc0d4bf300acd1e1/tsam-2.3.9-py3-none-any.whl", hash = "sha256:edcc4febb9e1dacc028bc819d710974ede8f563467c3d235a250f46416f93a1b", size = 36816, upload_time = "2025-06-16T07:30:01.562Z" }, ] [[package]] @@ -2191,18 +2965,18 @@ dependencies = [ { name = "shellingham" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c5/8c/7d682431efca5fd290017663ea4588bf6f2c6aad085c7f108c5dbc316e70/typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b", size = 102625 } +sdist = { url = "https://files.pythonhosted.org/packages/c5/8c/7d682431efca5fd290017663ea4588bf6f2c6aad085c7f108c5dbc316e70/typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b", size = 102625, upload_time = "2025-05-26T14:30:31.824Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/42/3efaf858001d2c2913de7f354563e3a3a2f0decae3efe98427125a8f441e/typer-0.16.0-py3-none-any.whl", hash = "sha256:1f79bed11d4d02d4310e3c1b7ba594183bcedb0ac73b27a9e5f28f6fb5b98855", size = 46317 }, + { url = "https://files.pythonhosted.org/packages/76/42/3efaf858001d2c2913de7f354563e3a3a2f0decae3efe98427125a8f441e/typer-0.16.0-py3-none-any.whl", hash = "sha256:1f79bed11d4d02d4310e3c1b7ba594183bcedb0ac73b27a9e5f28f6fb5b98855", size = 46317, upload_time = "2025-05-26T14:30:30.523Z" }, ] [[package]] name = "typing-extensions" version = "4.14.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673 } +sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload_time = "2025-07-04T13:28:34.16Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906 }, + { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload_time = "2025-07-04T13:28:32.743Z" }, ] [[package]] @@ -2212,45 +2986,45 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload_time = "2025-05-21T18:55:23.885Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload_time = "2025-05-21T18:55:22.152Z" }, ] [[package]] name = "tzdata" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload_time = "2025-03-23T13:54:43.652Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload_time = "2025-03-23T13:54:41.845Z" }, ] [[package]] name = "unidecode" version = "1.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/7d/a8a765761bbc0c836e397a2e48d498305a865b70a8600fd7a942e85dcf63/Unidecode-1.4.0.tar.gz", hash = "sha256:ce35985008338b676573023acc382d62c264f307c8f7963733405add37ea2b23", size = 200149 } +sdist = { url = "https://files.pythonhosted.org/packages/94/7d/a8a765761bbc0c836e397a2e48d498305a865b70a8600fd7a942e85dcf63/Unidecode-1.4.0.tar.gz", hash = "sha256:ce35985008338b676573023acc382d62c264f307c8f7963733405add37ea2b23", size = 200149, upload_time = "2025-04-24T08:45:03.798Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/b7/559f59d57d18b44c6d1250d2eeaa676e028b9c527431f5d0736478a73ba1/Unidecode-1.4.0-py3-none-any.whl", hash = "sha256:c3c7606c27503ad8d501270406e345ddb480a7b5f38827eafe4fa82a137f0021", size = 235837 }, + { url = "https://files.pythonhosted.org/packages/8f/b7/559f59d57d18b44c6d1250d2eeaa676e028b9c527431f5d0736478a73ba1/Unidecode-1.4.0-py3-none-any.whl", hash = "sha256:c3c7606c27503ad8d501270406e345ddb480a7b5f38827eafe4fa82a137f0021", size = 235837, upload_time = "2025-04-24T08:45:01.609Z" }, ] [[package]] name = "urllib3" version = "2.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185 } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload_time = "2025-06-18T14:07:41.644Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795 }, + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload_time = "2025-06-18T14:07:40.39Z" }, ] [[package]] name = "validators" version = "0.35.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/53/66/a435d9ae49850b2f071f7ebd8119dd4e84872b01630d6736761e6e7fd847/validators-0.35.0.tar.gz", hash = "sha256:992d6c48a4e77c81f1b4daba10d16c3a9bb0dbb79b3a19ea847ff0928e70497a", size = 73399 } +sdist = { url = "https://files.pythonhosted.org/packages/53/66/a435d9ae49850b2f071f7ebd8119dd4e84872b01630d6736761e6e7fd847/validators-0.35.0.tar.gz", hash = "sha256:992d6c48a4e77c81f1b4daba10d16c3a9bb0dbb79b3a19ea847ff0928e70497a", size = 73399, upload_time = "2025-05-01T05:42:06.7Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/6e/3e955517e22cbdd565f2f8b2e73d52528b14b8bcfdb04f62466b071de847/validators-0.35.0-py3-none-any.whl", hash = "sha256:e8c947097eae7892cb3d26868d637f79f47b4a0554bc6b80065dfe5aac3705dd", size = 44712 }, + { url = "https://files.pythonhosted.org/packages/fa/6e/3e955517e22cbdd565f2f8b2e73d52528b14b8bcfdb04f62466b071de847/validators-0.35.0-py3-none-any.whl", hash = "sha256:e8c947097eae7892cb3d26868d637f79f47b4a0554bc6b80065dfe5aac3705dd", size = 44712, upload_time = "2025-05-01T05:42:04.203Z" }, ] [[package]] @@ -2262,33 +3036,33 @@ dependencies = [ { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316 } +sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload_time = "2025-05-08T17:58:23.811Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982 }, + { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload_time = "2025-05-08T17:58:21.15Z" }, ] [[package]] name = "watchdog" version = "6.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload_time = "2024-11-01T14:07:13.037Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, - { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, - { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, - { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 }, - { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 }, - { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471, upload_time = "2024-11-01T14:06:37.745Z" }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449, upload_time = "2024-11-01T14:06:39.748Z" }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054, upload_time = "2024-11-01T14:06:41.009Z" }, + { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480, upload_time = "2024-11-01T14:06:42.952Z" }, + { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451, upload_time = "2024-11-01T14:06:45.084Z" }, + { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057, upload_time = "2024-11-01T14:06:47.324Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload_time = "2024-11-01T14:06:59.472Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload_time = "2024-11-01T14:07:01.431Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload_time = "2024-11-01T14:07:02.568Z" }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload_time = "2024-11-01T14:07:03.893Z" }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload_time = "2024-11-01T14:07:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload_time = "2024-11-01T14:07:06.376Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload_time = "2024-11-01T14:07:07.547Z" }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload_time = "2024-11-01T14:07:09.525Z" }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload_time = "2024-11-01T14:07:10.686Z" }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload_time = "2024-11-01T14:07:11.845Z" }, ] [[package]] @@ -2300,79 +3074,88 @@ dependencies = [ { name = "requests" }, { name = "tabulate" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d7/4a/f55695bd1c9f1996b675b6e9e980eef40ebdb5e4bf8774c059c31af6ade1/wbgapi-1.0.12.tar.gz", hash = "sha256:338c3c768bd120b80596b48fa0449ecabc93513ac989c55671dce579dbb3a5be", size = 33590 } +sdist = { url = "https://files.pythonhosted.org/packages/d7/4a/f55695bd1c9f1996b675b6e9e980eef40ebdb5e4bf8774c059c31af6ade1/wbgapi-1.0.12.tar.gz", hash = "sha256:338c3c768bd120b80596b48fa0449ecabc93513ac989c55671dce579dbb3a5be", size = 33590, upload_time = "2022-07-05T15:07:22.772Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/12/224030af4886e119a3d03b709f7130e9601a4d15332e1d6a35671b25a4de/wbgapi-1.0.12-py3-none-any.whl", hash = "sha256:c5a1e1683b03d4264d287627c2562932f30e7f5c65509b812cb2e3de7d32633f", size = 36385 }, + { url = "https://files.pythonhosted.org/packages/00/12/224030af4886e119a3d03b709f7130e9601a4d15332e1d6a35671b25a4de/wbgapi-1.0.12-py3-none-any.whl", hash = "sha256:c5a1e1683b03d4264d287627c2562932f30e7f5c65509b812cb2e3de7d32633f", size = 36385, upload_time = "2022-07-05T15:07:20.606Z" }, ] [[package]] name = "wcwidth" version = "0.2.13" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload_time = "2024-01-06T02:10:57.829Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload_time = "2024-01-06T02:10:55.763Z" }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload_time = "2017-04-05T20:21:34.189Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload_time = "2017-04-05T20:21:32.581Z" }, ] [[package]] name = "wheel" version = "0.45.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545 } +sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545, upload_time = "2024-11-23T00:18:23.513Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494 }, + { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload_time = "2024-11-23T00:18:21.207Z" }, ] [[package]] name = "win32-setctime" version = "1.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867 } +sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867, upload_time = "2024-12-07T15:28:28.314Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083 }, + { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083, upload_time = "2024-12-07T15:28:26.465Z" }, ] [[package]] name = "xlrd" version = "2.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/5a/377161c2d3538d1990d7af382c79f3b2372e880b65de21b01b1a2b78691e/xlrd-2.0.2.tar.gz", hash = "sha256:08b5e25de58f21ce71dc7db3b3b8106c1fa776f3024c54e45b45b374e89234c9", size = 100167 } +sdist = { url = "https://files.pythonhosted.org/packages/07/5a/377161c2d3538d1990d7af382c79f3b2372e880b65de21b01b1a2b78691e/xlrd-2.0.2.tar.gz", hash = "sha256:08b5e25de58f21ce71dc7db3b3b8106c1fa776f3024c54e45b45b374e89234c9", size = 100167, upload_time = "2025-06-14T08:46:39.039Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/62/c8d562e7766786ba6587d09c5a8ba9f718ed3fa8af7f4553e8f91c36f302/xlrd-2.0.2-py2.py3-none-any.whl", hash = "sha256:ea762c3d29f4cca48d82df517b6d89fbce4db3107f9d78713e48cd321d5c9aa9", size = 96555 }, + { url = "https://files.pythonhosted.org/packages/1a/62/c8d562e7766786ba6587d09c5a8ba9f718ed3fa8af7f4553e8f91c36f302/xlrd-2.0.2-py2.py3-none-any.whl", hash = "sha256:ea762c3d29f4cca48d82df517b6d89fbce4db3107f9d78713e48cd321d5c9aa9", size = 96555, upload_time = "2025-06-14T08:46:37.766Z" }, ] [[package]] name = "xlrd3" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/db/88d8d49ddacc203956ecb98dc86c6ffeee6e933ef1f50da9b369de518f7f/xlrd3-1.1.0.tar.gz", hash = "sha256:20e6ed2e5f7f8b4ab61e30faffebceff6fab348332b4c915373f0a72742dc177", size = 58919847 } +sdist = { url = "https://files.pythonhosted.org/packages/79/db/88d8d49ddacc203956ecb98dc86c6ffeee6e933ef1f50da9b369de518f7f/xlrd3-1.1.0.tar.gz", hash = "sha256:20e6ed2e5f7f8b4ab61e30faffebceff6fab348332b4c915373f0a72742dc177", size = 58919847, upload_time = "2021-04-25T12:27:10.03Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/08/fce745025e58f160e7dcb5a45d4d43eb0bd44c0d8851425be87ef90271fa/xlrd3-1.1.0-py2.py3-none-any.whl", hash = "sha256:8e8e808f938144e7936a6e07c1d57be7a0f6c6f5b37c9c67974b43246d8aacb6", size = 105268 }, + { url = "https://files.pythonhosted.org/packages/5d/08/fce745025e58f160e7dcb5a45d4d43eb0bd44c0d8851425be87ef90271fa/xlrd3-1.1.0-py2.py3-none-any.whl", hash = "sha256:8e8e808f938144e7936a6e07c1d57be7a0f6c6f5b37c9c67974b43246d8aacb6", size = 105268, upload_time = "2021-04-25T12:26:55.264Z" }, ] [[package]] name = "xlsx2csv" version = "0.8.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/20/94860286a308a4213581c1beacd4fc7be724250c03583fcff23aaa6107bb/xlsx2csv-0.8.4.tar.gz", hash = "sha256:2aa809888826f6af5b26c77fc7f613f2bbeada0d8cc09e5a58e0f59684bb6911", size = 221390 } +sdist = { url = "https://files.pythonhosted.org/packages/36/20/94860286a308a4213581c1beacd4fc7be724250c03583fcff23aaa6107bb/xlsx2csv-0.8.4.tar.gz", hash = "sha256:2aa809888826f6af5b26c77fc7f613f2bbeada0d8cc09e5a58e0f59684bb6911", size = 221390, upload_time = "2024-11-19T17:06:07.818Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/c0/15c21556362c67f1155f3643a375d50ac67559b82c768e64e800a42a2577/xlsx2csv-0.8.4-py3-none-any.whl", hash = "sha256:52ab873fc7b2f2ca75d14aee8bd1985a9f5c1bcb3cc7b80df7a5d57a40a67473", size = 15904 }, + { url = "https://files.pythonhosted.org/packages/c4/c0/15c21556362c67f1155f3643a375d50ac67559b82c768e64e800a42a2577/xlsx2csv-0.8.4-py3-none-any.whl", hash = "sha256:52ab873fc7b2f2ca75d14aee8bd1985a9f5c1bcb3cc7b80df7a5d57a40a67473", size = 15904, upload_time = "2024-11-19T17:06:05.362Z" }, ] [[package]] name = "xlsxwriter" version = "3.2.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a7/47/7704bac42ac6fe1710ae099b70e6a1e68ed173ef14792b647808c357da43/xlsxwriter-3.2.5.tar.gz", hash = "sha256:7e88469d607cdc920151c0ab3ce9cf1a83992d4b7bc730c5ffdd1a12115a7dbe", size = 213306 } +sdist = { url = "https://files.pythonhosted.org/packages/a7/47/7704bac42ac6fe1710ae099b70e6a1e68ed173ef14792b647808c357da43/xlsxwriter-3.2.5.tar.gz", hash = "sha256:7e88469d607cdc920151c0ab3ce9cf1a83992d4b7bc730c5ffdd1a12115a7dbe", size = 213306, upload_time = "2025-06-17T08:59:14.619Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/34/a22e6664211f0c8879521328000bdcae9bf6dbafa94a923e531f6d5b3f73/xlsxwriter-3.2.5-py3-none-any.whl", hash = "sha256:4f4824234e1eaf9d95df9a8fe974585ff91d0f5e3d3f12ace5b71e443c1c6abd", size = 172347 }, + { url = "https://files.pythonhosted.org/packages/fa/34/a22e6664211f0c8879521328000bdcae9bf6dbafa94a923e531f6d5b3f73/xlsxwriter-3.2.5-py3-none-any.whl", hash = "sha256:4f4824234e1eaf9d95df9a8fe974585ff91d0f5e3d3f12ace5b71e443c1c6abd", size = 172347, upload_time = "2025-06-17T08:59:13.453Z" }, ] [[package]] name = "xlwt" version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/97/56a6f56ce44578a69343449aa5a0d98eefe04085d69da539f3034e2cd5c1/xlwt-1.3.0.tar.gz", hash = "sha256:c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88", size = 153929 } +sdist = { url = "https://files.pythonhosted.org/packages/06/97/56a6f56ce44578a69343449aa5a0d98eefe04085d69da539f3034e2cd5c1/xlwt-1.3.0.tar.gz", hash = "sha256:c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88", size = 153929, upload_time = "2017-08-22T06:47:16.498Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/44/48/def306413b25c3d01753603b1a222a011b8621aed27cd7f89cbc27e6b0f4/xlwt-1.3.0-py2.py3-none-any.whl", hash = "sha256:a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e", size = 99981 }, + { url = "https://files.pythonhosted.org/packages/44/48/def306413b25c3d01753603b1a222a011b8621aed27cd7f89cbc27e6b0f4/xlwt-1.3.0-py2.py3-none-any.whl", hash = "sha256:a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e", size = 99981, upload_time = "2017-08-22T06:47:15.281Z" }, ] From 938bf33a3c14990cc956041ef68c9e88fb53517c Mon Sep 17 00:00:00 2001 From: euronion Date: Tue, 23 Sep 2025 13:02:24 +0200 Subject: [PATCH 16/30] doc: Remove copy-pasta mistake from pypsa-docs --- mkdocs.yaml | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/mkdocs.yaml b/mkdocs.yaml index c20fb6bc..4304e194 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -41,11 +41,11 @@ theme: - navigation.tabs - navigation.tabs.sticky - navigation.sections - - navigation.tracking # Anchor tracking - - navigation.indexes # Section indexes + - navigation.tracking # Anchor tracking + - navigation.indexes # Section indexes - navigation.path - - navigation.top # Back to top button - # - navigation.foot + - navigation.top # Back to top button + # - navigation.foot - header.autohide - content.action.edit - content.action.view @@ -79,7 +79,7 @@ extra_javascript: - https://unpkg.com/mathjax@3/es5/tex-mml-chtml.js markdown_extensions: -# Callouts/ Admonitions + # Callouts/ Admonitions - admonition - pymdownx.details - pymdownx.superfences: @@ -89,32 +89,32 @@ markdown_extensions: format: !!python/name:pymdownx.superfences.fence_code_format - pymdownx.arithmatex: generic: true -# Footnotes + # Footnotes - footnotes -# Tabbed content + # Tabbed content - pymdownx.tabbed: - alternate_style: true # Abbreviations + alternate_style: true # Abbreviations - pymdownx.snippets: auto_append: - includes/abbreviations.md - abbr - attr_list - md_in_html - # Emojis + # Emojis - pymdownx.emoji: emoji_index: !!python/name:material.extensions.emoji.twemoji emoji_generator: !!python/name:material.extensions.emoji.to_svg - # Toctree with permalinks + # Toctree with permalinks + - toc: title: On this page permalink: true toc_depth: 3 - # Grids + # Grids - md_in_html - pymdownx.caret - pymdownx.tilde - plugins: - search - tags @@ -125,10 +125,6 @@ plugins: type: timeago timezone: Europe/Berlin enable_creation_date: true -- git-committers: - repository: PyPSA/PyPSA - branch: v1-docs # TODO: Change to master before merging - token: !!python/object/apply:os.getenv ["MKDOCS_GIT_COMMITTERS_APIKEY"] - argref: autolinks: - reference_prefix: ":octicons-git-pull-request-16:" @@ -138,7 +134,7 @@ plugins: font_family: Overpass background_color: "#292F36" -# Docstring generation + # Docstring generation - mkdocstrings: enabled: true default_handler: python @@ -167,7 +163,6 @@ plugins: show_if_no_docstring: true show_inheritance_diagram: true - hooks: - docs/assets/overrides/hooks/shortcodes.py From 1c0d014de4829c4010a9187e27af8edbe2dc46de Mon Sep 17 00:00:00 2001 From: euronion Date: Tue, 23 Sep 2025 13:02:37 +0200 Subject: [PATCH 17/30] doc: Use uv for RTD building --- .readthedocs.yaml | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/.readthedocs.yaml b/.readthedocs.yaml index 0906dd5c..bc7e897f 100644 --- a/.readthedocs.yaml +++ b/.readthedocs.yaml @@ -6,19 +6,16 @@ build: python: "3.13" jobs: pre_system_dependencies: - - git fetch --unshallow # Needed to get version tags - pre_install: - - pip install mkdocs-material + - git fetch --unshallow # Needed to get version tags + pre_create_environment: + - asdf plugin add uv + - asdf install uv latest + - asdf global uv latest + create_environment: + - uv venv "${READTHEDOCS_VIRTUALENV_PATH}" + install: + - UV_PROJECT_ENVIRONMENT="${READTHEDOCS_VIRTUALENV_PATH}" uv sync --frozen --group docs mkdocs: configuration: mkdocs.yaml # fail_on_warning: true # TODO: Enable - -python: - install: - - method: pip - path: . - extra_requirements: - - docs - - dev - - cartopy From 899d8fa35505d3e7ed0ff6f6ea207f537df3d631 Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Wed, 24 Sep 2025 10:30:24 +0200 Subject: [PATCH 18/30] code: modify target branch for ci triggering (#52) --- .github/workflows/ci.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index d177761d..b3364618 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -5,9 +5,9 @@ name: Technologydata prototype CI on: push: - branches: [ai-prototype] + branches: [prototype-2] pull_request: - branches: [ai-prototype] + branches: [prototype-2] jobs: test: From 6fc7dd4834358ea695d4db62c817a04e1f0ce310 Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Thu, 25 Sep 2025 15:34:56 +0200 Subject: [PATCH 19/30] Issue 42 harmonize units (#51) * code: ensure LHV and HHV have same units * code: add pre-commit changes * test: fix unit test * test: update unit test * test:ton to metric_ton * update doc * Update docs/user_guide/parameter.md Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> --------- Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> --- docs/user_guide/parameter.md | 2 +- src/technologydata/parameter.py | 24 ++++++++++++------------ test/test_parameter.py | 19 +++++++++++++++++++ 3 files changed, 32 insertions(+), 13 deletions(-) diff --git a/docs/user_guide/parameter.md b/docs/user_guide/parameter.md index 0b1576f7..bf778a2f 100644 --- a/docs/user_guide/parameter.md +++ b/docs/user_guide/parameter.md @@ -13,7 +13,7 @@ The `Parameter` class in `technologydata` encapsulates a value, its unit, proven ## Features -- **Value and Units**: Stores a numerical value (`magnitude`) and its associated units (`units`). Units are handled using `pint` and support custom currency units (e.g., `USD_2020/kW`). +- **Value and Units**: Stores a numerical value (`magnitude`) and its associated units (`units`). Units are handled using `pint` and support custom currency units (e.g., `USD_2020/kW`). The default `pint` units definition file is available [here](https://github.com/hgrecco/pint/blob/master/pint/default_en.txt) for reference. Be mindful of false unit-friends, e.g. `t = metric_ton = tonne != ton = US_ton` - **Currency Unit Convention**: Currency units must follow the pattern `XYZ_YYYY`, where `XYZ` is the 3-letter [ISO 4217](https://en.wikipedia.org/wiki/ISO_4217) currency code (e.g., `USD`, `EUR`, `CNY`) and `YYYY` is the 4-digit year (e.g., `USD_2020`). This allows for both currency and inflation adjustment. - **Carrier and Heating Value**: Optionally specify an energy carrier (e.g., `H2`) and a heating value type (`LHV` or `HHV`). - **Provenance and Notes**: Track the origin of the data and any additional notes. diff --git a/src/technologydata/parameter.py b/src/technologydata/parameter.py index f3748013..f3264133 100644 --- a/src/technologydata/parameter.py +++ b/src/technologydata/parameter.py @@ -23,16 +23,6 @@ import technologydata from technologydata.source_collection import SourceCollection -# from technologydata.utils.units import ( -# CURRENCY_UNIT_PATTERN, -# creg, -# extract_currency_units, -# get_conversion_rate, -# get_iso3_from_currency_code, -# hvreg, -# ureg, -# ) - logger = logging.getLogger(__name__) @@ -324,15 +314,25 @@ def change_heating_value(self, to_heating_value: str) -> Self: from technologydata.constants import EnergyDensityHHV, EnergyDensityLHV # Create a dictionary of heating value ratios based on energy densities + # The units of heating values are harmonized to "hv_units". + # hv_units is the units attribute of the first element of EnergyDensityLHV hv_ratios = dict() + + # Access the key of the first element of the EnergyDensityLHV dictionary + first_pair_key = next(iter(EnergyDensityLHV)) + + # Get the units attribute of the first element of the EnergyDensityLHV dictionary + hv_units = str(EnergyDensityLHV[first_pair_key].units) + lhvs = { - str(technologydata.creg.get_dimensionality(k)): v + str(technologydata.creg.get_dimensionality(k)): v.to(hv_units) for k, v in EnergyDensityLHV.items() } hhvs = { - str(technologydata.creg.get_dimensionality(k)): v + str(technologydata.creg.get_dimensionality(k)): v.to(hv_units) for k, v in EnergyDensityHHV.items() } + for dimension in self._pint_carrier.dimensionality.keys(): if dimension in lhvs and dimension in hhvs: hv_ratios[dimension] = ( diff --git a/test/test_parameter.py b/test/test_parameter.py index 99ed45e2..e9378e53 100644 --- a/test/test_parameter.py +++ b/test/test_parameter.py @@ -12,6 +12,7 @@ import pytest import technologydata +from technologydata.constants import EnergyDensityLHV # from technologydata.utils.units import extract_currency_units, ureg @@ -689,6 +690,24 @@ def test_change_heating_value_ch4_hhv_to_lhv(self) -> None: assert p2.carrier == "methane" assert p2.units == "kilowatt_hour" + def test_change_heating_value_ch4_hhv_to_lhv_adapt_units(self) -> None: + """Test HHV to LHV conversion for CH4, where HHV has a different unit than LHV.""" + p = technologydata.Parameter( + magnitude=11.1, + units="kilowatt_hour", + carrier="methane", + heating_value="higher_heating_value", + ) + # Note: metric_ton = 1e3 * kilogram = t = tonne + # Note: ton = 2e3 * pound = _ = short_ton + EnergyDensityLHV["methane"].units = "MJ/metric_ton" + EnergyDensityLHV["methane"].magnitude = 50000 + p2 = p.change_heating_value("lower_heating_value") + assert p2.units == "kilowatt_hour" + assert pytest.approx(p2.magnitude) == 10.0 + assert p2.heating_value == "lower_heating_value" + assert p2.carrier == "methane" + def test_change_heating_value_no_carrier_in_units(self) -> None: """Test conversion when carrier does not appear in units (should treat as 1 appearance).""" p = technologydata.Parameter( From 68169979cce71d9ccb0d413b8d4dd0014d596c2a Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Wed, 8 Oct 2025 14:40:20 +0200 Subject: [PATCH 20/30] Turn Source.store_in_wayback into a private method (#63) * code: store_in_wayback private * doc: update class-diagram.puml --- docs/user_guide/class-diagram.puml | 4 ++-- src/technologydata/source.py | 8 ++++---- test/test_source.py | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/user_guide/class-diagram.puml b/docs/user_guide/class-diagram.puml index 403c59d3..0412cafc 100644 --- a/docs/user_guide/class-diagram.puml +++ b/docs/user_guide/class-diagram.puml @@ -14,7 +14,7 @@ class Source { - url_date_archive: str + ensure_in_wayback() - + store_in_wayback() + + _store_in_wayback() + retrieve_from_wayback() + _get_save_path() + _get_content_type() @@ -24,7 +24,7 @@ class Source { + __str__(other) } -note right of Source::store_in_wayback +note right of Source::_store_in_wayback Stores the source in the Internet Archive's Wayback Machine, to keep it accessible in the future. end note diff --git a/src/technologydata/source.py b/src/technologydata/source.py index c7e3643a..c18a76c8 100644 --- a/src/technologydata/source.py +++ b/src/technologydata/source.py @@ -8,7 +8,7 @@ Examples -------- >>> src = Source(title="Example Source", authors="The Authors") ->>> src.store_in_wayback() +>>> src._store_in_wayback() >>> src.retrieve_from_wayback() """ @@ -172,7 +172,7 @@ def ensure_in_wayback(self) -> None: ) if self.url_archive is None and self.url_date_archive is None: - archived_info = self.store_in_wayback(self.url) + archived_info = self._store_in_wayback(self.url) if archived_info is not None: archived_url, new_capture_flag, timestamp = archived_info if new_capture_flag: @@ -187,7 +187,7 @@ def ensure_in_wayback(self) -> None: self.url_archive = archived_url @staticmethod - def store_in_wayback( + def _store_in_wayback( url_to_archive: str, ) -> tuple[Any, bool | None, str | None] | None: """ @@ -215,7 +215,7 @@ def store_in_wayback( -------- >>> from technologydata import Source >>> some_url = "some_url" - >>> archived_info = Source.store_in_wayback(some_url) + >>> archived_info = Source._store_in_wayback(some_url) """ archive_url = savepagenow.capture_or_cache(url_to_archive) diff --git a/test/test_source.py b/test/test_source.py index 5522cf13..05985510 100644 --- a/test/test_source.py +++ b/test/test_source.py @@ -158,7 +158,7 @@ def test_store_in_wayback(self) -> None: url_to_archive = ( "https://www.engineeringtoolbox.com/co2-emission-fuels-d_1085.html" ) - archived_info = technologydata.Source.store_in_wayback(url_to_archive) + archived_info = technologydata.Source._store_in_wayback(url_to_archive) # Check if archived_info is None assert archived_info is not None, "archived_info should not be None" From 3f1027a3717d224141ab3cf1647bf74313298926 Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Fri, 10 Oct 2025 18:15:31 +0200 Subject: [PATCH 21/30] update from_json and to_json methods for TechnologyCollection and SourceCollection (#62) * code: update tech json file and from_json * code: new version of from_json * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * update tests --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- docs/user_guide/class-diagram.puml | 3 - src/technologydata/parameter.py | 44 +-- src/technologydata/source_collection.py | 47 ++- src/technologydata/technology.py | 44 --- src/technologydata/technology_collection.py | 24 +- .../sources.json | 0 .../technologies.json | 302 ++++++++++++++++++ .../technologies.json | 266 --------------- .../technologies.json | 156 --------- test/test_datapackage.py | 2 +- test/test_source_collection.py | 26 +- test/test_technology_collection.py | 38 ++- 12 files changed, 388 insertions(+), 564 deletions(-) rename test/test_data/{solar_photovoltaics_example_03 => solar_photovoltaics_example}/sources.json (100%) create mode 100644 test/test_data/solar_photovoltaics_example/technologies.json delete mode 100644 test/test_data/solar_photovoltaics_example_03/technologies.json delete mode 100644 test/test_data/solar_photovoltaics_example_04/technologies.json diff --git a/docs/user_guide/class-diagram.puml b/docs/user_guide/class-diagram.puml index 0412cafc..a45a6915 100644 --- a/docs/user_guide/class-diagram.puml +++ b/docs/user_guide/class-diagram.puml @@ -50,7 +50,6 @@ class Parameter { + change_currency() + change_heating_value() + to() - + from_dict(): Parameter + __add__(other: Parameter) + __sub__(other: Parameter) + __mul__(other: Parameter) @@ -87,7 +86,6 @@ class Technology { + __getitem__() + __setitem__() - + from_dict(): Technology + adjust_currency(): Technology // or inplace + adjust_region(): Technology // or inplace + adjust_scale(): Technology // or inplace @@ -133,7 +131,6 @@ end note class TechnologyCollection { - technologies: Iterable + get(**criteria): Technology | TechnologyCollection | None - + from_dict(): TechnologyCollection + to_json(): str + to_csv(): str + to_dataframe(): pd.DataFrame diff --git a/src/technologydata/parameter.py b/src/technologydata/parameter.py index f3264133..233a814a 100644 --- a/src/technologydata/parameter.py +++ b/src/technologydata/parameter.py @@ -15,7 +15,7 @@ """ import logging -from typing import Annotated, Any, Self +from typing import Annotated, Self import pint from pydantic import BaseModel, Field, PrivateAttr @@ -670,45 +670,3 @@ def __pow__(self, exponent: float | int) -> Self: note=self.note, sources=self.sources, ) - - @classmethod - def from_dict(cls, data: dict[str, Any]) -> Self: - """ - Create an instance of the class from a dictionary. - - Parameters - ---------- - cls : type - The class to instantiate. - data : dict - A dictionary containing the data to initialize the class instance. Expected keys include: - - "magnitude" - - "units" - - "carrier" - - "heating_value" - - "provenance" - - "note" - - "sources" (list): A list of source data dictionaries, to be converted into a SourceCollection. - - Returns - ------- - Parameter - An instance of the class initialized with the provided data. - - Notes - ----- - This method converts the "sources" list into a `SourceCollection` using `SourceCollection.from_json()`. - - """ - # Convert sources list into SourceCollection - sources_data = data.get("sources", []) - sources = SourceCollection.from_json(from_str=sources_data) - return cls( - magnitude=data.get("magnitude"), - units=data.get("units"), - carrier=data.get("carrier"), - heating_value=data.get("heating_value"), - provenance=data.get("provenance"), - note=data.get("note"), - sources=sources, - ) diff --git a/src/technologydata/source_collection.py b/src/technologydata/source_collection.py index 31c4e7b4..f989f291 100644 --- a/src/technologydata/source_collection.py +++ b/src/technologydata/source_collection.py @@ -8,11 +8,13 @@ import json import pathlib import re +import typing from collections.abc import Iterator -from typing import Annotated, Any, Self +from typing import Annotated, Self import pandas import pydantic +import pydantic_core from technologydata.source import Source @@ -206,44 +208,31 @@ def to_json( @classmethod def from_json( cls, - file_path: pathlib.Path | str | None = None, - from_str: list[dict[str, Any]] | None = None, + file_path: pathlib.Path | str, ) -> Self: """ Import the SourceCollection from a JSON file. Parameters ---------- - file_path : Optional[pathlib.Path | str] + file_path : pathlib.Path | str The path to the JSON file to be imported. - from_str : Optional[list] - The list of dictionaries with Source fields. """ - if file_path is None and from_str is None: - raise ValueError( - "Both file_path and from_str are None. One must be provided." - ) + if isinstance(file_path, (pathlib.Path | str)): + file_path = pathlib.Path(file_path) + else: + raise TypeError("file_path must be a pathlib.Path or str") json_data = None # Load data from file if file_path is provided - if file_path is not None: - if not isinstance(file_path, (pathlib.Path | str)): - raise TypeError( - f"file_path must be a pathlib.Path or str, but got {type(file_path)}" - ) - path = pathlib.Path(file_path) - with path.open(encoding="utf-8") as jsonfile: - json_data = json.load(jsonfile) - - # Override json_data if from_str is provided - if from_str is not None: - if not isinstance(from_str, list): - raise TypeError(f"from_str must be a list, but got {type(from_str)}") - json_data = {"sources": [Source(**source) for source in from_str]} - - if json_data is None: - raise ValueError("No data to load. Provide either a file_path or from_str.") - - return cls(**json_data) + with open(file_path, encoding="utf-8") as jsonfile: + json_data = jsonfile.read() + + # pydantic_core.from_json return Any. Therefore, typing.cast makes sure that + # the output is indeed a TechnologyCollection + return typing.cast( + SourceCollection, + cls.model_validate(pydantic_core.from_json(json_data, allow_partial=True)), + ) diff --git a/src/technologydata/technology.py b/src/technologydata/technology.py index 771b0e7b..c4655a2e 100644 --- a/src/technologydata/technology.py +++ b/src/technologydata/technology.py @@ -164,47 +164,3 @@ def adjust_scale(self, scaling_factor: float) -> Self: """ # Placeholder: implement scaling logic return self - - @classmethod - def from_dict(cls, data: dict[str, Any]) -> Self: - """ - Create an instance of the class from a dictionary. - - Parameters - ---------- - cls : type - The class to instantiate. - data : dict - A dictionary containing the data to initialize the class instance. - Expected keys include: - - "region" (str): The region associated with the instance. - - "case" (str): The case identifier. - - "year" (int): The year value. - - "name" (str): The name of the instance. - - "detailed_technology" (str): Details about the technology. - - "parameters" (dict): A dictionary where each key maps to a parameter data - dictionary, which will be converted to a Parameter object. - - Returns - ------- - instance : cls - An instance of the class initialized with the provided data. - - Notes - ----- - This method processes the "parameters" field in the input data by converting each - parameter dictionary into a Parameter object using `Parameter.from_dict()`. It then - constructs and returns an instance of the class with all the provided attributes. - - """ - params = {} - for key, param_data in data.get("parameters", {}).items(): - params[key] = Parameter.from_dict(param_data) - return cls( - region=data["region"], - case=data["case"], - year=data["year"], - name=data["name"], - detailed_technology=data["detailed_technology"], - parameters=params, - ) diff --git a/src/technologydata/technology_collection.py b/src/technologydata/technology_collection.py index 85dd3f61..cb66361f 100644 --- a/src/technologydata/technology_collection.py +++ b/src/technologydata/technology_collection.py @@ -8,11 +8,13 @@ import json import pathlib import re +import typing from collections.abc import Iterator from typing import Annotated, Self import pandas import pydantic +import pydantic_core from technologydata.technology import Technology @@ -219,20 +221,18 @@ def from_json(cls, file_path: pathlib.Path | str) -> Self: TypeError If `file_path` is not a pathlib.Path or str. - Notes - ----- - This method reads the JSON data from the specified file, creates `Technology` objects - for each item in the JSON list using `Technology.from_dict()`, and returns a new - `TechnologyCollection` containing these objects. - """ - if isinstance(file_path, pathlib.Path | str): + if isinstance(file_path, (pathlib.Path | str)): file_path = pathlib.Path(file_path) else: raise TypeError("file_path must be a pathlib.Path or str") + with open(file_path, encoding="utf-8") as jsonfile: - json_data = json.load(jsonfile) - techs = [] - for item in json_data: - techs.append(Technology.from_dict(item)) - return cls(technologies=techs) + json_data = jsonfile.read() + + # pydantic_core.from_json return Any. Therefore, typing.cast makes sure that + # the output is indeed a TechnologyCollection + return typing.cast( + TechnologyCollection, + cls.model_validate(pydantic_core.from_json(json_data, allow_partial=True)), + ) diff --git a/test/test_data/solar_photovoltaics_example_03/sources.json b/test/test_data/solar_photovoltaics_example/sources.json similarity index 100% rename from test/test_data/solar_photovoltaics_example_03/sources.json rename to test/test_data/solar_photovoltaics_example/sources.json diff --git a/test/test_data/solar_photovoltaics_example/technologies.json b/test/test_data/solar_photovoltaics_example/technologies.json new file mode 100644 index 00000000..089e7901 --- /dev/null +++ b/test/test_data/solar_photovoltaics_example/technologies.json @@ -0,0 +1,302 @@ +{ + "technologies": [ + { + "name": "Solar photovoltaics", + "region": "DEU", + "year": 2022, + "parameters": { + "capacity": { + "magnitude": 1.0, + "units": "megawatt", + "carrier": "electricity", + "heating_value": null, + "provenance": "Model calculation", + "note": "Average capacity factor of 22% assumed", + "sources": { + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + } + }, + "investment": { + "magnitude": 500, + "units": "EUR_2022 / kilowatt", + "carrier": "1 / electricity", + "heating_value": null, + "provenance": "Industry report", + "note": "Average overnight cost", + "sources": { + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + } + }, + "specific_investment": { + "magnitude": 0.95, + "units": "EUR_2022 / watt", + "carrier": "1 / electricity", + "heating_value": null, + "provenance": "Derived", + "note": "Calculated from investment/capacity", + "sources": { + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + } + }, + "lifetime": { + "magnitude": 30, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Manufacturer specification", + "note": "With performance degradation guarantee", + "sources": { + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + } + }, + "wacc": { + "magnitude": 5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Financial analysis", + "note": "Nominal weighted average cost of capital", + "sources": { + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + } + } + }, + "case": "example-scenario", + "detailed_technology": "Si-HC" + }, + { + "name": "Solar photovoltaics", + "region": "DEU", + "year": 2022, + "parameters": { + "capacity": { + "magnitude": 3.0, + "units": "megawatt", + "carrier": "electricity", + "heating_value": null, + "provenance": "Model calculation", + "note": "Average capacity factor of 25% assumed", + "sources": { + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + } + }, + "investment": { + "magnitude": 350, + "units": "EUR_2022 / kilowatt", + "carrier": "1 / electricity", + "heating_value": null, + "provenance": "Industry report", + "note": "Average overnight cost", + "sources": { + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + } + }, + "specific_investment": { + "magnitude": 0.92, + "units": "EUR_2022 / watt", + "carrier": "1 / electricity", + "heating_value": null, + "provenance": "Derived", + "note": "Calculated from investment/capacity", + "sources": { + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + } + }, + "lifetime": { + "magnitude": 40, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Manufacturer specification", + "note": "With performance degradation guarantee", + "sources": { + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + } + }, + "wacc": { + "magnitude": 2, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Financial analysis", + "note": "Nominal weighted average cost of capital", + "sources": { + "sources": [ + { + "title": "atb_nrel", + "authors": "NREL/ATB", + "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "url_date": "2025-05-22 15:08:02", + "url_date_archive": "2025-05-22 15:08:02" + }, + { + "title": "tech_data_generation", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/3273/download", + "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "url_date": "2025-05-06 16:02:04", + "url_date_archive": "2025-05-06 16:02:04" + } + ] + } + } + }, + "case": "example-project", + "detailed_technology": "Si-HC" + } + ] +} diff --git a/test/test_data/solar_photovoltaics_example_03/technologies.json b/test/test_data/solar_photovoltaics_example_03/technologies.json deleted file mode 100644 index f8acfc7d..00000000 --- a/test/test_data/solar_photovoltaics_example_03/technologies.json +++ /dev/null @@ -1,266 +0,0 @@ -[ - { - "region": "DEU", - "case": "example-scenario", - "year": 2022, - "name": "Solar photovoltaics", - "detailed_technology": "Si-HC", - "parameters": { - "capacity": { - "magnitude": 1.0, - "units": "MW", - "carrier": "electricity", - "provenance": "Model calculation", - "note": "Average capacity factor of 22% assumed", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" - }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] - }, - "investment": { - "magnitude": 500, - "units": "EUR_2022/kW", - "carrier": "1/electricity", - "provenance": "Industry report", - "note": "Average overnight cost", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" - }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] - }, - "specific_investment": { - "magnitude": 0.95, - "units": "EUR_2022/W", - "carrier": "1/electricity", - "provenance": "Derived", - "note": "Calculated from investment/capacity", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" - }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] - }, - "lifetime": { - "magnitude": 30, - "units": "years", - "provenance": "Manufacturer specification", - "note": "With performance degradation guarantee", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" - }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] - }, - "wacc": { - "magnitude": 5, - "units": "%", - "provenance": "Financial analysis", - "note": "Nominal weighted average cost of capital", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" - }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] - } - } - }, - { - "region": "DEU", - "case": "example-project", - "year": 2022, - "name": "Solar photovoltaics", - "detailed_technology": "Si-HC", - "parameters": { - "capacity": { - "magnitude": 1.0, - "units": "MW", - "carrier": "electricity", - "provenance": "Model calculation", - "note": "Average capacity factor of 25% assumed", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" - }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] - } - }, - "investment": { - "magnitude": 350, - "units": "EUR_2022/kW", - "carrier": "1/electricity", - "provenance": "Industry report", - "note": "Average overnight cost for another tech", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" - }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] - }, - "specific_investment": { - "magnitude": 0.95, - "units": "EUR_2022/W", - "carrier": "1/electricity", - "provenance": "Derived", - "note": "Calculated from investment/capacity", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" - }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] - }, - "lifetime": { - "magnitude": 30, - "units": "years", - "provenance": "Manufacturer specification", - "note": "With performance degradation guarantee", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" - }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] - }, - "wacc": { - "magnitude": 5, - "units": "%", - "provenance": "Financial analysis", - "note": "Nominal weighted average cost of capital", - "sources": [ - { - "title": "atb_nrel", - "authors": "NREL/ATB", - "url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "url_date": "2025-05-22 15:08:02", - "url_date_archive": "2025-05-22 15:08:02" - }, - { - "title": "tech_data_generation", - "authors": "Danish Energy Agency", - "url": "https://ens.dk/media/3273/download", - "url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "url_date": "2025-05-06 16:02:04", - "url_date_archive": "2025-05-06 16:02:04" - } - ] - } - } -] diff --git a/test/test_data/solar_photovoltaics_example_04/technologies.json b/test/test_data/solar_photovoltaics_example_04/technologies.json deleted file mode 100644 index dfa7eb50..00000000 --- a/test/test_data/solar_photovoltaics_example_04/technologies.json +++ /dev/null @@ -1,156 +0,0 @@ -[ - { - "region": "DEU", - "case": "example-scenario", - "year": 2022, - "name": "Solar photovoltaics", - "detailed_technology": "Si-HC", - "parameters": { - "capacity": { - "magnitude": 1, - "units": "MW", - "carrier": "electricity", - "provenance": "Model calculation", - "note": "Average capacity factor of 22% assumed", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "investment": { - "magnitude": 500, - "units": "EUR_2022/kW", - "carrier": "1/electricity", - "provenance": "Industry report", - "note": "Average overnight cost", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "specific_investment": { - "magnitude": 0.95, - "units": "EUR_2022/W", - "carrier": "1/electricity", - "provenance": "Derived", - "note": "Calculated from investment/capacity", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "lifetime": { - "magnitude": 30, - "units": "years", - "provenance": "Manufacturer specification", - "note": "With performance degradation guarantee", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "wacc": { - "magnitude": 5, - "units": "%", - "provenance": "Financial analysis", - "note": "Nominal weighted average cost of capital", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - } - } - }, - { - "region": "DEU", - "case": "example-project", - "year": 2022, - "name": "Solar photovoltaics", - "detailed_technology": "Si-HC", - "parameters": { - "capacity": { - "magnitude": 1.0, - "units": "MW", - "carrier": "electricity", - "provenance": "Model calculation", - "note": "Average capacity factor of 25% assumed", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "investment": { - "magnitude": 350, - "units": "EUR_2022/kW", - "carrier": "1/electricity", - "provenance": "Industry report", - "note": "Average overnight cost for another tech", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "specific_investment": { - "magnitude": 0.95, - "units": "EUR_2022/W", - "carrier": "1/electricity", - "provenance": "Derived", - "note": "Calculated from investment/capacity", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "lifetime": { - "magnitude": 30, - "units": "years", - "provenance": "Manufacturer specification", - "note": "With performance degradation guarantee", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - }, - "wacc": { - "magnitude": 5, - "units": "%", - "provenance": "Financial analysis", - "note": "Nominal weighted average cost of capital", - "sources": [ - { - "title": "example04", - "authors": "Open Energy Transition gGmbH", - "url": "https://openenergytransition.org/outputs.html" - } - ] - } - } - } -] diff --git a/test/test_datapackage.py b/test/test_datapackage.py index d1611fe9..ce345e87 100644 --- a/test/test_datapackage.py +++ b/test/test_datapackage.py @@ -20,7 +20,7 @@ def test_get_source_collection(self) -> None: path_cwd, "test", "test_data", - "solar_photovoltaics_example_03", + "solar_photovoltaics_example", "technologies.json", ) diff --git a/test/test_source_collection.py b/test/test_source_collection.py index 62e95a42..f8503959 100644 --- a/test/test_source_collection.py +++ b/test/test_source_collection.py @@ -236,7 +236,7 @@ def test_from_json(self) -> None: path_cwd, "test", "test_data", - "solar_photovoltaics_example_03", + "solar_photovoltaics_example", "sources.json", ) source_collection = technologydata.SourceCollection.from_json( @@ -245,6 +245,27 @@ def test_from_json(self) -> None: assert isinstance(source_collection, technologydata.SourceCollection) assert len(source_collection) == 2 + def test_from_json_to_json(self) -> None: + """Check whether reading with from_json and exporting with to_json yields the same file.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example", + "sources.json", + ) + source_collection = technologydata.SourceCollection.from_json(input_file) + output_file = pathlib.Path("to_json_test.json") + schema_file = pathlib.Path(path_cwd, "to_json_test.schema.json") + source_collection.to_json(output_file) + # Read files and strip trailing whitespace/newlines before comparing + with open(input_file) as f1, open(output_file) as f2: + assert f1.read().rstrip() == f2.read().rstrip(), "Files are not identical" + assert output_file.is_file() + assert schema_file.is_file() + output_file.unlink(missing_ok=True) + schema_file.unlink(missing_ok=True) + @pytest.mark.parametrize( "title_pattern, authors_pattern", [["ATB", "nrel"], ["TECH_DATA", "danish"]], @@ -255,10 +276,9 @@ def test_get(self, title_pattern: str, authors_pattern: str) -> None: path_cwd, "test", "test_data", - "solar_photovoltaics_example_03", + "solar_photovoltaics_example", "sources.json", ) - source_collection = technologydata.SourceCollection.from_json( file_path=input_file ) diff --git a/test/test_technology_collection.py b/test/test_technology_collection.py index 2c129f9e..89e94fd3 100644 --- a/test/test_technology_collection.py +++ b/test/test_technology_collection.py @@ -23,7 +23,7 @@ def test_to_csv(self) -> None: path_cwd, "test", "test_data", - "solar_photovoltaics_example_03", + "solar_photovoltaics_example", "technologies.json", ) technology_collection = technologydata.TechnologyCollection.from_json( @@ -40,7 +40,7 @@ def test_to_dataframe(self) -> None: path_cwd, "test", "test_data", - "solar_photovoltaics_example_03", + "solar_photovoltaics_example", "technologies.json", ) technology_collection = technologydata.TechnologyCollection.from_json( @@ -49,12 +49,12 @@ def test_to_dataframe(self) -> None: assert isinstance(technology_collection.to_dataframe(), pandas.DataFrame) def test_to_json(self) -> None: - """Check if the example technology collection is exported to JSON.""" + """Check if to_json works as expected.""" input_file = pathlib.Path( path_cwd, "test", "test_data", - "solar_photovoltaics_example_03", + "solar_photovoltaics_example", "technologies.json", ) technology_collection = technologydata.TechnologyCollection.from_json( @@ -69,12 +69,12 @@ def test_to_json(self) -> None: schema_file.unlink(missing_ok=True) def test_from_json(self) -> None: - """Check if the example technology collection is imported from JSON.""" + """Check if from_json works as expected.""" input_file = pathlib.Path( path_cwd, "test", "test_data", - "solar_photovoltaics_example_03", + "solar_photovoltaics_example", "technologies.json", ) technology_collection = technologydata.TechnologyCollection.from_json( @@ -83,6 +83,30 @@ def test_from_json(self) -> None: assert isinstance(technology_collection, technologydata.TechnologyCollection) assert len(technology_collection) == 2 + def test_from_json_to_json(self) -> None: + """Check whether reading with from_json and exporting with to_json yields the same file.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example", + "technologies.json", + ) + technology_collection = technologydata.TechnologyCollection.from_json( + input_file + ) + output_file = pathlib.Path("to_json_test.json") + schema_file = pathlib.Path(path_cwd, "to_json_test.schema.json") + technology_collection.to_json(output_file) + + # Read files and strip trailing whitespace/newlines before comparing + with open(input_file) as f1, open(output_file) as f2: + assert f1.read().rstrip() == f2.read().rstrip(), "Files are not identical" + assert output_file.is_file() + assert schema_file.is_file() + output_file.unlink(missing_ok=True) + schema_file.unlink(missing_ok=True) + @pytest.mark.parametrize( "name, region, year, case, detailed_technology", [ @@ -98,7 +122,7 @@ def test_get( path_cwd, "test", "test_data", - "solar_photovoltaics_example_03", + "solar_photovoltaics_example", "technologies.json", ) technologies_collection = technologydata.TechnologyCollection.from_json( From 9e21b52b35fc7b80434b4b1870e7c2848219bbfa Mon Sep 17 00:00:00 2001 From: Johannes HAMPP <42553970+euronion@users.noreply.github.com> Date: Mon, 20 Oct 2025 10:33:06 +0200 Subject: [PATCH 22/30] code: Reorder Technology attributes (#66) --- src/technologydata/technology.py | 16 ++++++++-------- .../technologies.json | 12 ++++++------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/technologydata/technology.py b/src/technologydata/technology.py index c4655a2e..3ecaaf76 100644 --- a/src/technologydata/technology.py +++ b/src/technologydata/technology.py @@ -22,30 +22,30 @@ class Technology(pydantic.BaseModel): # type: ignore ---------- name : str Name of the technology. + detailed_technology : str + More detailed technology name. + case : str + Case or scenario identifier. region : str Region identifier. year : int Year of the data. parameters : Dict[str, Parameter] Dictionary of parameter names to Parameter objects. - case : str - Case or scenario identifier. - detailed_technology : str - More detailed technology name. """ name: Annotated[str, pydantic.Field(description="Name of the technology.")] + detailed_technology: Annotated[ + str, pydantic.Field(description="Detailed technology name.") + ] + case: Annotated[str, pydantic.Field(description="Case or scenario identifier.")] region: Annotated[str, pydantic.Field(description="Region identifier.")] year: Annotated[int, pydantic.Field(description="Year of the data.")] parameters: Annotated[ dict[str, Parameter], pydantic.Field(default_factory=dict, description="Parameters."), ] - case: Annotated[str, pydantic.Field(description="Case or scenario identifier.")] - detailed_technology: Annotated[ - str, pydantic.Field(description="Detailed technology name.") - ] def __getitem__(self, key: str) -> Parameter: """ diff --git a/test/test_data/solar_photovoltaics_example/technologies.json b/test/test_data/solar_photovoltaics_example/technologies.json index 089e7901..4288346a 100644 --- a/test/test_data/solar_photovoltaics_example/technologies.json +++ b/test/test_data/solar_photovoltaics_example/technologies.json @@ -2,6 +2,8 @@ "technologies": [ { "name": "Solar photovoltaics", + "detailed_technology": "Si-HC", + "case": "example-scenario", "region": "DEU", "year": 2022, "parameters": { @@ -145,12 +147,12 @@ ] } } - }, - "case": "example-scenario", - "detailed_technology": "Si-HC" + } }, { "name": "Solar photovoltaics", + "detailed_technology": "Si-HC", + "case": "example-project", "region": "DEU", "year": 2022, "parameters": { @@ -294,9 +296,7 @@ ] } } - }, - "case": "example-project", - "detailed_technology": "Si-HC" + } } ] } From c9b39baf26546d16fddc50cd1d3b58d771c93836 Mon Sep 17 00:00:00 2001 From: Johannes HAMPP <42553970+euronion@users.noreply.github.com> Date: Tue, 28 Oct 2025 14:49:57 +0100 Subject: [PATCH 23/30] 31 change currency technology collection (#69) * code: Add to_currency for Technology and TechnologyCollection * code: Rename adjust_currency to to_currency for Parameter * doc: Update class diagramm * doc: Add simple docs for to_currency methods * code: fix mypy comments and minor static typing issue --------- Co-authored-by: Fabrizio Finozzi --- docs/user_guide/class-diagram.puml | 5 +- docs/user_guide/parameter.md | 45 +++- src/technologydata/parameter.py | 18 +- src/technologydata/technology.py | 38 ++- src/technologydata/technology_collection.py | 42 +++ test/test_parameter.py | 28 +- test/test_technology.py | 271 ++++++++++++++++++++ test/test_technology_collection.py | 107 ++++++++ 8 files changed, 520 insertions(+), 34 deletions(-) create mode 100644 test/test_technology.py diff --git a/docs/user_guide/class-diagram.puml b/docs/user_guide/class-diagram.puml index a45a6915..20dac56c 100644 --- a/docs/user_guide/class-diagram.puml +++ b/docs/user_guide/class-diagram.puml @@ -47,7 +47,7 @@ class Parameter { + _update_pint_attributes() + _check_parameter_compatibility() - + change_currency() + + to_currency() + change_heating_value() + to() + __add__(other: Parameter) @@ -86,7 +86,7 @@ class Technology { + __getitem__() + __setitem__() - + adjust_currency(): Technology // or inplace + + to_currency(): Technology + adjust_region(): Technology // or inplace + adjust_scale(): Technology // or inplace + calculate_EAC(): Parameter // or inplace @@ -131,6 +131,7 @@ end note class TechnologyCollection { - technologies: Iterable + get(**criteria): Technology | TechnologyCollection | None + + to_currency(): TechnologyCollection + to_json(): str + to_csv(): str + to_dataframe(): pd.DataFrame diff --git a/docs/user_guide/parameter.md b/docs/user_guide/parameter.md index bf778a2f..5a51ca3b 100644 --- a/docs/user_guide/parameter.md +++ b/docs/user_guide/parameter.md @@ -19,7 +19,7 @@ The `Parameter` class in `technologydata` encapsulates a value, its unit, proven - **Provenance and Notes**: Track the origin of the data and any additional notes. - **Sources**: Attach a `SourceCollection` of references for traceability. - **Unit Conversion**: Convert between compatible units (excluding currency conversion) using `.to()`. -- **Currency/Inflation Adjustment**: Convert between currencies and adjust for inflation using `.change_currency()`. +- **Currency/Inflation Adjustment**: Convert between currencies and adjust for inflation using `.to_currency()`. - **Arithmetic Operations**: Supports addition, subtraction, multiplication, and division with other `Parameter` objects, with compatibility checks for carrier and heating value. **Note:** Some operations will fail if heating values or carriers are incompatible, raising a `ValueError`. ## Usage Examples @@ -59,11 +59,48 @@ converted = param.to("USD_2020 / megawatt") ```python # Convert to EUR_2023 with inflation adjustment for Germany, using World Bank data -euro_param = param.change_currency("EUR_2023", "DEU", source="worldbank") +euro_param = param.to_currency("EUR_2023", "DEU", source="worldbank") >>> print(euro_param.magnitude, euro_param.units) 950.0 EUR_2023 / kilowatt ``` +Currency conversion and infation adjustment are also available for `Technology` and `TechnologyCollection` objects. +This allows to quickly adjust and harmonise the currency of all parameters in a technology or collection. + +```python +# for a Technology +from technologydata.technology import Technology +tech = Technology( + name="Example Tech", + region="DEU", + parameters={"cost": param} +) +converted_tech = tech.to_currency("USD_2020", source="worldbank") +>>> print(converted_tech.parameters["cost"].units) +USD_2020 / kilowatt + +# and for a TechnologyCollection +from technologydata.technology_collection import TechnologyCollection +tech_collection = TechnologyCollection(technologies=[tech]) +converted_collection = tech_collection.to_currency("USD_2020", source="worldbank") +>>> print(converted_collection.technologies[0].parameters["cost"].units) +USD_2020 / kilowatt +``` + +Compared to the `to_currency()` method of the `Parameter` class, the `to_currency()` methods of `Technology` and `TechnologyCollection` do not require specifying a country for inflation adjustment. +By default the `region` field of the `Technology` object or the `Technology` objects in the `TechnologyCollection` are used for inflation adjustment. +If the value of the `region` field should not be used or is not suitable, because e.g. it is not a valid ISO 3166 alpha-3 country code, the optional `overwrite_country` argument can be used to specify a different country code for inflation adjustment. + +```python +>>> print(tech.region) +DEU +converted_tech = tech.to_currency("USD_2020") # uses tech.region (DEU) for inflation adjustment + +converted_tech = tech.to_currency("USD_2020", overwrite_country="FRA") # uses FRA for inflation adjustment +>>> print(converted_tech.region) # the region remains unchanged +DEU +``` + ### Arithmetic Operations ```python @@ -84,7 +121,7 @@ param + param_hhv ## Notes on Currency Conversion and pydeflate - **pydeflate Integration**: Currency and inflation adjustments are performed using the `pydeflate` package. This package uses data from either the World Bank or the International Monetary Fund. In order to use `pydeflate` with currency codes, we make some opinioated assumptions about the mapping from currency codes to countries which should in most cases be correct, but may not always be accurate for all currencies or years. -- **Country Mapping**: To see which country was used for a given currency code during conversion, inspect the mapping in `pydeflate` or use the helper functions in `technologydata.utils.units` (e.g., `get_iso3_from_currency_code`). The country code you provide to `.change_currency()` determines the inflation adjustment, but the mapping from currency code to country is handled internally by pydeflate and may be checked in its documentation or by printing the mapping used in your environment. +- **Country Mapping**: To see which country was used for a given currency code during conversion, inspect the mapping in `pydeflate` or use the helper functions in `technologydata.utils.units` (e.g., `get_iso3_from_currency_code`). The country code you provide to `.to_currency()` determines the inflation adjustment, but the mapping from currency code to country is handled internally by pydeflate and may be checked in its documentation or by printing the mapping used in your environment. - **Data availability**: Since we use World Bank or IMF data, the availability of currency conversion data may vary by year and currency, depending on the most recent publication. World Bank data is based on the [World Bank DataBank](https://databank.worldbank.org/home.aspx) and IMF data is based on the [World Economic Outlook](https://www.imf.org/en/Publications/WEO). If IMF data is used, this means that also short-term projections can be accessed, usually e.g. GDP deflators for up to 2 years into the future. - **Updating Data**: If `pydeflate` notices that data is older than 50 days, it will display a warning. It will also periodically try to update the data automatically. More information on how to configure the update behaviour and caching locations for `pydeflate` are available in their [documentation](https://github.com/jm-rivera/pydeflate). @@ -131,7 +168,7 @@ param_mixed_hhv = param_mixed.change_heating_value("HHV") ## Limitations & Missing Features - **Provenance/Note/Sources in Arithmetic**: When performing arithmetic operations, the handling and merging of `provenance`, `note`, and `sources` is not yet implemented (see `TODO` comments in the code). -- **Unit Conversion**: The `.to()` method does not support currency conversion; use `.change_currency()` for that. +- **Unit Conversion**: The `.to()` method does not support currency conversion; use `.to_currency()` for that. - **Partial Unit Compatibility**: Only certain combinations of units, carriers, and heating values are supported for arithmetic operations. - **No Uncertainty Handling**: There is currently no support for uncertainty or error propagation. - **No Serialization/Deserialization**: Direct methods for exporting/importing to/from JSON or DataFrame are not implemented in this class. diff --git a/src/technologydata/parameter.py b/src/technologydata/parameter.py index 233a814a..07da137d 100644 --- a/src/technologydata/parameter.py +++ b/src/technologydata/parameter.py @@ -157,8 +157,8 @@ def to(self, units: str) -> Self: sources=self.sources, ) - def change_currency( - self, to_currency: str, country: str, source: str = "worldbank" + def to_currency( + self, target_currency: str, country: str, source: str = "worldbank" ) -> Self: """ Change the currency of the parameter. @@ -173,7 +173,7 @@ def change_currency( Parameters ---------- - to_currency : str + target_currency : str The target currency unit to convert to, e.g. "USD_2020", "EUR_2024", "CNY_2022". country : str The country for which the inflation adjustment should be made for. @@ -190,22 +190,22 @@ def change_currency( Examples -------- - >>> param.change_currency("USD_2024", "USA") - >>> param.change_currency("EUR_2020", "DEU", source="imf") - >>> param.change_currency("EUR_2023", "USA", source="worldbank") + >>> param.to_currency("USD_2024", "USA") + >>> param.to_currency("EUR_2020", "DEU", source="imf") + >>> param.to_currency("EUR_2023", "USA", source="worldbank") """ self._update_pint_attributes() # Ensure the target currency is a valid unit - technologydata.ureg.ensure_currency_is_unit(to_currency) + technologydata.ureg.ensure_currency_is_unit(target_currency) # Current unit and currency/currencies from_units = self._pint_quantity.units from_currencies = technologydata.extract_currency_units(from_units) # Replace all currency units in the from_units with the target currency to_units = technologydata.CURRENCY_UNIT_PATTERN.sub( - to_currency, str(from_units) + target_currency, str(from_units) ) # Create a temporary context to which we add the conversion rates @@ -228,7 +228,7 @@ def change_currency( ) # Get conversion rates for all involved currencies - currencies = set(from_currencies).union({to_currency}) + currencies = set(from_currencies).union({target_currency}) # Avoid recursion error in pint definition by re-adding the reference currency currencies = currencies - {ref_currency} diff --git a/src/technologydata/technology.py b/src/technologydata/technology.py index 3ecaaf76..304053ea 100644 --- a/src/technologydata/technology.py +++ b/src/technologydata/technology.py @@ -111,23 +111,51 @@ def calculate_parameters(self, parameters: Any | None = None) -> Self: # Placeholder: implement calculation logic as needed return self - def adjust_currency(self, target_currency: str) -> Self: + def to_currency( + self, + target_currency: str, + overwrite_country: None | str = None, + source: str = "worldbank", + ) -> Self: """ - Adjust all currency parameters to a target currency. + Adjust the currency of all parameters of the technology to the target currency. + + The conversion includes inflation and exchange rates based on the object's region. + If a different country should be used for inflation adjustment, use `overwrite_country`. Parameters ---------- target_currency : str The target currency (e.g., 'EUR_2020'). + overwrite_country : str, optional + ISO 3166 alpha-3 country code to use for inflation adjustment instead of the object's region. + source: str, optional + The source of the inflation data, either "worldbank"/"wb" or "international_monetary_fund"/"imf". + Defaults to "worldbank". + Depending on the source, different years to adjust for inflation may be available. Returns ------- Technology - A new Technology object with adjusted currency. + A new Technology object with all its parameters adjusted to the target currency. """ - # Placeholder: implement currency adjustment logic - return self + country = self.region + if overwrite_country: + country = overwrite_country + + # Copy the Technology object + new_tech: Self = self.model_copy(deep=True) + + # Iterate over parameters and convert their currency + for name, param in new_tech.parameters.items(): + new_tech.parameters[name] = param.to_currency( + target_currency=target_currency, + country=country, + source=source, + ) + + return new_tech def adjust_region(self, target_region: str) -> Self: """ diff --git a/src/technologydata/technology_collection.py b/src/technologydata/technology_collection.py index cb66361f..c51e53d8 100644 --- a/src/technologydata/technology_collection.py +++ b/src/technologydata/technology_collection.py @@ -236,3 +236,45 @@ def from_json(cls, file_path: pathlib.Path | str) -> Self: TechnologyCollection, cls.model_validate(pydantic_core.from_json(json_data, allow_partial=True)), ) + + def to_currency( + self, + target_currency: str, + overwrite_country: None | str = None, + source: str = "worldbank", + ) -> Self: + """ + Adjust the currency of all parameters of all contained Technology objects to the target currency. + + The conversion includes inflation and exchange rates based on each Technology objects's region. + If a different country should be used for inflation adjustment, use `overwrite_country`. + + Parameters + ---------- + target_currency : str + The target currency (e.g., 'EUR_2020'). + overwrite_country : str, optional + ISO 3166 alpha-3 country code to use for inflation adjustment instead of the object's region. + source: str, optional + The source of the inflation data, either "worldbank"/"wb" or "international_monetary_fund"/"imf". + Defaults to "worldbank". + Depending on the source, different years to adjust for inflation may be available. + + Returns + ------- + TechnologyCollection + A new TechnologyCollection object with all its parameters adjusted to the target currency. + + """ + new_techs = [] + + for i, tech in enumerate(self.technologies): + new_techs.append( + tech.to_currency( + target_currency=target_currency, + overwrite_country=overwrite_country, + source=source, + ) + ) + + return TechnologyCollection(technologies=new_techs) diff --git a/test/test_parameter.py b/test/test_parameter.py index e9378e53..98d39ae2 100644 --- a/test/test_parameter.py +++ b/test/test_parameter.py @@ -142,7 +142,7 @@ def test_pint_attributes_update(self) -> None: technologydata.ureg.Unit("USD_2020 / kWh") ) - def test_parameter_change_currency(self) -> None: + def test_parameter_to_currency(self) -> None: """Test currency conversion with inflation adjustment.""" param = technologydata.Parameter( magnitude=1, @@ -150,7 +150,7 @@ def test_parameter_change_currency(self) -> None: ) # Convert to EUR with inflation adjustment for Germany - converted = param.change_currency("EUR_2023", "DEU") + converted = param.to_currency("EUR_2023", "DEU") assert isinstance(converted, technologydata.Parameter) assert converted.units is not None assert "EUR_2023" in converted.units @@ -169,7 +169,7 @@ def test_parameter_change_currency_explicit_source(self) -> None: ) # Convert using IMF data source - converted = param.change_currency("USD_2022", "USA", source="worldbank") + converted = param.to_currency("USD_2022", "USA", source="worldbank") assert isinstance(converted, technologydata.Parameter) assert converted.units is not None assert "USD_2022" in converted.units @@ -185,7 +185,7 @@ def test_parameter_change_currency_different_source(self) -> None: ) # Convert using IMF data source - converted = param.change_currency("USD_2022", "USA", source="imf") + converted = param.to_currency("USD_2022", "USA", source="imf") assert isinstance(converted, technologydata.Parameter) assert converted.units is not None assert "USD_2022" in converted.units @@ -199,7 +199,7 @@ def test_parameter_change_currency_multiple_currencies(self) -> None: ) # Convert all currencies to CNY_2023 - converted = param.change_currency("CNY_2023", "CHN") + converted = param.to_currency("CNY_2023", "CHN") assert isinstance(converted, technologydata.Parameter) # Both USD_2020 and EUR_2021 should be replaced with CNY_2023 assert converted.units is not None @@ -215,7 +215,7 @@ def test_parameter_change_currency_same_currency(self) -> None: ) # Convert to USD but different year (inflation adjustment) - converted = param.change_currency("USD_2023", "USA") + converted = param.to_currency("USD_2023", "USA") assert isinstance(converted, technologydata.Parameter) assert converted.units == "USD_2023 / kilowatt" # Magnitude should change due to inflation adjustment @@ -230,7 +230,7 @@ def test_parameter_no_currency_change(self) -> None: ) # Convert to the same currency and year - converted = param.change_currency("USD_2020", "USA") + converted = param.to_currency("USD_2020", "USA") assert isinstance(converted, technologydata.Parameter) assert converted._pint_quantity.is_compatible_with("USD_2020 / kW") # Magnitude should remain unchanged @@ -246,7 +246,7 @@ def test_parameter_change_currency_invalid_country(self) -> None: # Invalid country code should raise an error with pytest.raises((ValueError, KeyError)): - param.change_currency("EUR_2023", "USB") + param.to_currency("EUR_2023", "USB") def test_parameter_change_currency_invalid_source(self) -> None: """Test that invalid inflation data sources raise appropriate errors.""" @@ -257,7 +257,7 @@ def test_parameter_change_currency_invalid_source(self) -> None: # Invalid source should raise an error with pytest.raises(KeyError): - param.change_currency("EUR_2023", "DEU", source="invalid_source") + param.to_currency("EUR_2023", "DEU", source="invalid_source") def test_parameter_change_currency_no_units(self) -> None: """Test currency conversion with parameter that has no units.""" @@ -266,7 +266,7 @@ def test_parameter_change_currency_no_units(self) -> None: ) # Should handle parameters without currency units gracefully - converted = param.change_currency("EUR_2023", "DEU") + converted = param.to_currency("EUR_2023", "DEU") assert isinstance(converted, technologydata.Parameter) assert converted.magnitude == 42 assert converted.units is None or "EUR_2023" not in str(converted.units) @@ -283,7 +283,7 @@ def test_parameter_unchanged_other_attributes(self) -> None: ) # Convert to EUR_2023 - converted = param.change_currency("EUR_2023", "DEU") + converted = param.to_currency("EUR_2023", "DEU") # Check that other attributes remain unchanged assert converted.carrier == param.carrier @@ -737,7 +737,7 @@ def test_change_heating_value_same_hv(self) -> None: "folder_id", ["WB_CNY_2020", "WB_EUR_2020", "WB_USD_2020"], ) # type: ignore - def test_change_currency(self, folder_id: str) -> None: + def test_to_currency(self, folder_id: str) -> None: """Validate the currency conversion rates.""" input_path = pathlib.Path( path_cwd, @@ -757,8 +757,8 @@ def test_change_currency(self, folder_id: str) -> None: output_param = technologydata.Parameter( magnitude=row["input_magnitude"], units=row["input_units"], - ).change_currency( - to_currency=technologydata.extract_currency_units( + ).to_currency( + target_currency=technologydata.extract_currency_units( row["reference_units"] )[0], country=row["country"], diff --git a/test/test_technology.py b/test/test_technology.py new file mode 100644 index 00000000..14495733 --- /dev/null +++ b/test/test_technology.py @@ -0,0 +1,271 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +"""Test the initialization and methods of the Technology class.""" + +import pathlib + +import technologydata + +path_cwd = pathlib.Path.cwd() + + +class TestTechnology: + """Test suite for the Technology class in the technologydata module.""" + + def test_technology_creation(self) -> None: + """Test the creation of a Technology instance.""" + tech = technologydata.Technology( + name="Solar photovoltaics", + detailed_technology="Si-HC", + case="example-scenario", + region="DEU", + year=2022, + parameters={ + "investment": technologydata.Parameter( + magnitude=500, + units="EUR_2022/kW", + provenance="Industry report", + note="Average overnight cost", + ), + "lifetime": technologydata.Parameter( + magnitude=25, + units="years", + provenance="Literature", + ), + }, + ) + assert tech.name == "Solar photovoltaics" + assert tech.detailed_technology == "Si-HC" + assert tech.case == "example-scenario" + assert tech.region == "DEU" + assert tech.year == 2022 + assert len(tech.parameters) == 2 + assert "investment" in tech.parameters + assert "lifetime" in tech.parameters + + def test_technology_to_currency(self) -> None: + """Test currency conversion for all parameters in a Technology.""" + tech = technologydata.Technology( + name="Solar photovoltaics", + detailed_technology="Si-HC", + case="example-scenario", + region="DEU", + year=2022, + parameters={ + "investment": technologydata.Parameter( + magnitude=500, + units="EUR_2022/kW", + provenance="Industry report", + note="Average overnight cost", + ), + "fixed_om": technologydata.Parameter( + magnitude=10, + units="EUR_2022/kW/year", + provenance="Literature", + ), + "lifetime": technologydata.Parameter( + magnitude=25, + units="years", + provenance="Literature", + ), + }, + ) + + # Convert to USD_2020 + converted = tech.to_currency("USD_2020") + + # Check that a new Technology object was returned + assert isinstance(converted, technologydata.Technology) + assert converted is not tech # Should be a different object + + # Check that basic attributes are preserved + assert converted.name == tech.name + assert converted.detailed_technology == tech.detailed_technology + assert converted.case == tech.case + assert converted.region == tech.region + assert converted.year == tech.year + + # Check that parameters with currency units are converted + assert "USD_2020" in str(converted.parameters["investment"].units) + assert "EUR_2022" not in str(converted.parameters["investment"].units) + assert "USD_2020" in str(converted.parameters["fixed_om"].units) + assert "EUR_2022" not in str(converted.parameters["fixed_om"].units) + + # Check that parameters without currency units remain unchanged + assert ( + converted.parameters["lifetime"].units == tech.parameters["lifetime"].units + ) + assert ( + converted.parameters["lifetime"].magnitude + == tech.parameters["lifetime"].magnitude + ) + + # Check that magnitude changed for currency parameters + assert ( + converted.parameters["investment"].magnitude + != tech.parameters["investment"].magnitude + ) + assert ( + converted.parameters["fixed_om"].magnitude + != tech.parameters["fixed_om"].magnitude + ) + + def test_technology_to_currency_with_overwrite_country(self) -> None: + """Test currency conversion with a different country for inflation adjustment.""" + tech = technologydata.Technology( + name="Wind turbine", + detailed_technology="Onshore", + case="base-case", + region="DEU", + year=2022, + parameters={ + "investment": technologydata.Parameter( + magnitude=1200, + units="EUR_2020/kW", + provenance="Industry data", + ), + }, + ) + + # Convert using a different country (USA) for inflation adjustment + converted = tech.to_currency("USD_2023", overwrite_country="USA") + + assert isinstance(converted, technologydata.Technology) + assert "USD_2023" in str(converted.parameters["investment"].units) + assert ( + converted.parameters["investment"].magnitude + != tech.parameters["investment"].magnitude + ) + + def test_technology_to_currency_with_source(self) -> None: + """Test currency conversion with different inflation data sources.""" + tech = technologydata.Technology( + name="Battery storage", + detailed_technology="Li-ion", + case="scenario-1", + region="USA", + year=2022, + parameters={ + "investment": technologydata.Parameter( + magnitude=300, + units="USD_2020/kWh", + ), + }, + ) + + # Convert using worldbank source + converted_wb = tech.to_currency("EUR_2022", source="worldbank") + assert isinstance(converted_wb, technologydata.Technology) + assert "EUR_2022" in str(converted_wb.parameters["investment"].units) + + # Convert using IMF source + converted_imf = tech.to_currency("EUR_2022", source="imf") + assert isinstance(converted_imf, technologydata.Technology) + assert "EUR_2022" in str(converted_imf.parameters["investment"].units) + + def test_technology_to_currency_preserves_other_attributes(self) -> None: + """Test that currency conversion preserves other parameter attributes.""" + tech = technologydata.Technology( + name="Solar photovoltaics", + detailed_technology="Si-HC", + case="example-scenario", + region="DEU", + year=2022, + parameters={ + "investment": technologydata.Parameter( + magnitude=500, + units="EUR_2022/kW", + carrier="electricity", + provenance="Industry report", + note="Average overnight cost", + sources=technologydata.SourceCollection( + sources=[ + technologydata.Source( + title="Test Source", + authors="Test Authors", + ) + ] + ), + ), + }, + ) + + converted = tech.to_currency("USD_2020") + + # Check that non-currency attributes are preserved + assert ( + converted.parameters["investment"].carrier + == tech.parameters["investment"].carrier + ) + assert ( + converted.parameters["investment"].provenance + == tech.parameters["investment"].provenance + ) + assert ( + converted.parameters["investment"].note + == tech.parameters["investment"].note + ) + assert len(converted.parameters["investment"].sources.sources) == len( + tech.parameters["investment"].sources.sources + ) + + def test_technology_to_currency_empty_parameters(self) -> None: + """Test currency conversion on a Technology with no parameters.""" + tech = technologydata.Technology( + name="Solar photovoltaics", + detailed_technology="Si-HC", + case="example-scenario", + region="DEU", + year=2022, + parameters={}, + ) + + # Should handle empty parameters gracefully + converted = tech.to_currency("USD_2020") + + assert isinstance(converted, technologydata.Technology) + assert len(converted.parameters) == 0 + + def test_technology_to_currency_mixed_currencies(self) -> None: + """Test currency conversion when parameters have different currencies.""" + tech = technologydata.Technology( + name="Hybrid system", + detailed_technology="Solar+Wind", + case="scenario-1", + region="DEU", + year=2022, + parameters={ + "investment_solar": technologydata.Parameter( + magnitude=500, + units="EUR_2022/kW", + ), + "investment_wind": technologydata.Parameter( + magnitude=1000, + units="USD_2020/kW", + ), + "capacity": technologydata.Parameter( + magnitude=100, + units="MW", + ), + }, + ) + + # Convert all to GBP_2021 + converted = tech.to_currency("GBP_2021") + + # All currency parameters should be converted to GBP_2021 + assert "GBP_2021" in str(converted.parameters["investment_solar"].units) + assert "EUR_2022" not in str(converted.parameters["investment_solar"].units) + assert "GBP_2021" in str(converted.parameters["investment_wind"].units) + assert "USD_2020" not in str(converted.parameters["investment_wind"].units) + + # Non-currency parameter should remain unchanged + assert ( + converted.parameters["capacity"].units == tech.parameters["capacity"].units + ) + assert ( + converted.parameters["capacity"].magnitude + == tech.parameters["capacity"].magnitude + ) diff --git a/test/test_technology_collection.py b/test/test_technology_collection.py index 89e94fd3..c2608f63 100644 --- a/test/test_technology_collection.py +++ b/test/test_technology_collection.py @@ -137,3 +137,110 @@ def test_get( ) assert isinstance(result, technologydata.TechnologyCollection) assert len(result.technologies) == 1 + + def test_to_currency(self) -> None: + """Test currency conversion for all technologies in the collection.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example", + "technologies.json", + ) + technology_collection = technologydata.TechnologyCollection.from_json( + input_file + ) + + # Convert to USD_2020 + converted = technology_collection.to_currency("USD_2020") + + # Check that a new TechnologyCollection object was returned + assert isinstance(converted, technologydata.TechnologyCollection) + assert converted is not technology_collection + + # Check that the number of technologies is the same + assert len(converted) == len(technology_collection) + + # Check that all technologies have been converted + for tech in converted: + for param_name, param in tech.parameters.items(): + if param.units and "EUR_2022" in param.units: + # Should not happen - all EUR_2022 should be converted + assert False, f"Parameter {param_name} still has EUR_2022" + + def test_to_currency_with_overwrite_country(self) -> None: + """Test currency conversion with a different country for inflation adjustment.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example", + "technologies.json", + ) + technology_collection = technologydata.TechnologyCollection.from_json( + input_file + ) + + # Convert using a different country (USA) for inflation adjustment + converted = technology_collection.to_currency( + "USD_2023", overwrite_country="USA" + ) + + assert isinstance(converted, technologydata.TechnologyCollection) + assert len(converted) == len(technology_collection) + + # Check that currencies have been converted + for tech in converted: + for param in tech.parameters.values(): + if param.units and "USD" in param.units: + assert "USD_2023" in param.units + + def test_to_currency_with_source(self) -> None: + """Test currency conversion with different inflation data sources.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example", + "technologies.json", + ) + technology_collection = technologydata.TechnologyCollection.from_json( + input_file + ) + + # Convert using worldbank source + converted_wb = technology_collection.to_currency( + "USD_2022", source="international_monetary_fund" + ) + assert isinstance(converted_wb, technologydata.TechnologyCollection) + assert len(converted_wb) == len(technology_collection) + + # Convert using IMF source + converted_imf = technology_collection.to_currency("USD_2022", source="imf") + assert isinstance(converted_imf, technologydata.TechnologyCollection) + assert len(converted_imf) == len(technology_collection) + + def test_to_currency_preserves_technology_attributes(self) -> None: + """Test that currency conversion preserves technology attributes.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example", + "technologies.json", + ) + technology_collection = technologydata.TechnologyCollection.from_json( + input_file + ) + + converted = technology_collection.to_currency("USD_2020") + + # Check that technology attributes are preserved + for orig_tech, conv_tech in zip( + technology_collection.technologies, converted.technologies + ): + assert orig_tech.name == conv_tech.name + assert orig_tech.detailed_technology == conv_tech.detailed_technology + assert orig_tech.case == conv_tech.case + assert orig_tech.region == conv_tech.region + assert orig_tech.year == conv_tech.year From b8ad7141eebc2fa0c45cd8755a8c8c9e31740b42 Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Mon, 3 Nov 2025 15:00:53 +0100 Subject: [PATCH 24/30] Custom error message for CCC_YYYY (#72) * code: modify units.py * code: new attempt to modify registry function * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: add method to patch pint error handling register * code: add validation * code: update test * code: refine message * code: Fix and expand test * code: fix issues in CustomUndefinedUnitError * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * add pre-commit * code: add some extra test --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: euronion --- src/technologydata/utils/units.py | 109 ++++++++++++++++++++++++++++++ test/test_parameter.py | 36 +++++++++- 2 files changed, 143 insertions(+), 2 deletions(-) diff --git a/src/technologydata/utils/units.py b/src/technologydata/utils/units.py index 8e91272d..548d1ef9 100644 --- a/src/technologydata/utils/units.py +++ b/src/technologydata/utils/units.py @@ -6,6 +6,7 @@ import json import logging import re +import typing from functools import lru_cache from pathlib import Path from typing import Any @@ -309,6 +310,112 @@ def get_iso3_from_currency_code( ) from e +def patch_pint_registry_error_handling(registry: pint.registry.UnitRegistry) -> None: + """ + Patch a Pint registry to use CustomUndefinedUnitError. + + Parameters + ---------- + registry : pint.registry.UnitRegistry + The Pint unit registry to patch. + + """ + # Store the original method + original_get_name = registry.get_name + + def patched_get_name( + self: pint.registry.UnitRegistry, name: str, *args: Any, **kwargs: Any + ) -> Any: + try: + return original_get_name(name, *args, **kwargs) + except pint.errors.UndefinedUnitError as e: + # Raise the custom error with the same arguments + raise CustomUndefinedUnitError(e.args[0]) from e + + # Replace the method + registry.get_name = patched_get_name.__get__(registry) + + +class CustomUndefinedUnitError(pint.errors.UndefinedUnitError): # type: ignore + """ + Custom message for undefined unit errors. + + This custom error is raised when a unit is not defined in the unit registry. + It provides more specific error messages, especially for currency units + that are missing the currency year. + + Parameters + ---------- + unit_names : list of str + The names of the units that are not defined in the unit registry. + + Attributes + ---------- + unit_names : list of str + The names of the units that are not defined in the unit registry. + + Notes + ----- + This error is a subclass of `pint.errors.UndefinedUnitError` and is designed + to provide more specific error messages for currency units that are missing + the currency year. + + """ + + def __init__(self, unit_names: str | typing.Iterable[str]) -> None: + """ + Initialize a CustomUndefinedUnitError instance. + + This constructor creates a new `CustomUndefinedUnitError` object, + inheriting all default behaviors from `pint.errors.UndefinedUnitError`. + + Parameters + ---------- + unit_names : str or iterable of str + The name or names of the undefined units that caused the error. + + """ + # Use all defaults definitions from a standard pint.errors.UndefinedUnitError + super().__init__(unit_names) + + def __str__(self) -> str: + """ + Generate a custom error message string. + + This method generates a custom error message string based on the + unit names that are not defined in the unit registry. It provides + specific messages for currency units that are missing the currency year. + + Returns + ------- + str + The custom error message string. + + """ + # Retrieve unit names, defaulting to an empty list if not present + unit_names = getattr(self, "unit_names", []) + + # Precompute valid currency codes for efficiency + all_currency_codes = set(get_iso3_to_currency_codes().values()) + + # Identify currency units without a year specification + currency_errors = [ + code + for unit in unit_names + for code in re.findall(r"[A-Z]{3}", str(unit)) + if code in all_currency_codes + and not CURRENCY_UNIT_PATTERN.search(str(unit)) + ] + + # Generate specific error message for currency units + if currency_errors: + missing_code = currency_errors[0] + return f"Currency unit '{missing_code}' is missing the 4-digit currency year (e.g. {missing_code}_2020)." + + # Fallback to parent class error message if no specific currency error found + return super().__str__() # type: ignore + + class SpecialUnitRegistry(pint.UnitRegistry): # type: ignore """A special pint.UnitRegistry subclass that includes methods for handling currency units and conversion using pydeflate.""" @@ -405,3 +512,5 @@ def ensure_currency_is_unit(self, units: str) -> None: hvreg = pint.UnitRegistry( filename=Path(__file__).parent / "heating_values.txt" ) # For tracking heating values and ensuring compatibility between them + +patch_pint_registry_error_handling(ureg) diff --git a/test/test_parameter.py b/test/test_parameter.py index 98d39ae2..e99a1a42 100644 --- a/test/test_parameter.py +++ b/test/test_parameter.py @@ -13,8 +13,7 @@ import technologydata from technologydata.constants import EnergyDensityLHV - -# from technologydata.utils.units import extract_currency_units, ureg +from technologydata.utils.units import CustomUndefinedUnitError path_cwd = pathlib.Path.cwd() @@ -55,6 +54,39 @@ def test_parameter_creation(self) -> None: def test_parameter_invalid_units(self) -> None: """Test that an error is raised when invalid units are provided.""" + with pytest.raises(CustomUndefinedUnitError) as excinfo: + technologydata.Parameter( + magnitude=1000, + units="USD", + ) + assert ( + str(excinfo.value) + == "Currency unit 'USD' is missing the 4-digit currency year (e.g. USD_2020)." + ) + assert excinfo.type == CustomUndefinedUnitError + + with pytest.raises(CustomUndefinedUnitError) as excinfo: + technologydata.Parameter( + magnitude=1000, + units="USD_20/kW", + ) + assert ( + str(excinfo.value) + == "Currency unit 'USD' is missing the 4-digit currency year (e.g. USD_2020)." + ) + assert excinfo.type == CustomUndefinedUnitError + + with pytest.raises(CustomUndefinedUnitError) as excinfo: + technologydata.Parameter( + magnitude=1000, + units="abc_USD_20/kW", + ) + assert ( + str(excinfo.value) + == "Currency unit 'USD' is missing the 4-digit currency year (e.g. USD_2020)." + ) + assert excinfo.type == CustomUndefinedUnitError + with pytest.raises(pint.errors.UndefinedUnitError) as excinfo: technologydata.Parameter( magnitude=1000, From 9a656efa885d1ba41571bd7f21241195e28b70ce Mon Sep 17 00:00:00 2001 From: Johannes HAMPP <42553970+euronion@users.noreply.github.com> Date: Wed, 5 Nov 2025 10:36:05 +0100 Subject: [PATCH 25/30] Technology collection models (#18) * doc: Add proposal for GrowthModels * doc: Add proposal for LearningModels * code: Add implementation for growth models and linear growth * doc: Document growth models and linear growth * code: Remove model default affected parameters * code: Fix up docstrings * code: Sort imports * code: Fix type annotations * spelling and doc-string fixes * code: Implement exponential growth * code: Cleanup * code: Implement logistical growth * code: Expand package structure * code: Revise implementation for GrowthModel(s), start with LinearGrowth * code: Expand the abstract GrowthModel class * code: Allow starting values to be only a subset of all missing parameters * code: Reimplement LogisticGrowth and ExponentialGrowth * code Fix mypy issues * code: Add missing scipy dependency * Revert "code: Add missing scipy dependency" This reverts commit c053bfc6558a5b5395e2df97b39d67308ea059be. * code: Add missing scipy dependency * code: Cleanup + add GompertzGrowth model * doc: Update docs on GrowthModels * code: Add simple tests for growth_model.py * code: Add GeneralLogisticGrowth and harmonise parameter names * code: Update tests * doc: Update class diagramm * doc: ValueError in docstring * code: Implement fitting and projections on TCs * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: Simplify signature * code: Address pydantic deprecations * code: basic tests for fit and project on TechnologyCollection * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: add more tests * code: Update uv.lock file * code: Add x0 to all growth model functions * doc: Update docs for GrowthModel and integration with TechnologyCollection * code: TODO ideas for growth_models.py * git: Ignore dev folder * code: Fix tests * code: Address mypy errors * code: Add support for pydantic in mypy * code: update mypy issues * code: update growth models * doc: change currency to_currency * code: fix mypy issues --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Fabrizio Finozzi --- .gitignore | 3 + .pre-commit-config.yaml | 2 +- docs/models.md | 310 ++ docs/user_guide/class-diagram.puml | 112 +- pyproject.toml | 2 + src/technologydata/datapackage.py | 2 +- src/technologydata/parameter.py | 24 +- src/technologydata/source.py | 2 +- src/technologydata/source_collection.py | 12 +- src/technologydata/technologies/__init__.py | 5 + .../technologies/growth_models.py | 502 ++++ src/technologydata/technology.py | 2 +- src/technologydata/technology_collection.py | 195 +- test/test_growth_models.py | 281 ++ test/test_technology_collection.py | 138 + uv.lock | 2621 +++++++++-------- 16 files changed, 2966 insertions(+), 1247 deletions(-) create mode 100644 docs/models.md create mode 100644 src/technologydata/technologies/__init__.py create mode 100644 src/technologydata/technologies/growth_models.py create mode 100644 test/test_growth_models.py diff --git a/.gitignore b/.gitignore index 3ce78b52..63839d78 100644 --- a/.gitignore +++ b/.gitignore @@ -72,3 +72,6 @@ coverage.xml # mypy .mypy_cache/ .dmypy.json + +# folder for misc developments +dev/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 30c759f0..640f85d4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -52,7 +52,7 @@ repos: hooks: - id: mypy args: [--strict, --ignore-missing-imports, --config-file=pyproject.toml] - additional_dependencies: [tokenize-rt==3.2.0] + additional_dependencies: [tokenize-rt==3.2.0, pydantic>=2.11.7] exclude: ^docs/ # Pyupgrade: Automatically upgrades Python syntax diff --git a/docs/models.md b/docs/models.md new file mode 100644 index 00000000..21ba4e3c --- /dev/null +++ b/docs/models.md @@ -0,0 +1,310 @@ +# Title + + + +## Models + +Different models can be used to modify assumptions to fit specific scenarios. + +## Supported Model Types + +- **Growth models**: For projecting technology parameters forward in time using mathematical models. + +These are implemented as Python classes and can be used for fitting to data and making projections. + +## Growth Models + +Growth models are mathematical models for projecting technology parameters over time. They are implemented as Pydantic classes in `technologydata.technologies.growth_models` and can be used for both fitting to data and making projections. The following growth models are available: + +### Available Growth Models + +- `LinearGrowth`: Linear model, $f(x) = m \cdot (x - x_0) + c$ +- `ExponentialGrowth`: Exponential model, $f(x) = A \cdot \exp(k \cdot (x - x_0))$ +- `LogisticGrowth`: Logistic (sigmoid) model, $f(x) = \frac{L}{1 + \exp(-k \cdot (x - x_0))}$ +- `GeneralLogisticGrowth`: Generalized logistic model, $f(x) = A + \frac{K - A}{(C + Q \cdot \exp(-B \cdot (x - x_0)))^{1/\nu}}$ +- `GompertzGrowth`: Gompertz model, $f(x) = A \cdot \exp(-b \cdot \exp(-k \cdot (x - x_0)))$ + +Each model exposes: + +- A `function(x, ...)` method for the mathematical form +- A `fit()` method to fit parameters to the data points registered with the model +- A `project(to_year)` method to project to a given year. Requires all parameters of the models to be set, either manually or via fitting. +- Data points can be added via each models constructor or later via the `add_data((x, y))` function + +#### Model Parameters + +Each model has its own parameters, e.g. for `LinearGrowth` those are `x0`, `A` and `m`. +These parameters can either be set when instantiating the model or later by setting the attributes directly. +Not all parameters need to be set, e.g. if you are planning on fitting one parameter based on the data of the model, it makes sense to only set the other parameters. +Omitting parameters can be done by either not providing them at all or setting them to `None`. + +```python +model = LinearGrowth(x0=2020, A=None) # Set only x0; A and m are not set + +# Set A after instantiation of the model +model.A = 5_000_000 + +# All principal model parameters are available as +print(model.model_parameters) +> ['x0', 'A', 'm'] + +# All already set model parameters are available as +print(model.provided_parameters) +> ['x0', 'A'] + +# All parameters that are still missing (None) are available as +print(model.missing_parameters) +> ['m'] +``` + +The meaning of the parameters is documented in the Pydantic field descriptions: + +```python +print(LinearGrowth.model_fields["A"].description) +> Starting value of the linear function. +``` + +and the function docstring: + +```python +::: technologydata.technologies.growth_models.LinearGrowth.function +``` + +#### Creating a model and projecting a value + +To create a model, e.g. for the growth of electric vehicles over time, instantiate the model with the known parameters: + +```python +from technologydata.technologies.growth_models import LinearGrowth + +# start with 5 million in 2020, and grow linearly by 2 million per year +model = LinearGrowth(x0=2020, A=5_000_000, m=2_000_000) + +# Project to 2030, should be 5 million + 2 million * (2030 - 2020) = 25 million +model.project(2030) +> 25000000 + +``` + +The underlying function for each model can also be inspected and called directly, e.g.: + +```python +LinearGrowth().function(2030, x0=2020, A=5_000_000, m=2_000_000) +> 25000000 +``` + +Note that when using the `function` method directly, all parameters must be explicitly provided. +(TODO: maybe function should be a classmethod or read the parameters from the instance if they are set?) + +#### Fitting a model to data + +To fit a model to data points, provide the data points to the model via the `data_points` argument when instantiating the model or add them later via the `add_data((x, y))` method: + +```python +import numpy as np +from technologydata.technologies.growth_models import LinearGrowth + +# Dummy data to fit to +x0 = 2020 +m = 2_000_000 +A = 5_000_000 +x = np.arange(2020, 2025) +y = A + m * (x - x0) + +# Create the model with data points +# note that a linear growth is not a great model for this type data +model = LinearGrowth(data_points=[*zip(x, y)]) + +# More data points can be added later as (x, y) tuples +model.add_data((2030 - x0, A + m * (2030 - x0))) + +# The model can now be fitted to the data points +model.fit() + +# After fitting, the model parameters are set and can be inspected ... +print(model.x0) +> -12173.437639145683 +print(model.m) +> 121803685.25127366 +print(model.A) +> 121803685.25127366 + +# ... or used for projection +print(f"Projected: {model.project(2050)}, expected: {A + m * (2050 - x0)}") +> Projected: 8779498.59552154, expected: 65000000 +``` + +In the above example, the model yielded a projected value and the fitted parameters were not a good what was expected compared to the original values for `x0`, `A` and `m`. +This can have multiple reasons, common problems are: + +1. Insufficient or poor quality data points +2. The model being not suitable for matching the data trend +3. Parameters of the model competing against each other during fitting + +In the example above, the third case applies. +The model has three parameters, `x0`, `A` and `m`, of which `x0` and `A` are competing against each other. +To get a better fit of the model to the data the model parameters can either be partially fixed such that only some of the parameters need to be fitted, or initial guesses for the parameters can be provided to guide the fitting process. + +To fix parameters, simply set them when instantiating the model or later by setting the attributes directly: + +```python +# Fix x0 for the model +model = LinearGrowth(x0=2020, data_points=[*zip(x, y)]) + +# Fix m for the model +model.m = 2_000_000 + +# Now only A is a free and missing parameter +print(model.missing_parameters) +> ['A'] + +# Fitting the model again now yields a better fit +model.fit() +print(model.A) +> 5000000.0 +``` + +Instead of fixing parameters, initial guesses can be provided via the `p0` argument to the `fit` method. +Initial guesses are ways of providing the model with some context information about the data and the expected parameter values. +This method does not guarantee that the parameters will be fitted to the provided values, but it can help to guide the fitting process and find a better fit. +By default, if no initial guesses are provided, the fitting algorithm will start with `1.0` for parameters for which no starting value is provided. +In the example `x0` should be around the current year or slightly in the past and `m` should be a large positive number. +This knowledge is provided as initial guess to the model fitting: + +```python +model = LinearGrowth(data_points=[*zip(x, y)]) + +# Guess x0 to be around the 2010s and m to be a large number +# nothing is known about A, so it is not provided +model.fit(p0={"x0": 2015, "m": 100_000}) + +# Resulting in parameters +print(model.x0, model.A, model.m) +> 2016.759002811191 -1481994.3776179291 2000000.0000000002 +``` + +As we can see, the fit for `m` now is the expected value. +The value for `x0` is still a bit off, and because `A` and `x0` are still competing against each other, the fit for `A` is also not as expected. +The model does however yield projected values that are corresponding to the expected values from the original function: + +```python +print(f"Projected: {model.project(2050)}, expected: {A + m * (2050 - x0)}") +> Projected: 64999999.99999994, expected: 65000000 +``` + +Best results for the quality of a fitted model can be achieved by combining the approaches and partially fixing a model as well as providing initial guesses. + +## Using models to create consistent datasets + +The main intention for models is for them to be used on combination with a `TechnologyCollection` to create consistent scenario for parameters over time. + +Given a `TechnologyCollection` with multiple entries for a technology, e.g. solar photovoltaics and one or more parameters, e.g. electricity supply and lifetime, models can be used to create consistent scenarios for this technology and parameters. + +Take for example the following `TechnologyCollection` for utility scale solar photovoltaics: + +```python +from technologydata import TechnologyCollection, Technology, Parameter +from technologydata.technologies.growth_models import ExponentialGrowth, LinearGrowth + +tc = TechnologyCollection( + technologies=[ + Technology( + case="historic", + name="Solar Photovoltaics", + detailed_technology="Any", + region="Global", + year=2010, + parameters={ + "electricity supply": Parameter(magnitude=1_000, units="PJ", carrier="electricity"), + "lifetime": Parameter(magnitude=20, units="years"), + "efficiency": Parameter(magnitude=0.22, units="%"), + "specific investment cost": Parameter(magnitude=600, units="USD_2024/kW"), + }, + ), + Technology( + case="historic", + name="Solar Photovoltaics", + detailed_technology="Any", + region="Global", + year=2022, + parameters={ + "electricity supply": Parameter(magnitude=6_000, units="PJ", carrier="electricity"), + "lifetime": Parameter(magnitude=24, units="years"), + "efficiency": Parameter(magnitude=0.20, units="%"), + "specific investment cost": Parameter(magnitude=400, units="USD_2024/kW"), + }, + ), + Technology( + case="IEA STEPS 2024", + name="Solar Photovoltaics", + detailed_technology="Any", + region="Global", + year=2030, + parameters={ + "electricity supply": Parameter(magnitude=26_000, units="PJ", carrier="electricity"), + "lifetime": Parameter(magnitude=30, units="years"), + "efficiency": Parameter(magnitude=0.21, units="%"), + "specific investment cost": Parameter(magnitude=300, units="USD_2024/kW"), + }, + ), + ] +) +``` + +By using models it is possible to create consistent scenarios for the parameters over time, e.g. for 2040 and 2050. +Using the `.project()` method of the `TechnologyCollection`, models can be specified for each parameter to be projected to specified years: + +```python +tc.project( + to_years=[2010, 2020, 2030, 2040, 2050], + parameters={ + "electricity supply": ExponentialGrowth(x0=2010, A=1_000), + "lifetime": LinearGrowth(x0=2010), + "efficiency": "mean", + "specific investment cost": "NaN", + }, +) +``` + +This returns a new `TechnologyCollection` with the entries for the years 2010, 2020, 2030, 2040 and 2050 and the four parameters projected according to the specified models: + +- for `electricity supply` an exponential growth model is assumed and fitted to the three data points from the original collection +- for `lifetime` a linear growth model is assumed, with the starting year fixed to 2010 and the remaining model parameters fitted to the data points +- for `efficiency` the mean of the data points is taken for all projected years, representing high quality and expensive solar panels being deployed in earlier years, then cheaper and less efficient panels being deployed in later years and then efficiency increasing again as technology improves and production methods get better +- for `specific investment cost` no model is provided and instead the value is set to `NaN` for all projected years; this carries over the `Parameter` into the projected collection, and only keeps it as a placeholder; this can be useful for cases where other methods will be used to fill the parameter values later, e.g. via an external model or manual input. + +The returning `TechnologyCollection` now has new values for all specified years. +The included values do not represent the original values, but modelled values using the original values. +That is also the reason why values from the original collection are different from the new collection, e.g. for 2010: +With the provided data and the requested model (`ExponentialGrowth`), the modelled yields a value of `1426.5 PJ` for 2010 instead of the original `1000 PJ`. + +An already existing and initialised model can also be provided to the `project` method. +This allows models to be reused across multiple projections, e.g. for different regions or technologies. + +A model can also be fit to data points before being provided to the `project` method, allowing more control over the fitting process like providing initial guesses `p0`: + +```python +model = tc.fit( + parameter="electricity supply", + model=ExponentialGrowth(x0=2010), + p0={"A": 1_000, "k": 0.2}, +) +print(model.model_dump(include=model.provided_parameters)) +> {'x0': 2010.0, 'A': 434.75658280114783, 'm': 565.2434171988522, 'k': 0.19058662818514885} +``` + +TODO: Might be helpful to allow passing `p0` directly to the `project` method or while instantiating a model +TODO: Would a method to allow keeping the original values in the `TechnologyCollection` be useful, or should this rather be done by the user merging the original and the returned collection? I believe the latter would be better design. + +### Model API + +- `add_data((x, y))`: Add a data point for fitting +- `fit()`: Fit model parameters to data +- `project(to_year)`: Project to a given year (parameters must be set) + +See the Python docstrings for each model for parameter details. diff --git a/docs/user_guide/class-diagram.puml b/docs/user_guide/class-diagram.puml index 20dac56c..1892e442 100644 --- a/docs/user_guide/class-diagram.puml +++ b/docs/user_guide/class-diagram.puml @@ -136,7 +136,8 @@ class TechnologyCollection { + to_csv(): str + to_dataframe(): pd.DataFrame + from_json(): TechnologyCollection - + create_projection(): TechnologyCollection + + create_projection(method: GrowthModel): TechnologyCollection + + learn(method: LearningModel): TechnologyCollection + __iter__() + __len__() ' TODO: Think about more methods here @@ -155,6 +156,80 @@ note right of TechnologyCollection::create_projection based on the Technology objects in the collection. Either returns a new TechnologyCollection or adds the Technology objects to the current collection. + Uses a GrowthModel (see below) to project values. +end note + +abstract class GrowthModel { + - data_points: list[tuple[float, float]] + - model_parameters: list[str] + - provided_parameters: dict[str, float] + - missing_parameters: list[str] + + add_data(data_points: tuple[float, float]): self + + project(to_x: float): float + + fit(p0): self + + _kwpartial(func: Callable, **fixed_kwargs): Callable + + function(x, ...): float // abstract method +} + +class LinearGrowth { + Project with linear growth model. + + - A + - m + + function(x, A, m) +} + +class ExponentialGrowth { + Project with exponential growth model. + + - A + - m + - k + - x0 + + function(x, A, m, k, x0) +} + +class LogisticGrowth { + Project with logistic growth model. + + - A + - L + - k + - x0 + + function(x, A, L, k, x0) +} + +class GompertzGrowth { + Project with Gompertz growth model. + + - A + - k + - x0 + - b + + function(x, A, k, x0, b) +} + +class GeneralLogisticGrowth { + Project with a general logistic growth model, + + - A + - K + - B + - Q + - C + - nu + + function(x, A, K, B, Q, C, nu) +} + +note right of GrowthModel + Abstract base for growth models used in projections. + Subclasses implement specific growth curve logic. + Each subclass should support two approaches: fitting around + data from the TechnologyCollection, and extrapolating using a + single value as support with parameters for the GrowthModels specified + by the user. + `project()` returns a new `TechnologyCollection` with + the original Technology objects and new objects for the projection. end note class SourceCollection { @@ -183,7 +258,7 @@ note left of SourceCollection::to_csv Export the source collection into a csv file. end note -note left of SourceCollection::to_dataframe +note right of SourceCollection::to_dataframe Export the source collection into a Pandas dataframe. end note @@ -219,4 +294,37 @@ Technology --> "*" Parameter : uses for its members TechnologyCollection --> "*" Technology : consists of SourceCollection --> "*" Source : consists of Datapackage --> "1" TechnologyCollection : contains +TechnologyCollection --> GrowthModel : used for learn(...) +GrowthModel <|-- LinearGrowth +GrowthModel <|-- ExponentialGrowth +GrowthModel <|-- LogisticGrowth +GrowthModel <|-- GompertzGrowth +GrowthModel <|-- GeneralLogisticGrowth + +abstract class LearningModel { + + project_costs(collection: TechnologyCollection): TechnologyCollection +} + +class ExperienceLearning { + Implements cost change via experience curve \n(cumulative experience). +} + +class ProductionLearning { + Implements cost change via production-based \nlearning (cumulative production). +} + +class TimebasedLearning { + Implements cost change via time-based learning \n(improvement over time). +} + +note right of LearningModel + Abstract base for learning models used in cost projections. + Subclasses implement specific learning logic. + `project_costs()` returns a new TechnologyCollection with cost projections. +end note + +TechnologyCollection --> LearningModel : uses for learn(...) \n (cost modifications) +LearningModel <|-- ExperienceLearning +LearningModel <|-- ProductionLearning +LearningModel <|-- TimebasedLearning @enduml diff --git a/pyproject.toml b/pyproject.toml index 299f7a5b..7e168f7d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -36,6 +36,7 @@ dependencies = [ "pydeflate>=2.1.3", "requests>=2.32.3", "savepagenow>=1.3.0", + "scipy>=1.16.1", ] [project.urls] @@ -114,6 +115,7 @@ source = [ # Static type checker settings [tool.mypy] +plugins = ["pydantic.mypy"] ignore_missing_imports = true no_implicit_optional = true warn_unused_ignores = true diff --git a/src/technologydata/datapackage.py b/src/technologydata/datapackage.py index d52e8361..10c0c340 100644 --- a/src/technologydata/datapackage.py +++ b/src/technologydata/datapackage.py @@ -23,7 +23,7 @@ logger = logging.getLogger(__name__) -class DataPackage(pydantic.BaseModel): # type: ignore +class DataPackage(pydantic.BaseModel): """ Container for a collection of Technology objects and/or Source objects, with batch operations and loading utilities. diff --git a/src/technologydata/parameter.py b/src/technologydata/parameter.py index 07da137d..34d59200 100644 --- a/src/technologydata/parameter.py +++ b/src/technologydata/parameter.py @@ -26,7 +26,7 @@ logger = logging.getLogger(__name__) -class Parameter(BaseModel): # type: ignore +class Parameter(BaseModel): """ Encapsulate a value with its unit, provenance, notes, sources, and more optional attributes required to describe technology parameters, like carrier, and heating value. @@ -143,7 +143,7 @@ def to(self, units: str) -> Self: ) != technologydata.extract_currency_units(units): raise NotImplementedError( "Currency conversion is not supported in the `to` method. " - "Use `change_currency` for currency conversions." + "Use `to_currency` for currency conversions." ) self._pint_quantity = self._pint_quantity.to(units) @@ -155,7 +155,7 @@ def to(self, units: str) -> Self: provenance=self.provenance, note=self.note, sources=self.sources, - ) + ) # type: ignore def to_currency( self, target_currency: str, country: str, source: str = "worldbank" @@ -266,7 +266,7 @@ def to_currency( provenance=self.provenance, note=self.note, sources=self.sources, - ) + ) # type: ignore def change_heating_value(self, to_heating_value: str) -> Self: """ @@ -370,7 +370,7 @@ def change_heating_value(self, to_heating_value: str) -> Self: provenance=self.provenance, # TODO implement for this function note=self.note, sources=self.sources, - ) + ) # type: ignore def _check_parameter_compatibility(self, other: Self) -> None: """ @@ -433,7 +433,7 @@ def __add__(self, other: Self) -> Self: sources=SourceCollection( sources=(self.sources.sources + other.sources.sources) ), - ) + ) # type: ignore def __sub__(self, other: Self) -> Self: """ @@ -468,7 +468,7 @@ def __sub__(self, other: Self) -> Self: sources=SourceCollection( sources=(self.sources.sources + other.sources.sources) ), - ) + ) # type: ignore def __truediv__(self, other: int | float | Self) -> Self: """ @@ -504,7 +504,7 @@ def __truediv__(self, other: int | float | Self) -> Self: provenance=self.provenance, note=self.note, sources=self.sources, - ) + ) # type: ignore # We don't check general compatibility here, as division is not a common operation for parameters. # Only ensure that the heating values are compatible. @@ -537,7 +537,7 @@ def __truediv__(self, other: int | float | Self) -> Self: sources=SourceCollection( sources=(self.sources.sources + other.sources.sources) ), - ) + ) # type: ignore def __mul__(self, other: int | float | Self) -> Self: """ @@ -576,7 +576,7 @@ def __mul__(self, other: int | float | Self) -> Self: provenance=self.provenance, note=self.note, sources=self.sources, - ) + ) # type: ignore # We don't check general compatibility here, as multiplication is not a common operation for parameters. # Only ensure that the heating values are compatible. @@ -605,7 +605,7 @@ def __mul__(self, other: int | float | Self) -> Self: sources=SourceCollection( sources=(self.sources.sources + other.sources.sources) ), - ) + ) # type: ignore def __eq__(self, other: object) -> bool: """ @@ -669,4 +669,4 @@ def __pow__(self, exponent: float | int) -> Self: provenance=self.provenance, note=self.note, sources=self.sources, - ) + ) # type: ignore diff --git a/src/technologydata/source.py b/src/technologydata/source.py index c18a76c8..7fda6b9b 100644 --- a/src/technologydata/source.py +++ b/src/technologydata/source.py @@ -26,7 +26,7 @@ logger = logging.getLogger(__name__) -class Source(pydantic.BaseModel): # type: ignore +class Source(pydantic.BaseModel): """ Represent a data source, including bibliographic and web information. diff --git a/src/technologydata/source_collection.py b/src/technologydata/source_collection.py index f989f291..f4beb955 100644 --- a/src/technologydata/source_collection.py +++ b/src/technologydata/source_collection.py @@ -8,7 +8,6 @@ import json import pathlib import re -import typing from collections.abc import Iterator from typing import Annotated, Self @@ -19,7 +18,7 @@ from technologydata.source import Source -class SourceCollection(pydantic.BaseModel): # type: ignore +class SourceCollection(pydantic.BaseModel): """ Represent a collection of sources. @@ -34,7 +33,7 @@ class SourceCollection(pydantic.BaseModel): # type: ignore list[Source], pydantic.Field(description="List of Source objects.") ] - def __iter__(self) -> Iterator["Source"]: + def __iter__(self) -> Iterator["Source"]: # type: ignore """ Return an iterator over the list of Source objects. @@ -102,7 +101,7 @@ def get(self, title: str, authors: str) -> Self: s for s in filtered_sources if pattern_authors.search(s.authors) ] - return SourceCollection(sources=filtered_sources) + return SourceCollection(sources=filtered_sources) # type: ignore def retrieve_all_from_wayback( self, download_directory: pathlib.Path @@ -232,7 +231,6 @@ def from_json( # pydantic_core.from_json return Any. Therefore, typing.cast makes sure that # the output is indeed a TechnologyCollection - return typing.cast( - SourceCollection, - cls.model_validate(pydantic_core.from_json(json_data, allow_partial=True)), + return cls.model_validate( + pydantic_core.from_json(json_data, allow_partial=True) ) diff --git a/src/technologydata/technologies/__init__.py b/src/technologydata/technologies/__init__.py new file mode 100644 index 00000000..5cbb4a64 --- /dev/null +++ b/src/technologydata/technologies/__init__.py @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: 2025 The technology-data authors +# +# SPDX-License-Identifier: MIT + +"""Provide models to create scenario-specific technology projections.""" diff --git a/src/technologydata/technologies/growth_models.py b/src/technologydata/technologies/growth_models.py new file mode 100644 index 00000000..dbfa2774 --- /dev/null +++ b/src/technologydata/technologies/growth_models.py @@ -0,0 +1,502 @@ +# SPDX-FileCopyrightText: 2025 The technology-data authors +# +# SPDX-License-Identifier: MIT +"""Growth models for projecting technology parameters over time.""" + +import inspect +import logging +import typing +from abc import abstractmethod +from collections.abc import Callable +from typing import Annotated, Self + +import numpy as np +from pydantic import BaseModel, ConfigDict, Field +from scipy.optimize import curve_fit + +logger = logging.getLogger(__name__) + + +class GrowthModel(BaseModel): + """ + Abstract base for growth models used in projections. + + To implement a new growth model that inherits from this class, the following must be provided: + 1. A mathematical function representing the growth model by implementing the abstract method `function(self, x: float, **parameters) -> float`. + The parameters of the function (besides `x`) will be automatically detected and used for fitting and projection. + 2. The parameters should be defined as attributes of the class, initialized to `None` if they are to be fitted. + + pydantic configuration: + - `validate_assignment = True`: Ensures that any assignment to model attributes is validated, + as growth models may be created first with missing parameters (set to None) and then fitted later + and data points may be added after creation. + """ + + model_config = ConfigDict(validate_assignment=True) + + data_points: Annotated[ + list[tuple[float, float]], + Field(description="Data points (x, y) for fitting the model, where f(x) = y."), + ] = list() + + @abstractmethod + def function(self, *args: typing.Any, **kwargs: typing.Any) -> float | np.ndarray: + """Represent the growth model function.""" + pass + + @property + def model_parameters(self) -> list[str]: + """Return the set of model parameters that have been provided (are not None).""" + return [f for f in type(self).model_fields.keys() if f != "data_points"] + + @property + def provided_parameters(self) -> list[str]: + """Return the set of model parameters that have been provided (are not None).""" + return list( + self.model_dump( + include=set(self.model_parameters), exclude_none=True + ).keys() + ) + + @property + def missing_parameters(self) -> list[str]: + """Return the set of model parameters that are missing (have not been provided).""" + return [p for p in self.model_parameters if p not in self.provided_parameters] + + def add_data(self, data_point: tuple[float, float]) -> Self: + """Add a data point to the model for fitting.""" + self.data_points.append(data_point) + return self + + def project( + self, + to_year: int, + ) -> float: + """ + Project using the model to the specified year. + + This function uses the parameters that have been provided for the model either directly or through fitting to data points. + + Parameters + ---------- + to_year : int + The year to which to project the values. + + Returns + ------- + float + The projected value for the specified year. + + """ + if len(self.missing_parameters) > 0: + raise ValueError( + f"Cannot project. The following parameters have not been specified yet and are missing: {self.missing_parameters}." + ) + + return self.function( + to_year, **self.model_dump(include=set(self.provided_parameters)) + ) + + @classmethod + def _kwpartial( + cls, f: Callable[..., float], **fixed_params: dict[str, float] + ) -> Callable[..., float]: + """ + Like functools.partial, but for keyword arguments. + + Enables us to wrap a function in a way that is compatible with scipy.optimize.curve_fit, + which does not play nicely with standard functools.partial. + For details see: https://stackoverflow.com/questions/79749129/use-curve-fit-with-partial-using-named-parameters-instead-of-positional-para/79749198#79749198 + + """ + f_sig = inspect.signature(f) + positional_params = ( + inspect.Parameter.POSITIONAL_OR_KEYWORD, + inspect.Parameter.POSITIONAL_ONLY, + ) + args = [ + p.name for p in f_sig.parameters.values() if p.kind in positional_params + ] + new_args = [ + inspect.Parameter(arg, inspect.Parameter.POSITIONAL_OR_KEYWORD) + for arg in args + if arg not in fixed_params + ] + new_sig = inspect.Signature(new_args) + + def wrapper(*f_args: float, **f_kwargs: dict[str, float]) -> float: + bound_args = new_sig.bind(*f_args, **f_kwargs) + bound_args.apply_defaults() + return f(**bound_args.arguments, **fixed_params) + + wrapper.__signature__ = new_sig # type: ignore[attr-defined] + wrapper.__name__ = f"kwpartial({f.__name__}, {fixed_params})" + + return wrapper + + def fit(self, p0: dict[str, float] | None = None) -> Self: + """ + Fit the growth model using the parameters and data points provided to the model. + + Parameters + ---------- + p0 : dict[str, float], optional + Initial guesses for the missing parameters to be fitted. + May contain all or a subset of the missing parameters. + Any parameter not provided will be initialized with a starting guess of 1.0 (scipy's default). + + Returns + ------- + Self + The model instance with the fitted parameters set. + + Raises + ------ + ValueError + If there are not enough data points to fit the model. + + """ + # if all parameters of the model are already fixed, then we cannot fit anything + if len(self.provided_parameters) == len(self.model_parameters): + logger.info("All parameters are already fixed, cannot fit anything.") + return self + + # The number of data points must be at least equal to the number of parameters to fit + if len(self.data_points) < len(self.missing_parameters): + raise ValueError( + f"Not enough data points to fit the model. Need at least {len(self.missing_parameters)}, got {len(self.data_points)}." + ) + + # Fit the model to the data points: + # build a partial function that includes the already fixed parameters + func = self._kwpartial( + self.function, + **self.model_dump(include=set(self.provided_parameters), exclude_none=True), + ) + + # p0 optionally allows to provide initial guesses for the parameters to fit + if p0 is None: + p0 = {} + + # the dict needs to be transformed into a list with the parameters in the correct order + # if a parameter is missing from p0, we use 1 as a default initial guess (scipy's default) + p0_ = [p0.get(param, 1) for param in self.missing_parameters] + + # fit the function to the data points + xdata, ydata = zip(*self.data_points) + popt, pcov = curve_fit(f=func, xdata=xdata, ydata=ydata, p0=p0_) + + logger.debug(f"Fitted parameters: {popt}") + logger.debug(f"Covariance of the parameters: {pcov}") + + # assign the fitted parameters to the model + for param, value in zip(self.missing_parameters, popt): + logger.debug(f"Setting parameter {param} to fitted value {value}") + setattr(self, param, value) + + return self + + +class LinearGrowth(GrowthModel): + """Project with linear growth model.""" + + x0: Annotated[ + float | None, + Field( + description="The reference x-value (e.g., starting year) for the linear function.", + ), + ] = None + m: Annotated[ + float | None, + Field(description="Annual growth rate for the linear function."), + ] = None + A: Annotated[ + float | None, + Field(description="Starting value for the linear function."), + ] = None + + def function( + self, x: float | np.ndarray, x0: float, m: float, A: float + ) -> float | np.ndarray: + """ + Linear function for the growth model. + + f(x) = m * (x - x0) + a + + Parameters + ---------- + x : float | numpy Array + The input value(s) on which to evaluate the function, e.g. a year '2025'. + x0 : float + The reference x-value (e.g., starting year) for the linear function. + m : float, optional + The slope of the linear function. + A : float, optional + The constant offset of the linear function. + + Returns + ------- + float | numpy Array + The result(s) of the linear function evaluation at x. + + """ + return m * (x - x0) + A + + +class ExponentialGrowth(GrowthModel): + """Project with exponential growth model.""" + + x0: Annotated[ + float | None, + Field( + description="The reference x-value (e.g., starting year) for the exponential function.", + ), + ] = None + A: Annotated[ + float | None, + Field(description="Initial value for the exponential function."), + ] = None + m: Annotated[ + float | None, + Field(description="The multiplier for the exponential function."), + ] = None + k: Annotated[ + float | None, + Field(description="Growth rate for the exponential function."), + ] = None + + def function( + self, x: float | np.ndarray, x0: float, A: float, m: float, k: float + ) -> float | np.ndarray: + """ + Exponential function for the growth model. + + f(x) = A + m * exp(k * (x - x0)) + + Parameters + ---------- + x : float | numpy Array + The input value(s) on which to evaluate the function, e.g. a year '2025'. + x0 : float + The reference x-value (e.g., starting year) for the exponential function. + A : float + The lower horizontal asymptote of the exponential function. + m : float + The initial value of the exponential function. + k : float + The growth rate of the exponential function. + + Returns + ------- + float | numpy Array + The result(s) of the exponential function evaluation at x. + + """ + return A + m * np.exp(k * (x - x0)) + + +class GeneralLogisticGrowth(GrowthModel): + """Project with a generalized logistic growth model.""" + + x0: Annotated[ + float | None, + Field( + description="The x-value of the sigmoid's midpoint (inflection point/midpoint year).", + ), + ] = None + A: Annotated[ + float | None, + Field( + description="The lower horizontal asymptote of the logistic function.", + ), + ] = None + K: Annotated[ + float | None, + Field( + description="The upper horizontal asymptote of the logistic function for C=1.", + ), + ] = None + B: Annotated[ + float | None, + Field( + description="The growth rate of the logistic function.", + ), + ] = None + Q: Annotated[ + float | None, + Field( + description="Parameter related to the value of f(0).", + ), + ] = None + C: Annotated[ + float | None, + Field( + description="Parameter related to the upper horizontal asymptote, often set to 1.", + ), + ] = None + nu: Annotated[ + float | None, + Field( + description="Parameter affecting near which asymptote the maximum growth occurs.", + ), + ] = None + + def function( + self, + x: float | np.ndarray, + x0: float, + A: float, + K: float, + B: float, + Q: float, + C: float, + nu: float, + ) -> float | np.ndarray: + """ + Generalized logistic function for the growth model. + + f(x) = A + (K - A) / (C + Q * exp(-B * (x - M)))^(1/nu) + + Parameters + ---------- + x : float | numpy Array + The input value(s) on which to evaluate the function, e.g. a year '2025'. + x0 : float + The x-value of the sigmoid's midpoint (inflection point). + A : float + The lower horizontal asymptote of the logistic function. + K : float + The upper horizontal asymptote of the logistic function for C=1. + If A=0 and C=1, then K is the carrying capacity. + B : float + The growth rate of the logistic function. + Q : float + Related to the value of f(0). + C : float + Parameter related to the upper horizontal asymptote, often set to 1. + nu : float + Parameter affecting near which asymptote the maximum growth occurs. + + Returns + ------- + float | numpy Array + The result(s) of the generalized logistic function evaluation at x. + + """ + return A + (K - A) / (C + Q * np.exp(-B * (x - x0))) ** (1.0 / nu) + + +class LogisticGrowth(GrowthModel): + """Project with a logistic growth model.""" + + x0: Annotated[ + float | None, + Field( + description="The x-value of the sigmoid's midpoint (inflection point/midpoint year).", + ), + ] = None + A: Annotated[ + float | None, + Field( + description="The lower horizontal asymptote of the logistic function.", + ), + ] = None + L: Annotated[ + float | None, + Field( + description="Carrying capacity of the logistic function.", + ), + ] = None + k: Annotated[ + float | None, + Field( + description="Growth rate of the logistic function.", + ), + ] = None + + def function( + self, x: float | np.ndarray, x0: float, A: float, L: float, k: float + ) -> float | np.ndarray: + """ + Logistic function for the growth model. + + f(x) = A + L / (1 + exp(-k * (x - x0))) + + Parameters + ---------- + x : float | numpy Array + The input value(s) on which to evaluate the function, e.g. a year '2025'. + x0 : float + The x-value of the sigmoid's midpoint (inflection point). + A : float + The lower horizontal asymptote of the logistic function. + L : float + The carrying capacity of the logistic function. + k : float + The growth rate of the logistic function. + + Returns + ------- + float | numpy Array + The result(s) of the logistic function evaluation at x. + + """ + return A + L / (1 + np.exp(-k * (x - x0))) + + +class GompertzGrowth(GrowthModel): + """Project with a Gompertz growth model.""" + + A: Annotated[ + float | None, + Field( + description="The upper asymptote (maximum value) of the Gompertz function.", + ), + ] = None + k: Annotated[ + float | None, + Field( + description="The growth rate of the Gompertz function.", + ), + ] = None + x0: Annotated[ + float | None, + Field( + description="The x-value of the inflection point (midpoint year) of the Gompertz function.", + ), + ] = None + b: Annotated[ + float | None, + Field( + description="The displacement along the x-axis of the Gompertz function.", + ), + ] = None + + def function( + self, x: float | np.ndarray, A: float, k: float, x0: float, b: float + ) -> float | np.ndarray: + """ + Gompertz function for the growth model. + + f(x) = A * exp(-b * exp(-k * (x - x0))) + + Parameters + ---------- + x : float | numpy Array + The input value(s) on which to evaluate the function, e.g. a year '2025'. + A : float + The upper asymptote (maximum value) of the Gompertz function. + k : float + The growth rate of the Gompertz function. + x0 : float + The x-value of the inflection point (midpoint year) of the Gompertz function. + b : float + The displacement along the x-axis of the Gompertz function. + + Returns + ------- + float | numpy Array + The result(s) of the Gompertz function evaluation at x. + + """ + return A * np.exp(-b * np.exp(-k * (x - x0))) diff --git a/src/technologydata/technology.py b/src/technologydata/technology.py index 304053ea..6f94a5cb 100644 --- a/src/technologydata/technology.py +++ b/src/technologydata/technology.py @@ -14,7 +14,7 @@ from technologydata.parameter import Parameter -class Technology(pydantic.BaseModel): # type: ignore +class Technology(pydantic.BaseModel): """ Represent a technology with region, year, and a flexible set of parameters. diff --git a/src/technologydata/technology_collection.py b/src/technologydata/technology_collection.py index c51e53d8..00b88005 100644 --- a/src/technologydata/technology_collection.py +++ b/src/technologydata/technology_collection.py @@ -6,9 +6,9 @@ import csv import json +import logging import pathlib import re -import typing from collections.abc import Iterator from typing import Annotated, Self @@ -16,10 +16,14 @@ import pydantic import pydantic_core +from technologydata.parameter import Parameter +from technologydata.technologies.growth_models import GrowthModel, LinearGrowth from technologydata.technology import Technology +logger = logging.getLogger(__name__) -class TechnologyCollection(pydantic.BaseModel): # type: ignore + +class TechnologyCollection(pydantic.BaseModel): """ Represent a collection of technologies. @@ -34,7 +38,7 @@ class TechnologyCollection(pydantic.BaseModel): # type: ignore list[Technology], pydantic.Field(description="List of Technology objects.") ] - def __iter__(self) -> Iterator[Technology]: + def __iter__(self) -> Iterator[Technology]: # type: ignore """ Return an iterator over the list of Technology objects. @@ -117,7 +121,7 @@ def get( if pattern_detailed_technology.search(t.detailed_technology) ] - return TechnologyCollection(technologies=filtered_technologies) + return TechnologyCollection(technologies=filtered_technologies) # type: ignore def to_dataframe(self) -> pandas.DataFrame: """ @@ -232,9 +236,8 @@ def from_json(cls, file_path: pathlib.Path | str) -> Self: # pydantic_core.from_json return Any. Therefore, typing.cast makes sure that # the output is indeed a TechnologyCollection - return typing.cast( - TechnologyCollection, - cls.model_validate(pydantic_core.from_json(json_data, allow_partial=True)), + return cls.model_validate( + pydantic_core.from_json(json_data, allow_partial=True) ) def to_currency( @@ -277,4 +280,180 @@ def to_currency( ) ) - return TechnologyCollection(technologies=new_techs) + return TechnologyCollection(technologies=new_techs) # type: ignore + + def fit( + self, parameter: str, model: GrowthModel, p0: dict[str, float] | None = None + ) -> GrowthModel: + """ + Fit a growth model to a specified parameter across all technologies in the collection. + + This method aggregates data points for the specified parameter from all technologies + in the collection, adds them to the provided growth model, and fits the model using + the initial parameter guesses provided in `p0`. + + Parameters + ---------- + parameter : str + The name of the parameter to fit the model to (e.g., "installed capacity"). + model : GrowthModel + An instance of a growth model (e.g., LinearGrowth, ExponentialGrowth) to be fitted. + May already be partially initialized with some parameters and/or data points. + p0 : dict[str, float], optional + Initial guess for the model parameters. + + Returns + ------- + GrowthModel + The fitted growth model with optimized parameters. + + Raises + ------ + ValueError + If the collection contains incompatible parameters with different units, heating values, or carriers. + + """ + first_param = None + # Aggregate data points for the specified parameter from all technologies + for tech in self.technologies: + param = tech.parameters[parameter] + if first_param is None: + first_param = param + + try: + first_param._check_parameter_compatibility(param) + except ValueError as e: + raise ValueError( + f"The collection contains one or more parameters with incompatible units/heating values/carriers:\n" + f"* {first_param}, and\n" + f"* {param}." + ) from e + + model.add_data((tech.year, param.magnitude)) + + # Fit the model using the provided initial parameter guesses + model.fit(p0=p0) + + return model + + def project( + self, + to_years: list[int], + parameters: dict[str, GrowthModel | str], + ) -> Self: + """ + Project specified parameters for all technologies in the collection to future years. + + This method uses the provided growth models to project the specified parameters + for each technology in the collection to the given future years. + + To keep other parameters that should not be projected, add them to the dictionary as well + without a growth model. Instead, there are other options available: + 'mean', 'closest' and 'NaN'. + 'mean' will set the parameter to the mean of all existing values in the collection, + while 'NaN' will add the parameter with NaN values as a placeholder. + 'closest' will set the parameter to the value of the closest year in the original data, + with a preference for past years if equidistant. (Not yet implemented.) + + The method creates new Technology objects for each combination of original technology + and future year, applying the appropriate growth model projections. + + Parameters + ---------- + to_years : list[int] + List of future years to which the parameters should be projected. + parameters : dict[str, GrowthModel | str] + A dictionary mapping parameter names to their respective growth models for projection. + If provided, `parameter` and `model` cannot be used. + To keep other parameters without projecting, available options are 'mean', 'closest' and 'NaN'. + + Returns + ------- + TechnologyCollection + A new TechnologyCollection with technologies projected to the specified future years. + + Raises + ------ + ValueError + If neither `parameter` and `model`, or `parameters` are not or all provided. + + Examples + -------- + >>> tc.project( + ... to_years=[2030, 2040], + ... parameters={ + ... "installed capacity": LinearGrowth(m=0.5, A=10), + ... "lifetime": "mean", + ... "efficiency": "NaN" + ... } + ... ) + + """ + logger.debug(f"Projecting parameters as follows: {parameters}") + + projected_technologies = [] + for to_year in to_years: + # Create a new Technology object for the projected year + new_tech = Technology( + name=self.technologies[0].name, + region=self.technologies[0].region, + year=to_year, + case=self.technologies[0].case, + detailed_technology=self.technologies[0].detailed_technology, + parameters={}, + ) + + for param, model in parameters.items(): + new_param: Parameter + + # Trick: A linear growth with m=0 returns the mean of the provided data points + # this way we can reuse the logic already implemented for fitting and projecting below + if model == "mean": + model = LinearGrowth(m=0) + + if isinstance(model, GrowthModel): + # Fit the model to the parameter data + model = self.fit(param, model.model_copy()) + + # Project the model to the specified future years + param_value = model.project(to_year) + + logger.debug( + f"Resulting model for {param} in year {to_year}: {model}" + ) + # Add the projected parameter to the new technology + new_param = ( + self.technologies[0] + .parameters[param] + .model_copy( + deep=True, + update={ + "magnitude": param_value, + "provenance": f"Projected to {to_year} using {model}.", + "note": None, # Clear any existing note + "sources": None, # Clear any existing sources + }, + ) + ) + + elif model == "NaN": + new_param = Parameter( + magnitude=float("nan"), + note="Placeholder parameters with NaN value.", + ) + elif model == "closest": + raise NotImplementedError( + "'closest' option for '{param}' not yet implemented." + ) # TODO + else: + raise ValueError( + f"Unexpected model type for parameter '{param}': {model}" + ) + + new_tech.parameters[param] = new_param + + logger.debug(f"Projected technology for year {to_year}: {new_tech}") + + projected_technologies.append(new_tech) + + return TechnologyCollection(technologies=projected_technologies) # type: ignore diff --git a/test/test_growth_models.py b/test/test_growth_models.py new file mode 100644 index 00000000..a29a10f9 --- /dev/null +++ b/test/test_growth_models.py @@ -0,0 +1,281 @@ +# SPDX-FileCopyrightText: 2025 The technology-data authors +# SPDX-License-Identifier: MIT +"""Unit tests for growth models in technologydata.technologies.growth_models.""" + +import numpy as np +import pytest + +from technologydata.technologies.growth_models import ( + ExponentialGrowth, + GeneralLogisticGrowth, + GompertzGrowth, + LinearGrowth, + LogisticGrowth, +) + + +def test_linear_add_data_points() -> None: + """Test adding data points to LinearGrowth model.""" + x0 = 0 + m = 2.0 + A = 1.0 + + x = np.arange(-10, 30) + y = m * x + A + + model = LinearGrowth() + for xi, yi in zip(x, y): + model.add_data((xi, yi)) + model.fit(p0={"x0": x0, "m": m, "A": A}) + + assert model.x0 == pytest.approx(x0, rel=1e-2) + assert model.m == pytest.approx(m, rel=1e-2) + assert model.A == pytest.approx(A, rel=1e-2) + + +def test_linear_growth_projection() -> None: + """Test the projection method of LinearGrowth.""" + x0 = 0 + m = 2.0 + A = 5.0 + x = 10 + model = LinearGrowth(x0=x0, m=2.0, A=5.0, data_points=[]) + assert model.project(10) == pytest.approx(m * x + A) + + +def test_linear_growth_fit() -> None: + """Test fitting of the LinearGrowth model.""" + x0 = 0 + m = 2.0 + A = 1.0 + + x = np.arange(-10, 30) + y = m * x + A + + model = LinearGrowth(x0=x0, m=None, A=None, data_points=[*zip(x, y)]) + model.fit(p0={"x0": x0, "m": m, "A": A}) + assert model.x0 == pytest.approx(x0, rel=1e-2) + assert model.m == pytest.approx(m, rel=1e-2) + assert model.A == pytest.approx(A, rel=1e-2) + + +def test_exponential_growth_projection() -> None: + """Test the projection method of ExponentialGrowth.""" + A = 2.0 + m = 1.0 + k = 0.5 + x0 = 0.0 + x = 2 + + model = ExponentialGrowth(A=A, m=m, k=k, x0=x0, data_points=[]) + assert model.project(2) == pytest.approx(A + m * np.exp(k * (x - x0))) + + +def test_exponential_growth_fit() -> None: + """Test fitting of the ExponentialGrowth model.""" + A = 2.0 + m = 1.0 + k = 0.5 + x0 = 0.0 + + x = np.arange(0, 30) + y = A + m * np.exp(k * (x - x0)) + + model = ExponentialGrowth(A=None, m=None, k=None, x0=None, data_points=[*zip(x, y)]) + model.fit(p0={"A": A, "m": m, "k": k, "x0": x0}) + + assert model.A == pytest.approx(A, rel=1e-2) + assert model.m == pytest.approx(m, rel=1e-2) + assert model.k == pytest.approx(k, rel=1e-2) + assert model.x0 == pytest.approx(x0, rel=1e-2) + + +def test_logistic_growth_projection() -> None: + """Test the projection method of LogisticGrowth.""" + A = 2.0 + L = 10.0 + k = 1.0 + x0 = 0.0 + + model = LogisticGrowth(A=A, L=L, k=k, x0=x0, data_points=[]) + assert model.project(0) == pytest.approx(A + L / (1 + np.exp(-k * (0 - x0)))) + + +def test_logistic_growth_fit() -> None: + """Test fitting of the LogisticGrowth model.""" + A = 2.0 + L = 10.0 + k = 1.0 + x0 = 0.0 + + x = np.arange(-2, 30) + y = A + L / (1 + np.exp(-k * (x - x0))) + + model = LogisticGrowth(A=None, L=None, k=None, x0=None, data_points=[*zip(x, y)]) + model.fit(p0={"A": A, "L": L, "k": k, "x0": x0}) + + assert model.A == pytest.approx(A, rel=1e-2) + assert model.L == pytest.approx(L, rel=1e-2) + assert model.k == pytest.approx(k, rel=1e-2) + assert model.x0 == pytest.approx(x0, rel=1e-2) + + +def test_gompertz_growth_projection() -> None: + """Test the projection method of GompertzGrowth.""" + A = 10.0 + k = 1.0 + x0 = 0.0 + b = 1.0 + + model = GompertzGrowth(A=A, k=k, x0=x0, b=b, data_points=[]) + + assert model.project(0) == pytest.approx(A * np.exp(-b * np.exp(-k * (0 - x0)))) + + +def test_gompertz_growth_fit() -> None: + """Test fitting of the GompertzGrowth model.""" + A = 10.0 + k = 1.0 + x0 = 0.0 + b = 1.0 + + x = np.arange(-2, 30) + y = A * np.exp(-b * np.exp(-k * (x - x0))) + + model = GompertzGrowth(A=None, k=None, x0=None, b=None, data_points=[*zip(x, y)]) + model.fit(p0={"A": A, "k": k, "x0": x0, "b": b}) + + assert model.A == pytest.approx(A, rel=1e-2) + assert model.k == pytest.approx(k, rel=1e-2) + assert model.x0 == pytest.approx(x0, rel=1e-2) + assert model.b == pytest.approx(b, rel=1e-2) + + +def test_general_logistic_growth_projection() -> None: + """Test the projection method of GeneralLogisticGrowth.""" + x0 = 0 + A = 2.0 + K = 10.0 + B = 1.0 + nu = 1.0 + Q = 1.0 + C = 1.0 + + model = GeneralLogisticGrowth(x0=x0, A=A, K=K, B=B, nu=nu, Q=Q, C=C, data_points=[]) + + assert model.project(0) == pytest.approx(model.function(0, x0, A, K, B, nu, Q, C)) + + +def test_general_logistic_growth_fit() -> None: + """Test fitting of the GeneralLogisticGrowth model.""" + x0 = 0 + A = 2.0 + K = 10.0 + B = 1.0 + nu = 1.0 + Q = 1.0 + C = 1.0 + + x: np.array = np.arange(-2, 30) + y: np.array = GeneralLogisticGrowth().function(x, x0, A, K, B, Q, C, nu) + + model = GeneralLogisticGrowth(data_points=[*zip(x, y)]) + model.fit(p0={"x0": x0, "A": A, "K": K, "B": B, "nu": nu, "Q": Q, "C": C}) + + assert model.A == pytest.approx(A, rel=1e-2) + assert model.K == pytest.approx(K, rel=1e-2) + assert model.B == pytest.approx(B, rel=1e-2) + assert model.nu == pytest.approx(nu, rel=1e-2) + assert model.Q == pytest.approx(Q, rel=1e-2) + assert model.C == pytest.approx(C, rel=1e-2) + + +# TODO: Add tests for +# - partial fitting (some parameters fixed) +# - fitting with noise/without p0 +# - illegal arguments to p0 + + +def test_partial_fitting_linear_growth() -> None: + """Test fitting LinearGrowth with one parameter fixed and one to fit.""" + x0 = 0 + m = 2.0 + A = 1.0 + x: np.array = np.arange(-10, 30) + y: np.array = LinearGrowth().function(x, x0, m, A) + + # Fix x0 and m, only fit A + model = LinearGrowth(x0=x0, m=m, A=None, data_points=[*zip(x, y)]) + model.fit(p0={"A": A * 0.5}) + + assert model.m == pytest.approx(m, rel=1e-2) + assert model.A == pytest.approx(A, rel=1e-2) + + +def test_fit_with_noisy_data() -> None: + """Test fitting LinearGrowth with noisy data to check robustness.""" + rng = np.random.default_rng(42) + x0 = 0 + m = 2.0 + A = 20.0 + x: np.array = np.arange(-10, 30) + noise = rng.normal(0, 0.1, size=x.shape) + y: np.array = LinearGrowth().function(x, x0, m, A) + noise + + # Fitting with x0 and A free can lead to competing solutions, so fix x0 + model = LinearGrowth(x0=x0, data_points=[*zip(x, y)]) + model.fit() + + # Should be close to true values despite noise + assert model.m == pytest.approx(m, rel=1e-1) + assert model.A == pytest.approx(A, rel=1e-1) + + +def test_fit_without_p0() -> None: + """Test fitting LinearGrowth without providing p0 (should use defaults and still work).""" + x0 = 0 + m = 10.0 + A = 5.0 + x: np.array = np.arange(-25, 25) + y: np.array = LinearGrowth().function(x, x0, m, A) + + # Fix x0 to avoid competing solutions + model = LinearGrowth(x0=x0, data_points=[*zip(x, y)]) + model.fit() # No p0 provided + + assert model.m == pytest.approx(m, rel=1e-2) + assert model.A == pytest.approx(A, rel=1e-2) + + +def test_illegal_p0_argument() -> None: + """Test that fitting works with missing p0 keys (should use defaults, not raise).""" + x0 = 5 + m = 2.0 + A = 1.0 + x: np.array = np.arange(-10, 30) + y: np.array = LinearGrowth().function(x, x0, m, A) + + model = LinearGrowth(data_points=[*zip(x, y)]) + # Provide p0 missing one parameter (A missing) + model.fit(p0={"x0": x0, "m": m}) + + # Should still fit correctly + assert model.m == pytest.approx(m, rel=1e-2) + assert model.A == pytest.approx(A, rel=1e-2) + + +def test_fit_with_p0_far_from_target() -> None: + """Test fitting LinearGrowth with p0 far from the true values (should still converge).""" + x0 = 0 + m = 20.0 + A = 5.0 + x: np.array = np.arange(-10, 30) + y: np.array = LinearGrowth().function(x, x0, m, A) + + # Fix x0 to avoid competing solutions + model = LinearGrowth(x0=x0, data_points=[*zip(x, y)]) + # Provide p0 far from the actual values + model.fit(p0={"m": m * 10, "A": A * -2}) + + assert model.m == pytest.approx(m, rel=1e-2) + assert model.A == pytest.approx(A, rel=1e-2) diff --git a/test/test_technology_collection.py b/test/test_technology_collection.py index c2608f63..57b0f609 100644 --- a/test/test_technology_collection.py +++ b/test/test_technology_collection.py @@ -138,6 +138,144 @@ def test_get( assert isinstance(result, technologydata.TechnologyCollection) assert len(result.technologies) == 1 + def test_fit_linear_growth(self) -> None: + """Test TechnologyCollection.fit with LinearGrowth model.""" + tech = technologydata.Technology( + name="Amazing technology", + detailed_technology="", + region="", + case="", + year=2020, + parameters={ + "total units": technologydata.Parameter(magnitude=2020), + }, + ) + + tc = technologydata.TechnologyCollection( + technologies=[ + tech, + tech.model_copy( + deep=True, + update={ + "year": 2030, + "parameters": { + "total units": technologydata.Parameter(magnitude=2030), + }, + }, + ), + tech.model_copy( + deep=True, + update={ + "year": 2040, + "parameters": { + "total units": technologydata.Parameter(magnitude=2040), + }, + }, + ), + ] + ) + + # Fit 'total units' parameter with LinearGrowth + from technologydata.technologies.growth_models import LinearGrowth + + model = LinearGrowth() + fitted = tc.fit("total units", model, p0={"x0": 0, "m": 1, "A": 0}) + assert isinstance(fitted, LinearGrowth) + print(fitted) + assert pytest.approx(fitted.x0) == 0 + assert pytest.approx(fitted.m) == 1 + assert pytest.approx(fitted.A) == 0 + + def test_project_linear_growth(self) -> None: + """Test TechnologyCollection.project with LinearGrowth model.""" + input_file = pathlib.Path( + path_cwd, + "test", + "test_data", + "solar_photovoltaics_example", + "technologies.json", + ) + tc = technologydata.TechnologyCollection.from_json(input_file) + from technologydata.technologies.growth_models import LinearGrowth + + projected_tc = tc.project( + to_years=[2030], + parameters={"capacity": LinearGrowth(x0=2020)}, + ) + assert isinstance(projected_tc, technologydata.TechnologyCollection) + assert projected_tc.technologies[0].year == 2030 + assert "capacity" in projected_tc.technologies[0].parameters + assert isinstance( + projected_tc.technologies[0].parameters["capacity"].magnitude, float + ) + + # non-projected parameters should not be present + assert "investment" not in projected_tc.technologies[0].parameters + + def test_project_other_parameter_options(self) -> None: + """Test projection of parameters using 'mean', 'closest', and 'NaN' options.""" + tech = technologydata.Technology( + name="Amazing technology", + detailed_technology="", + region="", + case="", + year=2020, + parameters={ + "total units": technologydata.Parameter(magnitude=2000), + }, + ) + + tc = technologydata.TechnologyCollection( + technologies=[ + tech, + tech.model_copy( + deep=True, + update={ + "year": 2030, + "parameters": { + "total units": technologydata.Parameter(magnitude=3000), + }, + }, + ), + ] + ) + + ptc = tc.project( + to_years=[2025], + parameters={ + "total units": "mean", + }, + ) + + assert ( + pytest.approx( + ( + tc.technologies[0].parameters["total units"].magnitude + + tc.technologies[1].parameters["total units"].magnitude + ) + / 2, + ) + == ptc.technologies[0].parameters["total units"].magnitude + ) + + ptc = tc.project( + to_years=[2025], + parameters={ + "total units": "NaN", + }, + ) + + assert pandas.isna(ptc.technologies[0].parameters["total units"].magnitude) + + # "closest" currently raises NotImplementedError + with pytest.raises(NotImplementedError): + _ = tc.project( + to_years=[2025], + parameters={ + "total units": "closest", + }, + ) + def test_to_currency(self) -> None: """Test currency conversion for all technologies in the collection.""" input_file = pathlib.Path( diff --git a/uv.lock b/uv.lock index d1d98700..6f09e707 100644 --- a/uv.lock +++ b/uv.lock @@ -1,77 +1,82 @@ version = 1 -revision = 2 +revision = 1 requires-python = ">=3.12" +resolution-markers = [ + "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'", + "python_full_version < '3.14' and platform_python_implementation != 'PyPy'", + "platform_python_implementation == 'PyPy'", +] [[package]] name = "annotated-types" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload_time = "2024-05-20T21:33:25.928Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload_time = "2024-05-20T21:33:24.1Z" }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, ] [[package]] name = "appnope" version = "0.1.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload_time = "2024-02-06T09:43:11.258Z" } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170 } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload_time = "2024-02-06T09:43:09.663Z" }, + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, ] [[package]] name = "asttokens" version = "3.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978, upload_time = "2024-11-30T04:30:14.439Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978 } wheels = [ - { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload_time = "2024-11-30T04:30:10.946Z" }, + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, ] [[package]] name = "attrs" version = "25.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload_time = "2025-03-13T11:10:22.779Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload_time = "2025-03-13T11:10:21.14Z" }, + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, ] [[package]] name = "babel" version = "2.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload_time = "2025-02-01T15:17:41.026Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload_time = "2025-02-01T15:17:37.39Z" }, + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, ] [[package]] name = "backrefs" version = "5.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/eb/a7/312f673df6a79003279e1f55619abbe7daebbb87c17c976ddc0345c04c7b/backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59", size = 5765857, upload_time = "2025-06-22T19:34:13.97Z" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/a7/312f673df6a79003279e1f55619abbe7daebbb87c17c976ddc0345c04c7b/backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59", size = 5765857 } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/4d/798dc1f30468134906575156c089c492cf79b5a5fd373f07fe26c4d046bf/backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f", size = 380267, upload_time = "2025-06-22T19:34:05.252Z" }, - { url = "https://files.pythonhosted.org/packages/55/07/f0b3375bf0d06014e9787797e6b7cc02b38ac9ff9726ccfe834d94e9991e/backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf", size = 392072, upload_time = "2025-06-22T19:34:06.743Z" }, - { url = "https://files.pythonhosted.org/packages/9d/12/4f345407259dd60a0997107758ba3f221cf89a9b5a0f8ed5b961aef97253/backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa", size = 397947, upload_time = "2025-06-22T19:34:08.172Z" }, - { url = "https://files.pythonhosted.org/packages/10/bf/fa31834dc27a7f05e5290eae47c82690edc3a7b37d58f7fb35a1bdbf355b/backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b", size = 399843, upload_time = "2025-06-22T19:34:09.68Z" }, - { url = "https://files.pythonhosted.org/packages/fc/24/b29af34b2c9c41645a9f4ff117bae860291780d73880f449e0b5d948c070/backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9", size = 411762, upload_time = "2025-06-22T19:34:11.037Z" }, - { url = "https://files.pythonhosted.org/packages/41/ff/392bff89415399a979be4a65357a41d92729ae8580a66073d8ec8d810f98/backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60", size = 380265, upload_time = "2025-06-22T19:34:12.405Z" }, + { url = "https://files.pythonhosted.org/packages/19/4d/798dc1f30468134906575156c089c492cf79b5a5fd373f07fe26c4d046bf/backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f", size = 380267 }, + { url = "https://files.pythonhosted.org/packages/55/07/f0b3375bf0d06014e9787797e6b7cc02b38ac9ff9726ccfe834d94e9991e/backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf", size = 392072 }, + { url = "https://files.pythonhosted.org/packages/9d/12/4f345407259dd60a0997107758ba3f221cf89a9b5a0f8ed5b961aef97253/backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa", size = 397947 }, + { url = "https://files.pythonhosted.org/packages/10/bf/fa31834dc27a7f05e5290eae47c82690edc3a7b37d58f7fb35a1bdbf355b/backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b", size = 399843 }, + { url = "https://files.pythonhosted.org/packages/fc/24/b29af34b2c9c41645a9f4ff117bae860291780d73880f449e0b5d948c070/backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9", size = 411762 }, + { url = "https://files.pythonhosted.org/packages/41/ff/392bff89415399a979be4a65357a41d92729ae8580a66073d8ec8d810f98/backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60", size = 380265 }, ] [[package]] name = "beautifulsoup4" -version = "4.13.4" +version = "4.13.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "soupsieve" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload_time = "2025-04-15T17:05:13.836Z" } +sdist = { url = "https://files.pythonhosted.org/packages/85/2e/3e5079847e653b1f6dc647aa24549d68c6addb4c595cc0d902d1b19308ad/beautifulsoup4-4.13.5.tar.gz", hash = "sha256:5e70131382930e7c3de33450a2f54a63d5e4b19386eab43a5b34d594268f3695", size = 622954 } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload_time = "2025-04-15T17:05:12.221Z" }, + { url = "https://files.pythonhosted.org/packages/04/eb/f4151e0c7377a6e08a38108609ba5cede57986802757848688aeedd1b9e8/beautifulsoup4-4.13.5-py3-none-any.whl", hash = "sha256:642085eaa22233aceadff9c69651bc51e8bf3f874fb6d7104ece2beb24b47c4a", size = 105113 }, ] [[package]] @@ -81,9 +86,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "chardet" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a7/fe/7ebfec74d49f97fc55cd38240c7a7d08134002b1e14be8c3897c0dd5e49b/binaryornot-0.4.4.tar.gz", hash = "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", size = 371054, upload_time = "2017-08-03T15:55:25.08Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/fe/7ebfec74d49f97fc55cd38240c7a7d08134002b1e14be8c3897c0dd5e49b/binaryornot-0.4.4.tar.gz", hash = "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", size = 371054 } wheels = [ - { url = "https://files.pythonhosted.org/packages/24/7e/f7b6f453e6481d1e233540262ccbfcf89adcd43606f44a028d7f5fae5eb2/binaryornot-0.4.4-py2.py3-none-any.whl", hash = "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4", size = 9006, upload_time = "2017-08-03T15:55:31.23Z" }, + { url = "https://files.pythonhosted.org/packages/24/7e/f7b6f453e6481d1e233540262ccbfcf89adcd43606f44a028d7f5fae5eb2/binaryornot-0.4.4-py2.py3-none-any.whl", hash = "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4", size = 9006 }, ] [[package]] @@ -93,9 +98,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083, upload_time = "2024-10-29T18:30:40.477Z" } +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406, upload_time = "2024-10-29T18:30:38.186Z" }, + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406 }, ] [package.optional-dependencies] @@ -107,9 +112,9 @@ css = [ name = "boolean-py" version = "5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c4/cf/85379f13b76f3a69bca86b60237978af17d6aa0bc5998978c3b8cf05abb2/boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95", size = 37047, upload_time = "2025-04-03T10:39:49.734Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c4/cf/85379f13b76f3a69bca86b60237978af17d6aa0bc5998978c3b8cf05abb2/boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95", size = 37047 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/ca/78d423b324b8d77900030fa59c4aa9054261ef0925631cd2501dd015b7b7/boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9", size = 26577, upload_time = "2025-04-03T10:39:48.449Z" }, + { url = "https://files.pythonhosted.org/packages/e5/ca/78d423b324b8d77900030fa59c4aa9054261ef0925631cd2501dd015b7b7/boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9", size = 26577 }, ] [[package]] @@ -119,9 +124,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096, upload_time = "2024-06-18T10:56:06.741Z" } +sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096 } wheels = [ - { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611, upload_time = "2024-06-18T10:55:59.489Z" }, + { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611 }, ] [[package]] @@ -135,104 +140,135 @@ dependencies = [ { name = "pillow" }, { name = "tinycss2" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/b9/5106168bd43d7cd8b7cc2a2ee465b385f14b63f4c092bb89eee2d48c8e67/cairosvg-2.8.2.tar.gz", hash = "sha256:07cbf4e86317b27a92318a4cac2a4bb37a5e9c1b8a27355d06874b22f85bef9f", size = 8398590, upload_time = "2025-05-15T06:56:32.653Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/b9/5106168bd43d7cd8b7cc2a2ee465b385f14b63f4c092bb89eee2d48c8e67/cairosvg-2.8.2.tar.gz", hash = "sha256:07cbf4e86317b27a92318a4cac2a4bb37a5e9c1b8a27355d06874b22f85bef9f", size = 8398590 } wheels = [ - { url = "https://files.pythonhosted.org/packages/67/48/816bd4aaae93dbf9e408c58598bc32f4a8c65f4b86ab560864cb3ee60adb/cairosvg-2.8.2-py3-none-any.whl", hash = "sha256:eab46dad4674f33267a671dce39b64be245911c901c70d65d2b7b0821e852bf5", size = 45773, upload_time = "2025-05-15T06:56:28.552Z" }, + { url = "https://files.pythonhosted.org/packages/67/48/816bd4aaae93dbf9e408c58598bc32f4a8c65f4b86ab560864cb3ee60adb/cairosvg-2.8.2-py3-none-any.whl", hash = "sha256:eab46dad4674f33267a671dce39b64be245911c901c70d65d2b7b0821e852bf5", size = 45773 }, ] [[package]] name = "certifi" -version = "2025.7.9" +version = "2025.8.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/de/8a/c729b6b60c66a38f590c4e774decc4b2ec7b0576be8f1aa984a53ffa812a/certifi-2025.7.9.tar.gz", hash = "sha256:c1d2ec05395148ee10cf672ffc28cd37ea0ab0d99f9cc74c43e588cbd111b079", size = 160386, upload_time = "2025-07-09T02:13:58.874Z" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/67/960ebe6bf230a96cda2e0abcf73af550ec4f090005363542f0765df162e0/certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", size = 162386 } wheels = [ - { url = "https://files.pythonhosted.org/packages/66/f3/80a3f974c8b535d394ff960a11ac20368e06b736da395b551a49ce950cce/certifi-2025.7.9-py3-none-any.whl", hash = "sha256:d842783a14f8fdd646895ac26f719a061408834473cfc10203f6a575beb15d39", size = 159230, upload_time = "2025-07-09T02:13:57.007Z" }, + { url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c948d2ad169c1c8cdbae65bc450d6cd753d124b17c8cd32/certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5", size = 161216 }, ] [[package]] name = "cffi" -version = "1.17.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pycparser" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload_time = "2024-09-04T20:45:21.852Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/e94227139ee5fb4d600a7a4927f322e1d4aea6fdc50bd3fca8493caba23f/cffi-1.17.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:805b4371bf7197c329fcb3ead37e710d1bca9da5d583f5073b799d5c5bd1eee4", size = 183178, upload_time = "2024-09-04T20:44:12.232Z" }, - { url = "https://files.pythonhosted.org/packages/da/ee/fb72c2b48656111c4ef27f0f91da355e130a923473bf5ee75c5643d00cca/cffi-1.17.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:733e99bc2df47476e3848417c5a4540522f234dfd4ef3ab7fafdf555b082ec0c", size = 178840, upload_time = "2024-09-04T20:44:13.739Z" }, - { url = "https://files.pythonhosted.org/packages/cc/b6/db007700f67d151abadf508cbfd6a1884f57eab90b1bb985c4c8c02b0f28/cffi-1.17.1-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1257bdabf294dceb59f5e70c64a3e2f462c30c7ad68092d01bbbfb1c16b1ba36", size = 454803, upload_time = "2024-09-04T20:44:15.231Z" }, - { url = "https://files.pythonhosted.org/packages/1a/df/f8d151540d8c200eb1c6fba8cd0dfd40904f1b0682ea705c36e6c2e97ab3/cffi-1.17.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da95af8214998d77a98cc14e3a3bd00aa191526343078b530ceb0bd710fb48a5", size = 478850, upload_time = "2024-09-04T20:44:17.188Z" }, - { url = "https://files.pythonhosted.org/packages/28/c0/b31116332a547fd2677ae5b78a2ef662dfc8023d67f41b2a83f7c2aa78b1/cffi-1.17.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d63afe322132c194cf832bfec0dc69a99fb9bb6bbd550f161a49e9e855cc78ff", size = 485729, upload_time = "2024-09-04T20:44:18.688Z" }, - { url = "https://files.pythonhosted.org/packages/91/2b/9a1ddfa5c7f13cab007a2c9cc295b70fbbda7cb10a286aa6810338e60ea1/cffi-1.17.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f79fc4fc25f1c8698ff97788206bb3c2598949bfe0fef03d299eb1b5356ada99", size = 471256, upload_time = "2024-09-04T20:44:20.248Z" }, - { url = "https://files.pythonhosted.org/packages/b2/d5/da47df7004cb17e4955df6a43d14b3b4ae77737dff8bf7f8f333196717bf/cffi-1.17.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b62ce867176a75d03a665bad002af8e6d54644fad99a3c70905c543130e39d93", size = 479424, upload_time = "2024-09-04T20:44:21.673Z" }, - { url = "https://files.pythonhosted.org/packages/0b/ac/2a28bcf513e93a219c8a4e8e125534f4f6db03e3179ba1c45e949b76212c/cffi-1.17.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:386c8bf53c502fff58903061338ce4f4950cbdcb23e2902d86c0f722b786bbe3", size = 484568, upload_time = "2024-09-04T20:44:23.245Z" }, - { url = "https://files.pythonhosted.org/packages/d4/38/ca8a4f639065f14ae0f1d9751e70447a261f1a30fa7547a828ae08142465/cffi-1.17.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ceb10419a9adf4460ea14cfd6bc43d08701f0835e979bf821052f1805850fe8", size = 488736, upload_time = "2024-09-04T20:44:24.757Z" }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload_time = "2024-09-04T20:44:26.208Z" }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload_time = "2024-09-04T20:44:27.578Z" }, - { url = "https://files.pythonhosted.org/packages/8d/f8/dd6c246b148639254dad4d6803eb6a54e8c85c6e11ec9df2cffa87571dbe/cffi-1.17.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f3a2b4222ce6b60e2e8b337bb9596923045681d71e5a082783484d845390938e", size = 182989, upload_time = "2024-09-04T20:44:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f1/672d303ddf17c24fc83afd712316fda78dc6fce1cd53011b839483e1ecc8/cffi-1.17.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0984a4925a435b1da406122d4d7968dd861c1385afe3b45ba82b750f229811e2", size = 178802, upload_time = "2024-09-04T20:44:30.289Z" }, - { url = "https://files.pythonhosted.org/packages/0e/2d/eab2e858a91fdff70533cab61dcff4a1f55ec60425832ddfdc9cd36bc8af/cffi-1.17.1-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d01b12eeeb4427d3110de311e1774046ad344f5b1a7403101878976ecd7a10f3", size = 454792, upload_time = "2024-09-04T20:44:32.01Z" }, - { url = "https://files.pythonhosted.org/packages/75/b2/fbaec7c4455c604e29388d55599b99ebcc250a60050610fadde58932b7ee/cffi-1.17.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:706510fe141c86a69c8ddc029c7910003a17353970cff3b904ff0686a5927683", size = 478893, upload_time = "2024-09-04T20:44:33.606Z" }, - { url = "https://files.pythonhosted.org/packages/4f/b7/6e4a2162178bf1935c336d4da8a9352cccab4d3a5d7914065490f08c0690/cffi-1.17.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de55b766c7aa2e2a3092c51e0483d700341182f08e67c63630d5b6f200bb28e5", size = 485810, upload_time = "2024-09-04T20:44:35.191Z" }, - { url = "https://files.pythonhosted.org/packages/c7/8a/1d0e4a9c26e54746dc08c2c6c037889124d4f59dffd853a659fa545f1b40/cffi-1.17.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c59d6e989d07460165cc5ad3c61f9fd8f1b4796eacbd81cee78957842b834af4", size = 471200, upload_time = "2024-09-04T20:44:36.743Z" }, - { url = "https://files.pythonhosted.org/packages/26/9f/1aab65a6c0db35f43c4d1b4f580e8df53914310afc10ae0397d29d697af4/cffi-1.17.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd398dbc6773384a17fe0d3e7eeb8d1a21c2200473ee6806bb5e6a8e62bb73dd", size = 479447, upload_time = "2024-09-04T20:44:38.492Z" }, - { url = "https://files.pythonhosted.org/packages/5f/e4/fb8b3dd8dc0e98edf1135ff067ae070bb32ef9d509d6cb0f538cd6f7483f/cffi-1.17.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:3edc8d958eb099c634dace3c7e16560ae474aa3803a5df240542b305d14e14ed", size = 484358, upload_time = "2024-09-04T20:44:40.046Z" }, - { url = "https://files.pythonhosted.org/packages/f1/47/d7145bf2dc04684935d57d67dff9d6d795b2ba2796806bb109864be3a151/cffi-1.17.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:72e72408cad3d5419375fc87d289076ee319835bdfa2caad331e377589aebba9", size = 488469, upload_time = "2024-09-04T20:44:41.616Z" }, - { url = "https://files.pythonhosted.org/packages/bf/ee/f94057fa6426481d663b88637a9a10e859e492c73d0384514a17d78ee205/cffi-1.17.1-cp313-cp313-win32.whl", hash = "sha256:e03eab0a8677fa80d646b5ddece1cbeaf556c313dcfac435ba11f107ba117b5d", size = 172475, upload_time = "2024-09-04T20:44:43.733Z" }, - { url = "https://files.pythonhosted.org/packages/7c/fc/6a8cb64e5f0324877d503c854da15d76c1e50eb722e320b15345c4d0c6de/cffi-1.17.1-cp313-cp313-win_amd64.whl", hash = "sha256:f6a16c31041f09ead72d69f583767292f750d24913dadacf5756b966aacb3f1a", size = 182009, upload_time = "2024-09-04T20:44:45.309Z" }, +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271 }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048 }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529 }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097 }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983 }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519 }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572 }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963 }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361 }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932 }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557 }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762 }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230 }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043 }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446 }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101 }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948 }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422 }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499 }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928 }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302 }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909 }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402 }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780 }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320 }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487 }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049 }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793 }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300 }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244 }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828 }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926 }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328 }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650 }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687 }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773 }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013 }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593 }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354 }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480 }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584 }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443 }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437 }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487 }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726 }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195 }, ] [[package]] name = "cfgv" version = "3.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload_time = "2023-08-12T20:38:17.776Z" } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload_time = "2023-08-12T20:38:16.269Z" }, + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, ] [[package]] name = "chardet" version = "5.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618, upload_time = "2023-08-01T19:23:02.662Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618 } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385, upload_time = "2023-08-01T19:23:00.661Z" }, + { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385 }, ] [[package]] name = "charset-normalizer" -version = "3.4.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload_time = "2025-05-02T08:34:42.01Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload_time = "2025-05-02T08:32:33.712Z" }, - { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload_time = "2025-05-02T08:32:35.768Z" }, - { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload_time = "2025-05-02T08:32:37.284Z" }, - { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload_time = "2025-05-02T08:32:38.803Z" }, - { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload_time = "2025-05-02T08:32:40.251Z" }, - { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload_time = "2025-05-02T08:32:41.705Z" }, - { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload_time = "2025-05-02T08:32:43.709Z" }, - { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload_time = "2025-05-02T08:32:46.197Z" }, - { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload_time = "2025-05-02T08:32:48.105Z" }, - { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload_time = "2025-05-02T08:32:49.719Z" }, - { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload_time = "2025-05-02T08:32:51.404Z" }, - { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload_time = "2025-05-02T08:32:53.079Z" }, - { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload_time = "2025-05-02T08:32:54.573Z" }, - { url = "https://files.pythonhosted.org/packages/ea/12/a93df3366ed32db1d907d7593a94f1fe6293903e3e92967bebd6950ed12c/charset_normalizer-3.4.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:926ca93accd5d36ccdabd803392ddc3e03e6d4cd1cf17deff3b989ab8e9dbcf0", size = 199622, upload_time = "2025-05-02T08:32:56.363Z" }, - { url = "https://files.pythonhosted.org/packages/04/93/bf204e6f344c39d9937d3c13c8cd5bbfc266472e51fc8c07cb7f64fcd2de/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eba9904b0f38a143592d9fc0e19e2df0fa2e41c3c3745554761c5f6447eedabf", size = 143435, upload_time = "2025-05-02T08:32:58.551Z" }, - { url = "https://files.pythonhosted.org/packages/22/2a/ea8a2095b0bafa6c5b5a55ffdc2f924455233ee7b91c69b7edfcc9e02284/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3fddb7e2c84ac87ac3a947cb4e66d143ca5863ef48e4a5ecb83bd48619e4634e", size = 153653, upload_time = "2025-05-02T08:33:00.342Z" }, - { url = "https://files.pythonhosted.org/packages/b6/57/1b090ff183d13cef485dfbe272e2fe57622a76694061353c59da52c9a659/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:98f862da73774290f251b9df8d11161b6cf25b599a66baf087c1ffe340e9bfd1", size = 146231, upload_time = "2025-05-02T08:33:02.081Z" }, - { url = "https://files.pythonhosted.org/packages/e2/28/ffc026b26f441fc67bd21ab7f03b313ab3fe46714a14b516f931abe1a2d8/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6c9379d65defcab82d07b2a9dfbfc2e95bc8fe0ebb1b176a3190230a3ef0e07c", size = 148243, upload_time = "2025-05-02T08:33:04.063Z" }, - { url = "https://files.pythonhosted.org/packages/c0/0f/9abe9bd191629c33e69e47c6ef45ef99773320e9ad8e9cb08b8ab4a8d4cb/charset_normalizer-3.4.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e635b87f01ebc977342e2697d05b56632f5f879a4f15955dfe8cef2448b51691", size = 150442, upload_time = "2025-05-02T08:33:06.418Z" }, - { url = "https://files.pythonhosted.org/packages/67/7c/a123bbcedca91d5916c056407f89a7f5e8fdfce12ba825d7d6b9954a1a3c/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1c95a1e2902a8b722868587c0e1184ad5c55631de5afc0eb96bc4b0d738092c0", size = 145147, upload_time = "2025-05-02T08:33:08.183Z" }, - { url = "https://files.pythonhosted.org/packages/ec/fe/1ac556fa4899d967b83e9893788e86b6af4d83e4726511eaaad035e36595/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:ef8de666d6179b009dce7bcb2ad4c4a779f113f12caf8dc77f0162c29d20490b", size = 153057, upload_time = "2025-05-02T08:33:09.986Z" }, - { url = "https://files.pythonhosted.org/packages/2b/ff/acfc0b0a70b19e3e54febdd5301a98b72fa07635e56f24f60502e954c461/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:32fc0341d72e0f73f80acb0a2c94216bd704f4f0bce10aedea38f30502b271ff", size = 156454, upload_time = "2025-05-02T08:33:11.814Z" }, - { url = "https://files.pythonhosted.org/packages/92/08/95b458ce9c740d0645feb0e96cea1f5ec946ea9c580a94adfe0b617f3573/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:289200a18fa698949d2b39c671c2cc7a24d44096784e76614899a7ccf2574b7b", size = 154174, upload_time = "2025-05-02T08:33:13.707Z" }, - { url = "https://files.pythonhosted.org/packages/78/be/8392efc43487ac051eee6c36d5fbd63032d78f7728cb37aebcc98191f1ff/charset_normalizer-3.4.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4a476b06fbcf359ad25d34a057b7219281286ae2477cc5ff5e3f70a246971148", size = 149166, upload_time = "2025-05-02T08:33:15.458Z" }, - { url = "https://files.pythonhosted.org/packages/44/96/392abd49b094d30b91d9fbda6a69519e95802250b777841cf3bda8fe136c/charset_normalizer-3.4.2-cp313-cp313-win32.whl", hash = "sha256:aaeeb6a479c7667fbe1099af9617c83aaca22182d6cf8c53966491a0f1b7ffb7", size = 98064, upload_time = "2025-05-02T08:33:17.06Z" }, - { url = "https://files.pythonhosted.org/packages/e9/b0/0200da600134e001d91851ddc797809e2fe0ea72de90e09bec5a2fbdaccb/charset_normalizer-3.4.2-cp313-cp313-win_amd64.whl", hash = "sha256:aa6af9e7d59f9c12b33ae4e9450619cf2488e2bbe9b44030905877f0b2324980", size = 105641, upload_time = "2025-05-02T08:33:18.753Z" }, - { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload_time = "2025-05-02T08:34:40.053Z" }, +version = "3.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/83/2d/5fd176ceb9b2fc619e63405525573493ca23441330fcdaee6bef9460e924/charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14", size = 122371 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/5e/14c94999e418d9b87682734589404a25854d5f5d0408df68bc15b6ff54bb/charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1", size = 205655 }, + { url = "https://files.pythonhosted.org/packages/7d/a8/c6ec5d389672521f644505a257f50544c074cf5fc292d5390331cd6fc9c3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884", size = 146223 }, + { url = "https://files.pythonhosted.org/packages/fc/eb/a2ffb08547f4e1e5415fb69eb7db25932c52a52bed371429648db4d84fb1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018", size = 159366 }, + { url = "https://files.pythonhosted.org/packages/82/10/0fd19f20c624b278dddaf83b8464dcddc2456cb4b02bb902a6da126b87a1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392", size = 157104 }, + { url = "https://files.pythonhosted.org/packages/16/ab/0233c3231af734f5dfcf0844aa9582d5a1466c985bbed6cedab85af9bfe3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f", size = 151830 }, + { url = "https://files.pythonhosted.org/packages/ae/02/e29e22b4e02839a0e4a06557b1999d0a47db3567e82989b5bb21f3fbbd9f/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154", size = 148854 }, + { url = "https://files.pythonhosted.org/packages/05/6b/e2539a0a4be302b481e8cafb5af8792da8093b486885a1ae4d15d452bcec/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491", size = 160670 }, + { url = "https://files.pythonhosted.org/packages/31/e7/883ee5676a2ef217a40ce0bffcc3d0dfbf9e64cbcfbdf822c52981c3304b/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93", size = 158501 }, + { url = "https://files.pythonhosted.org/packages/c1/35/6525b21aa0db614cf8b5792d232021dca3df7f90a1944db934efa5d20bb1/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f", size = 153173 }, + { url = "https://files.pythonhosted.org/packages/50/ee/f4704bad8201de513fdc8aac1cabc87e38c5818c93857140e06e772b5892/charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37", size = 99822 }, + { url = "https://files.pythonhosted.org/packages/39/f5/3b3836ca6064d0992c58c7561c6b6eee1b3892e9665d650c803bd5614522/charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc", size = 107543 }, + { url = "https://files.pythonhosted.org/packages/65/ca/2135ac97709b400c7654b4b764daf5c5567c2da45a30cdd20f9eefe2d658/charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe", size = 205326 }, + { url = "https://files.pythonhosted.org/packages/71/11/98a04c3c97dd34e49c7d247083af03645ca3730809a5509443f3c37f7c99/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8", size = 146008 }, + { url = "https://files.pythonhosted.org/packages/60/f5/4659a4cb3c4ec146bec80c32d8bb16033752574c20b1252ee842a95d1a1e/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9", size = 159196 }, + { url = "https://files.pythonhosted.org/packages/86/9e/f552f7a00611f168b9a5865a1414179b2c6de8235a4fa40189f6f79a1753/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31", size = 156819 }, + { url = "https://files.pythonhosted.org/packages/7e/95/42aa2156235cbc8fa61208aded06ef46111c4d3f0de233107b3f38631803/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f", size = 151350 }, + { url = "https://files.pythonhosted.org/packages/c2/a9/3865b02c56f300a6f94fc631ef54f0a8a29da74fb45a773dfd3dcd380af7/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927", size = 148644 }, + { url = "https://files.pythonhosted.org/packages/77/d9/cbcf1a2a5c7d7856f11e7ac2d782aec12bdfea60d104e60e0aa1c97849dc/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9", size = 160468 }, + { url = "https://files.pythonhosted.org/packages/f6/42/6f45efee8697b89fda4d50580f292b8f7f9306cb2971d4b53f8914e4d890/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5", size = 158187 }, + { url = "https://files.pythonhosted.org/packages/70/99/f1c3bdcfaa9c45b3ce96f70b14f070411366fa19549c1d4832c935d8e2c3/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc", size = 152699 }, + { url = "https://files.pythonhosted.org/packages/a3/ad/b0081f2f99a4b194bcbb1934ef3b12aa4d9702ced80a37026b7607c72e58/charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce", size = 99580 }, + { url = "https://files.pythonhosted.org/packages/9a/8f/ae790790c7b64f925e5c953b924aaa42a243fb778fed9e41f147b2a5715a/charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef", size = 107366 }, + { url = "https://files.pythonhosted.org/packages/8e/91/b5a06ad970ddc7a0e513112d40113e834638f4ca1120eb727a249fb2715e/charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15", size = 204342 }, + { url = "https://files.pythonhosted.org/packages/ce/ec/1edc30a377f0a02689342f214455c3f6c2fbedd896a1d2f856c002fc3062/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db", size = 145995 }, + { url = "https://files.pythonhosted.org/packages/17/e5/5e67ab85e6d22b04641acb5399c8684f4d37caf7558a53859f0283a650e9/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d", size = 158640 }, + { url = "https://files.pythonhosted.org/packages/f1/e5/38421987f6c697ee3722981289d554957c4be652f963d71c5e46a262e135/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096", size = 156636 }, + { url = "https://files.pythonhosted.org/packages/a0/e4/5a075de8daa3ec0745a9a3b54467e0c2967daaaf2cec04c845f73493e9a1/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa", size = 150939 }, + { url = "https://files.pythonhosted.org/packages/02/f7/3611b32318b30974131db62b4043f335861d4d9b49adc6d57c1149cc49d4/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049", size = 148580 }, + { url = "https://files.pythonhosted.org/packages/7e/61/19b36f4bd67f2793ab6a99b979b4e4f3d8fc754cbdffb805335df4337126/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0", size = 159870 }, + { url = "https://files.pythonhosted.org/packages/06/57/84722eefdd338c04cf3030ada66889298eaedf3e7a30a624201e0cbe424a/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92", size = 157797 }, + { url = "https://files.pythonhosted.org/packages/72/2a/aff5dd112b2f14bcc3462c312dce5445806bfc8ab3a7328555da95330e4b/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16", size = 152224 }, + { url = "https://files.pythonhosted.org/packages/b7/8c/9839225320046ed279c6e839d51f028342eb77c91c89b8ef2549f951f3ec/charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce", size = 100086 }, + { url = "https://files.pythonhosted.org/packages/ee/7a/36fbcf646e41f710ce0a563c1c9a343c6edf9be80786edeb15b6f62e17db/charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c", size = 107400 }, + { url = "https://files.pythonhosted.org/packages/8a/1f/f041989e93b001bc4e44bb1669ccdcf54d3f00e628229a85b08d330615c5/charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a", size = 53175 }, ] [[package]] @@ -242,136 +278,164 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload_time = "2025-05-20T23:19:49.832Z" } +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342 } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload_time = "2025-05-20T23:19:47.796Z" }, + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215 }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload_time = "2022-10-25T02:36:22.414Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload_time = "2022-10-25T02:36:20.889Z" }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, ] [[package]] name = "comm" -version = "0.2.2" +version = "0.2.3" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210, upload_time = "2024-03-12T16:53:41.133Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4c/13/7d740c5849255756bc17888787313b61fd38a0a8304fc4f073dfc46122aa/comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971", size = 6319 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180, upload_time = "2024-03-12T16:53:39.226Z" }, + { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294 }, ] [[package]] name = "coverage" -version = "7.10.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/87/0e/66dbd4c6a7f0758a8d18044c048779ba21fb94856e1edcf764bd5403e710/coverage-7.10.1.tar.gz", hash = "sha256:ae2b4856f29ddfe827106794f3589949a57da6f0d38ab01e24ec35107979ba57", size = 819938, upload_time = "2025-07-27T14:13:39.045Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a5/3f/b051feeb292400bd22d071fdf933b3ad389a8cef5c80c7866ed0c7414b9e/coverage-7.10.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b7dc7f0a75a7eaa4584e5843c873c561b12602439d2351ee28c7478186c4da4", size = 214934, upload_time = "2025-07-27T14:11:36.096Z" }, - { url = "https://files.pythonhosted.org/packages/f8/e4/a61b27d5c4c2d185bdfb0bfe9d15ab4ac4f0073032665544507429ae60eb/coverage-7.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:607f82389f0ecafc565813aa201a5cade04f897603750028dd660fb01797265e", size = 215173, upload_time = "2025-07-27T14:11:38.005Z" }, - { url = "https://files.pythonhosted.org/packages/8a/01/40a6ee05b60d02d0bc53742ad4966e39dccd450aafb48c535a64390a3552/coverage-7.10.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f7da31a1ba31f1c1d4d5044b7c5813878adae1f3af8f4052d679cc493c7328f4", size = 246190, upload_time = "2025-07-27T14:11:39.887Z" }, - { url = "https://files.pythonhosted.org/packages/11/ef/a28d64d702eb583c377255047281305dc5a5cfbfb0ee36e721f78255adb6/coverage-7.10.1-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:51fe93f3fe4f5d8483d51072fddc65e717a175490804e1942c975a68e04bf97a", size = 248618, upload_time = "2025-07-27T14:11:41.841Z" }, - { url = "https://files.pythonhosted.org/packages/6a/ad/73d018bb0c8317725370c79d69b5c6e0257df84a3b9b781bda27a438a3be/coverage-7.10.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3e59d00830da411a1feef6ac828b90bbf74c9b6a8e87b8ca37964925bba76dbe", size = 250081, upload_time = "2025-07-27T14:11:43.705Z" }, - { url = "https://files.pythonhosted.org/packages/2d/dd/496adfbbb4503ebca5d5b2de8bed5ec00c0a76558ffc5b834fd404166bc9/coverage-7.10.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:924563481c27941229cb4e16eefacc35da28563e80791b3ddc5597b062a5c386", size = 247990, upload_time = "2025-07-27T14:11:45.244Z" }, - { url = "https://files.pythonhosted.org/packages/18/3c/a9331a7982facfac0d98a4a87b36ae666fe4257d0f00961a3a9ef73e015d/coverage-7.10.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ca79146ee421b259f8131f153102220b84d1a5e6fb9c8aed13b3badfd1796de6", size = 246191, upload_time = "2025-07-27T14:11:47.093Z" }, - { url = "https://files.pythonhosted.org/packages/62/0c/75345895013b83f7afe92ec595e15a9a525ede17491677ceebb2ba5c3d85/coverage-7.10.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2b225a06d227f23f386fdc0eab471506d9e644be699424814acc7d114595495f", size = 247400, upload_time = "2025-07-27T14:11:48.643Z" }, - { url = "https://files.pythonhosted.org/packages/e2/a9/98b268cfc5619ef9df1d5d34fee408ecb1542d9fd43d467e5c2f28668cd4/coverage-7.10.1-cp312-cp312-win32.whl", hash = "sha256:5ba9a8770effec5baaaab1567be916c87d8eea0c9ad11253722d86874d885eca", size = 217338, upload_time = "2025-07-27T14:11:50.258Z" }, - { url = "https://files.pythonhosted.org/packages/fe/31/22a5440e4d1451f253c5cd69fdcead65e92ef08cd4ec237b8756dc0b20a7/coverage-7.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:9eb245a8d8dd0ad73b4062135a251ec55086fbc2c42e0eb9725a9b553fba18a3", size = 218125, upload_time = "2025-07-27T14:11:52.034Z" }, - { url = "https://files.pythonhosted.org/packages/d6/2b/40d9f0ce7ee839f08a43c5bfc9d05cec28aaa7c9785837247f96cbe490b9/coverage-7.10.1-cp312-cp312-win_arm64.whl", hash = "sha256:7718060dd4434cc719803a5e526838a5d66e4efa5dc46d2b25c21965a9c6fcc4", size = 216523, upload_time = "2025-07-27T14:11:53.965Z" }, - { url = "https://files.pythonhosted.org/packages/ef/72/135ff5fef09b1ffe78dbe6fcf1e16b2e564cd35faeacf3d63d60d887f12d/coverage-7.10.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ebb08d0867c5a25dffa4823377292a0ffd7aaafb218b5d4e2e106378b1061e39", size = 214960, upload_time = "2025-07-27T14:11:55.959Z" }, - { url = "https://files.pythonhosted.org/packages/b1/aa/73a5d1a6fc08ca709a8177825616aa95ee6bf34d522517c2595484a3e6c9/coverage-7.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f32a95a83c2e17422f67af922a89422cd24c6fa94041f083dd0bb4f6057d0bc7", size = 215220, upload_time = "2025-07-27T14:11:57.899Z" }, - { url = "https://files.pythonhosted.org/packages/8d/40/3124fdd45ed3772a42fc73ca41c091699b38a2c3bd4f9cb564162378e8b6/coverage-7.10.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:c4c746d11c8aba4b9f58ca8bfc6fbfd0da4efe7960ae5540d1a1b13655ee8892", size = 245772, upload_time = "2025-07-27T14:12:00.422Z" }, - { url = "https://files.pythonhosted.org/packages/42/62/a77b254822efa8c12ad59e8039f2bc3df56dc162ebda55e1943e35ba31a5/coverage-7.10.1-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:7f39edd52c23e5c7ed94e0e4bf088928029edf86ef10b95413e5ea670c5e92d7", size = 248116, upload_time = "2025-07-27T14:12:03.099Z" }, - { url = "https://files.pythonhosted.org/packages/1d/01/8101f062f472a3a6205b458d18ef0444a63ae5d36a8a5ed5dd0f6167f4db/coverage-7.10.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ab6e19b684981d0cd968906e293d5628e89faacb27977c92f3600b201926b994", size = 249554, upload_time = "2025-07-27T14:12:04.668Z" }, - { url = "https://files.pythonhosted.org/packages/8f/7b/e51bc61573e71ff7275a4f167aecbd16cb010aefdf54bcd8b0a133391263/coverage-7.10.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5121d8cf0eacb16133501455d216bb5f99899ae2f52d394fe45d59229e6611d0", size = 247766, upload_time = "2025-07-27T14:12:06.234Z" }, - { url = "https://files.pythonhosted.org/packages/4b/71/1c96d66a51d4204a9d6d12df53c4071d87e110941a2a1fe94693192262f5/coverage-7.10.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:df1c742ca6f46a6f6cbcaef9ac694dc2cb1260d30a6a2f5c68c5f5bcfee1cfd7", size = 245735, upload_time = "2025-07-27T14:12:08.305Z" }, - { url = "https://files.pythonhosted.org/packages/13/d5/efbc2ac4d35ae2f22ef6df2ca084c60e13bd9378be68655e3268c80349ab/coverage-7.10.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:40f9a38676f9c073bf4b9194707aa1eb97dca0e22cc3766d83879d72500132c7", size = 247118, upload_time = "2025-07-27T14:12:09.903Z" }, - { url = "https://files.pythonhosted.org/packages/d1/22/073848352bec28ca65f2b6816b892fcf9a31abbef07b868487ad15dd55f1/coverage-7.10.1-cp313-cp313-win32.whl", hash = "sha256:2348631f049e884839553b9974f0821d39241c6ffb01a418efce434f7eba0fe7", size = 217381, upload_time = "2025-07-27T14:12:11.535Z" }, - { url = "https://files.pythonhosted.org/packages/b7/df/df6a0ff33b042f000089bd11b6bb034bab073e2ab64a56e78ed882cba55d/coverage-7.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:4072b31361b0d6d23f750c524f694e1a417c1220a30d3ef02741eed28520c48e", size = 218152, upload_time = "2025-07-27T14:12:13.182Z" }, - { url = "https://files.pythonhosted.org/packages/30/e3/5085ca849a40ed6b47cdb8f65471c2f754e19390b5a12fa8abd25cbfaa8f/coverage-7.10.1-cp313-cp313-win_arm64.whl", hash = "sha256:3e31dfb8271937cab9425f19259b1b1d1f556790e98eb266009e7a61d337b6d4", size = 216559, upload_time = "2025-07-27T14:12:14.807Z" }, - { url = "https://files.pythonhosted.org/packages/cc/93/58714efbfdeb547909feaabe1d67b2bdd59f0597060271b9c548d5efb529/coverage-7.10.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:1c4f679c6b573a5257af6012f167a45be4c749c9925fd44d5178fd641ad8bf72", size = 215677, upload_time = "2025-07-27T14:12:16.68Z" }, - { url = "https://files.pythonhosted.org/packages/c0/0c/18eaa5897e7e8cb3f8c45e563e23e8a85686b4585e29d53cacb6bc9cb340/coverage-7.10.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:871ebe8143da284bd77b84a9136200bd638be253618765d21a1fce71006d94af", size = 215899, upload_time = "2025-07-27T14:12:18.758Z" }, - { url = "https://files.pythonhosted.org/packages/84/c1/9d1affacc3c75b5a184c140377701bbf14fc94619367f07a269cd9e4fed6/coverage-7.10.1-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:998c4751dabf7d29b30594af416e4bf5091f11f92a8d88eb1512c7ba136d1ed7", size = 257140, upload_time = "2025-07-27T14:12:20.357Z" }, - { url = "https://files.pythonhosted.org/packages/3d/0f/339bc6b8fa968c346df346068cca1f24bdea2ddfa93bb3dc2e7749730962/coverage-7.10.1-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:780f750a25e7749d0af6b3631759c2c14f45de209f3faaa2398312d1c7a22759", size = 259005, upload_time = "2025-07-27T14:12:22.007Z" }, - { url = "https://files.pythonhosted.org/packages/c8/22/89390864b92ea7c909079939b71baba7e5b42a76bf327c1d615bd829ba57/coverage-7.10.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:590bdba9445df4763bdbebc928d8182f094c1f3947a8dc0fc82ef014dbdd8324", size = 261143, upload_time = "2025-07-27T14:12:23.746Z" }, - { url = "https://files.pythonhosted.org/packages/2c/56/3d04d89017c0c41c7a71bd69b29699d919b6bbf2649b8b2091240b97dd6a/coverage-7.10.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9b2df80cb6a2af86d300e70acb82e9b79dab2c1e6971e44b78dbfc1a1e736b53", size = 258735, upload_time = "2025-07-27T14:12:25.73Z" }, - { url = "https://files.pythonhosted.org/packages/cb/40/312252c8afa5ca781063a09d931f4b9409dc91526cd0b5a2b84143ffafa2/coverage-7.10.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:d6a558c2725bfb6337bf57c1cd366c13798bfd3bfc9e3dd1f4a6f6fc95a4605f", size = 256871, upload_time = "2025-07-27T14:12:27.767Z" }, - { url = "https://files.pythonhosted.org/packages/1f/2b/564947d5dede068215aaddb9e05638aeac079685101462218229ddea9113/coverage-7.10.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e6150d167f32f2a54690e572e0a4c90296fb000a18e9b26ab81a6489e24e78dd", size = 257692, upload_time = "2025-07-27T14:12:29.347Z" }, - { url = "https://files.pythonhosted.org/packages/93/1b/c8a867ade85cb26d802aea2209b9c2c80613b9c122baa8c8ecea6799648f/coverage-7.10.1-cp313-cp313t-win32.whl", hash = "sha256:d946a0c067aa88be4a593aad1236493313bafaa27e2a2080bfe88db827972f3c", size = 218059, upload_time = "2025-07-27T14:12:31.076Z" }, - { url = "https://files.pythonhosted.org/packages/a1/fe/cd4ab40570ae83a516bf5e754ea4388aeedd48e660e40c50b7713ed4f930/coverage-7.10.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e37c72eaccdd5ed1130c67a92ad38f5b2af66eeff7b0abe29534225db2ef7b18", size = 219150, upload_time = "2025-07-27T14:12:32.746Z" }, - { url = "https://files.pythonhosted.org/packages/8d/16/6e5ed5854be6d70d0c39e9cb9dd2449f2c8c34455534c32c1a508c7dbdb5/coverage-7.10.1-cp313-cp313t-win_arm64.whl", hash = "sha256:89ec0ffc215c590c732918c95cd02b55c7d0f569d76b90bb1a5e78aa340618e4", size = 217014, upload_time = "2025-07-27T14:12:34.406Z" }, - { url = "https://files.pythonhosted.org/packages/54/8e/6d0bfe9c3d7121cf936c5f8b03e8c3da1484fb801703127dba20fb8bd3c7/coverage-7.10.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:166d89c57e877e93d8827dac32cedae6b0277ca684c6511497311249f35a280c", size = 214951, upload_time = "2025-07-27T14:12:36.069Z" }, - { url = "https://files.pythonhosted.org/packages/f2/29/e3e51a8c653cf2174c60532aafeb5065cea0911403fa144c9abe39790308/coverage-7.10.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:bed4a2341b33cd1a7d9ffc47df4a78ee61d3416d43b4adc9e18b7d266650b83e", size = 215229, upload_time = "2025-07-27T14:12:37.759Z" }, - { url = "https://files.pythonhosted.org/packages/e0/59/3c972080b2fa18b6c4510201f6d4dc87159d450627d062cd9ad051134062/coverage-7.10.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:ddca1e4f5f4c67980533df01430184c19b5359900e080248bbf4ed6789584d8b", size = 245738, upload_time = "2025-07-27T14:12:39.453Z" }, - { url = "https://files.pythonhosted.org/packages/2e/04/fc0d99d3f809452654e958e1788454f6e27b34e43f8f8598191c8ad13537/coverage-7.10.1-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:37b69226001d8b7de7126cad7366b0778d36777e4d788c66991455ba817c5b41", size = 248045, upload_time = "2025-07-27T14:12:41.387Z" }, - { url = "https://files.pythonhosted.org/packages/5e/2e/afcbf599e77e0dfbf4c97197747250d13d397d27e185b93987d9eaac053d/coverage-7.10.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b2f22102197bcb1722691296f9e589f02b616f874e54a209284dd7b9294b0b7f", size = 249666, upload_time = "2025-07-27T14:12:43.056Z" }, - { url = "https://files.pythonhosted.org/packages/6e/ae/bc47f7f8ecb7a06cbae2bf86a6fa20f479dd902bc80f57cff7730438059d/coverage-7.10.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:1e0c768b0f9ac5839dac5cf88992a4bb459e488ee8a1f8489af4cb33b1af00f1", size = 247692, upload_time = "2025-07-27T14:12:44.83Z" }, - { url = "https://files.pythonhosted.org/packages/b6/26/cbfa3092d31ccba8ba7647e4d25753263e818b4547eba446b113d7d1efdf/coverage-7.10.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:991196702d5e0b120a8fef2664e1b9c333a81d36d5f6bcf6b225c0cf8b0451a2", size = 245536, upload_time = "2025-07-27T14:12:46.527Z" }, - { url = "https://files.pythonhosted.org/packages/56/77/9c68e92500e6a1c83d024a70eadcc9a173f21aadd73c4675fe64c9c43fdf/coverage-7.10.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:ae8e59e5f4fd85d6ad34c2bb9d74037b5b11be072b8b7e9986beb11f957573d4", size = 246954, upload_time = "2025-07-27T14:12:49.279Z" }, - { url = "https://files.pythonhosted.org/packages/7f/a5/ba96671c5a669672aacd9877a5987c8551501b602827b4e84256da2a30a7/coverage-7.10.1-cp314-cp314-win32.whl", hash = "sha256:042125c89cf74a074984002e165d61fe0e31c7bd40ebb4bbebf07939b5924613", size = 217616, upload_time = "2025-07-27T14:12:51.214Z" }, - { url = "https://files.pythonhosted.org/packages/e7/3c/e1e1eb95fc1585f15a410208c4795db24a948e04d9bde818fe4eb893bc85/coverage-7.10.1-cp314-cp314-win_amd64.whl", hash = "sha256:a22c3bfe09f7a530e2c94c87ff7af867259c91bef87ed2089cd69b783af7b84e", size = 218412, upload_time = "2025-07-27T14:12:53.429Z" }, - { url = "https://files.pythonhosted.org/packages/b0/85/7e1e5be2cb966cba95566ba702b13a572ca744fbb3779df9888213762d67/coverage-7.10.1-cp314-cp314-win_arm64.whl", hash = "sha256:ee6be07af68d9c4fca4027c70cea0c31a0f1bc9cb464ff3c84a1f916bf82e652", size = 216776, upload_time = "2025-07-27T14:12:55.482Z" }, - { url = "https://files.pythonhosted.org/packages/62/0f/5bb8f29923141cca8560fe2217679caf4e0db643872c1945ac7d8748c2a7/coverage-7.10.1-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:d24fb3c0c8ff0d517c5ca5de7cf3994a4cd559cde0315201511dbfa7ab528894", size = 215698, upload_time = "2025-07-27T14:12:57.225Z" }, - { url = "https://files.pythonhosted.org/packages/80/29/547038ffa4e8e4d9e82f7dfc6d152f75fcdc0af146913f0ba03875211f03/coverage-7.10.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:1217a54cfd79be20512a67ca81c7da3f2163f51bbfd188aab91054df012154f5", size = 215902, upload_time = "2025-07-27T14:12:59.071Z" }, - { url = "https://files.pythonhosted.org/packages/e1/8a/7aaa8fbfaed900147987a424e112af2e7790e1ac9cd92601e5bd4e1ba60a/coverage-7.10.1-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:51f30da7a52c009667e02f125737229d7d8044ad84b79db454308033a7808ab2", size = 257230, upload_time = "2025-07-27T14:13:01.248Z" }, - { url = "https://files.pythonhosted.org/packages/e5/1d/c252b5ffac44294e23a0d79dd5acf51749b39795ccc898faeabf7bee903f/coverage-7.10.1-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:ed3718c757c82d920f1c94089066225ca2ad7f00bb904cb72b1c39ebdd906ccb", size = 259194, upload_time = "2025-07-27T14:13:03.247Z" }, - { url = "https://files.pythonhosted.org/packages/16/ad/6c8d9f83d08f3bac2e7507534d0c48d1a4f52c18e6f94919d364edbdfa8f/coverage-7.10.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:cc452481e124a819ced0c25412ea2e144269ef2f2534b862d9f6a9dae4bda17b", size = 261316, upload_time = "2025-07-27T14:13:04.957Z" }, - { url = "https://files.pythonhosted.org/packages/d6/4e/f9bbf3a36c061e2e0e0f78369c006d66416561a33d2bee63345aee8ee65e/coverage-7.10.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:9d6f494c307e5cb9b1e052ec1a471060f1dea092c8116e642e7a23e79d9388ea", size = 258794, upload_time = "2025-07-27T14:13:06.715Z" }, - { url = "https://files.pythonhosted.org/packages/87/82/e600bbe78eb2cb0541751d03cef9314bcd0897e8eea156219c39b685f869/coverage-7.10.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:fc0e46d86905ddd16b85991f1f4919028092b4e511689bbdaff0876bd8aab3dd", size = 256869, upload_time = "2025-07-27T14:13:08.933Z" }, - { url = "https://files.pythonhosted.org/packages/ce/5d/2fc9a9236c5268f68ac011d97cd3a5ad16cc420535369bedbda659fdd9b7/coverage-7.10.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80b9ccd82e30038b61fc9a692a8dc4801504689651b281ed9109f10cc9fe8b4d", size = 257765, upload_time = "2025-07-27T14:13:10.778Z" }, - { url = "https://files.pythonhosted.org/packages/8a/05/b4e00b2bd48a2dc8e1c7d2aea7455f40af2e36484ab2ef06deb85883e9fe/coverage-7.10.1-cp314-cp314t-win32.whl", hash = "sha256:e58991a2b213417285ec866d3cd32db17a6a88061a985dbb7e8e8f13af429c47", size = 218420, upload_time = "2025-07-27T14:13:12.882Z" }, - { url = "https://files.pythonhosted.org/packages/77/fb/d21d05f33ea27ece327422240e69654b5932b0b29e7fbc40fbab3cf199bf/coverage-7.10.1-cp314-cp314t-win_amd64.whl", hash = "sha256:e88dd71e4ecbc49d9d57d064117462c43f40a21a1383507811cf834a4a620651", size = 219536, upload_time = "2025-07-27T14:13:14.718Z" }, - { url = "https://files.pythonhosted.org/packages/a6/68/7fea94b141281ed8be3d1d5c4319a97f2befc3e487ce33657fc64db2c45e/coverage-7.10.1-cp314-cp314t-win_arm64.whl", hash = "sha256:1aadfb06a30c62c2eb82322171fe1f7c288c80ca4156d46af0ca039052814bab", size = 217190, upload_time = "2025-07-27T14:13:16.85Z" }, - { url = "https://files.pythonhosted.org/packages/0f/64/922899cff2c0fd3496be83fa8b81230f5a8d82a2ad30f98370b133c2c83b/coverage-7.10.1-py3-none-any.whl", hash = "sha256:fa2a258aa6bf188eb9a8948f7102a83da7c430a0dce918dbd8b60ef8fcb772d7", size = 206597, upload_time = "2025-07-27T14:13:37.221Z" }, +version = "7.10.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/51/26/d22c300112504f5f9a9fd2297ce33c35f3d353e4aeb987c8419453b2a7c2/coverage-7.10.7.tar.gz", hash = "sha256:f4ab143ab113be368a3e9b795f9cd7906c5ef407d6173fe9675a902e1fffc239", size = 827704 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/e4/eb12450f71b542a53972d19117ea5a5cea1cab3ac9e31b0b5d498df1bd5a/coverage-7.10.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7bb3b9ddb87ef7725056572368040c32775036472d5a033679d1fa6c8dc08417", size = 218290 }, + { url = "https://files.pythonhosted.org/packages/37/66/593f9be12fc19fb36711f19a5371af79a718537204d16ea1d36f16bd78d2/coverage-7.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:18afb24843cbc175687225cab1138c95d262337f5473512010e46831aa0c2973", size = 218515 }, + { url = "https://files.pythonhosted.org/packages/66/80/4c49f7ae09cafdacc73fbc30949ffe77359635c168f4e9ff33c9ebb07838/coverage-7.10.7-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:399a0b6347bcd3822be369392932884b8216d0944049ae22925631a9b3d4ba4c", size = 250020 }, + { url = "https://files.pythonhosted.org/packages/a6/90/a64aaacab3b37a17aaedd83e8000142561a29eb262cede42d94a67f7556b/coverage-7.10.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:314f2c326ded3f4b09be11bc282eb2fc861184bc95748ae67b360ac962770be7", size = 252769 }, + { url = "https://files.pythonhosted.org/packages/98/2e/2dda59afd6103b342e096f246ebc5f87a3363b5412609946c120f4e7750d/coverage-7.10.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c41e71c9cfb854789dee6fc51e46743a6d138b1803fab6cb860af43265b42ea6", size = 253901 }, + { url = "https://files.pythonhosted.org/packages/53/dc/8d8119c9051d50f3119bb4a75f29f1e4a6ab9415cd1fa8bf22fcc3fb3b5f/coverage-7.10.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc01f57ca26269c2c706e838f6422e2a8788e41b3e3c65e2f41148212e57cd59", size = 250413 }, + { url = "https://files.pythonhosted.org/packages/98/b3/edaff9c5d79ee4d4b6d3fe046f2b1d799850425695b789d491a64225d493/coverage-7.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a6442c59a8ac8b85812ce33bc4d05bde3fb22321fa8294e2a5b487c3505f611b", size = 251820 }, + { url = "https://files.pythonhosted.org/packages/11/25/9a0728564bb05863f7e513e5a594fe5ffef091b325437f5430e8cfb0d530/coverage-7.10.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:78a384e49f46b80fb4c901d52d92abe098e78768ed829c673fbb53c498bef73a", size = 249941 }, + { url = "https://files.pythonhosted.org/packages/e0/fd/ca2650443bfbef5b0e74373aac4df67b08180d2f184b482c41499668e258/coverage-7.10.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:5e1e9802121405ede4b0133aa4340ad8186a1d2526de5b7c3eca519db7bb89fb", size = 249519 }, + { url = "https://files.pythonhosted.org/packages/24/79/f692f125fb4299b6f963b0745124998ebb8e73ecdfce4ceceb06a8c6bec5/coverage-7.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d41213ea25a86f69efd1575073d34ea11aabe075604ddf3d148ecfec9e1e96a1", size = 251375 }, + { url = "https://files.pythonhosted.org/packages/5e/75/61b9bbd6c7d24d896bfeec57acba78e0f8deac68e6baf2d4804f7aae1f88/coverage-7.10.7-cp312-cp312-win32.whl", hash = "sha256:77eb4c747061a6af8d0f7bdb31f1e108d172762ef579166ec84542f711d90256", size = 220699 }, + { url = "https://files.pythonhosted.org/packages/ca/f3/3bf7905288b45b075918d372498f1cf845b5b579b723c8fd17168018d5f5/coverage-7.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:f51328ffe987aecf6d09f3cd9d979face89a617eacdaea43e7b3080777f647ba", size = 221512 }, + { url = "https://files.pythonhosted.org/packages/5c/44/3e32dbe933979d05cf2dac5e697c8599cfe038aaf51223ab901e208d5a62/coverage-7.10.7-cp312-cp312-win_arm64.whl", hash = "sha256:bda5e34f8a75721c96085903c6f2197dc398c20ffd98df33f866a9c8fd95f4bf", size = 220147 }, + { url = "https://files.pythonhosted.org/packages/9a/94/b765c1abcb613d103b64fcf10395f54d69b0ef8be6a0dd9c524384892cc7/coverage-7.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:981a651f543f2854abd3b5fcb3263aac581b18209be49863ba575de6edf4c14d", size = 218320 }, + { url = "https://files.pythonhosted.org/packages/72/4f/732fff31c119bb73b35236dd333030f32c4bfe909f445b423e6c7594f9a2/coverage-7.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:73ab1601f84dc804f7812dc297e93cd99381162da39c47040a827d4e8dafe63b", size = 218575 }, + { url = "https://files.pythonhosted.org/packages/87/02/ae7e0af4b674be47566707777db1aa375474f02a1d64b9323e5813a6cdd5/coverage-7.10.7-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a8b6f03672aa6734e700bbcd65ff050fd19cddfec4b031cc8cf1c6967de5a68e", size = 249568 }, + { url = "https://files.pythonhosted.org/packages/a2/77/8c6d22bf61921a59bce5471c2f1f7ac30cd4ac50aadde72b8c48d5727902/coverage-7.10.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10b6ba00ab1132a0ce4428ff68cf50a25efd6840a42cdf4239c9b99aad83be8b", size = 252174 }, + { url = "https://files.pythonhosted.org/packages/b1/20/b6ea4f69bbb52dac0aebd62157ba6a9dddbfe664f5af8122dac296c3ee15/coverage-7.10.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c79124f70465a150e89340de5963f936ee97097d2ef76c869708c4248c63ca49", size = 253447 }, + { url = "https://files.pythonhosted.org/packages/f9/28/4831523ba483a7f90f7b259d2018fef02cb4d5b90bc7c1505d6e5a84883c/coverage-7.10.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:69212fbccdbd5b0e39eac4067e20a4a5256609e209547d86f740d68ad4f04911", size = 249779 }, + { url = "https://files.pythonhosted.org/packages/a7/9f/4331142bc98c10ca6436d2d620c3e165f31e6c58d43479985afce6f3191c/coverage-7.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7ea7c6c9d0d286d04ed3541747e6597cbe4971f22648b68248f7ddcd329207f0", size = 251604 }, + { url = "https://files.pythonhosted.org/packages/ce/60/bda83b96602036b77ecf34e6393a3836365481b69f7ed7079ab85048202b/coverage-7.10.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b9be91986841a75042b3e3243d0b3cb0b2434252b977baaf0cd56e960fe1e46f", size = 249497 }, + { url = "https://files.pythonhosted.org/packages/5f/af/152633ff35b2af63977edd835d8e6430f0caef27d171edf2fc76c270ef31/coverage-7.10.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:b281d5eca50189325cfe1f365fafade89b14b4a78d9b40b05ddd1fc7d2a10a9c", size = 249350 }, + { url = "https://files.pythonhosted.org/packages/9d/71/d92105d122bd21cebba877228990e1646d862e34a98bb3374d3fece5a794/coverage-7.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:99e4aa63097ab1118e75a848a28e40d68b08a5e19ce587891ab7fd04475e780f", size = 251111 }, + { url = "https://files.pythonhosted.org/packages/a2/9e/9fdb08f4bf476c912f0c3ca292e019aab6712c93c9344a1653986c3fd305/coverage-7.10.7-cp313-cp313-win32.whl", hash = "sha256:dc7c389dce432500273eaf48f410b37886be9208b2dd5710aaf7c57fd442c698", size = 220746 }, + { url = "https://files.pythonhosted.org/packages/b1/b1/a75fd25df44eab52d1931e89980d1ada46824c7a3210be0d3c88a44aaa99/coverage-7.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:cac0fdca17b036af3881a9d2729a850b76553f3f716ccb0360ad4dbc06b3b843", size = 221541 }, + { url = "https://files.pythonhosted.org/packages/14/3a/d720d7c989562a6e9a14b2c9f5f2876bdb38e9367126d118495b89c99c37/coverage-7.10.7-cp313-cp313-win_arm64.whl", hash = "sha256:4b6f236edf6e2f9ae8fcd1332da4e791c1b6ba0dc16a2dc94590ceccb482e546", size = 220170 }, + { url = "https://files.pythonhosted.org/packages/bb/22/e04514bf2a735d8b0add31d2b4ab636fc02370730787c576bb995390d2d5/coverage-7.10.7-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a0ec07fd264d0745ee396b666d47cef20875f4ff2375d7c4f58235886cc1ef0c", size = 219029 }, + { url = "https://files.pythonhosted.org/packages/11/0b/91128e099035ece15da3445d9015e4b4153a6059403452d324cbb0a575fa/coverage-7.10.7-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:dd5e856ebb7bfb7672b0086846db5afb4567a7b9714b8a0ebafd211ec7ce6a15", size = 219259 }, + { url = "https://files.pythonhosted.org/packages/8b/51/66420081e72801536a091a0c8f8c1f88a5c4bf7b9b1bdc6222c7afe6dc9b/coverage-7.10.7-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f57b2a3c8353d3e04acf75b3fed57ba41f5c0646bbf1d10c7c282291c97936b4", size = 260592 }, + { url = "https://files.pythonhosted.org/packages/5d/22/9b8d458c2881b22df3db5bb3e7369e63d527d986decb6c11a591ba2364f7/coverage-7.10.7-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1ef2319dd15a0b009667301a3f84452a4dc6fddfd06b0c5c53ea472d3989fbf0", size = 262768 }, + { url = "https://files.pythonhosted.org/packages/f7/08/16bee2c433e60913c610ea200b276e8eeef084b0d200bdcff69920bd5828/coverage-7.10.7-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:83082a57783239717ceb0ad584de3c69cf581b2a95ed6bf81ea66034f00401c0", size = 264995 }, + { url = "https://files.pythonhosted.org/packages/20/9d/e53eb9771d154859b084b90201e5221bca7674ba449a17c101a5031d4054/coverage-7.10.7-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:50aa94fb1fb9a397eaa19c0d5ec15a5edd03a47bf1a3a6111a16b36e190cff65", size = 259546 }, + { url = "https://files.pythonhosted.org/packages/ad/b0/69bc7050f8d4e56a89fb550a1577d5d0d1db2278106f6f626464067b3817/coverage-7.10.7-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2120043f147bebb41c85b97ac45dd173595ff14f2a584f2963891cbcc3091541", size = 262544 }, + { url = "https://files.pythonhosted.org/packages/ef/4b/2514b060dbd1bc0aaf23b852c14bb5818f244c664cb16517feff6bb3a5ab/coverage-7.10.7-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2fafd773231dd0378fdba66d339f84904a8e57a262f583530f4f156ab83863e6", size = 260308 }, + { url = "https://files.pythonhosted.org/packages/54/78/7ba2175007c246d75e496f64c06e94122bdb914790a1285d627a918bd271/coverage-7.10.7-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:0b944ee8459f515f28b851728ad224fa2d068f1513ef6b7ff1efafeb2185f999", size = 258920 }, + { url = "https://files.pythonhosted.org/packages/c0/b3/fac9f7abbc841409b9a410309d73bfa6cfb2e51c3fada738cb607ce174f8/coverage-7.10.7-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4b583b97ab2e3efe1b3e75248a9b333bd3f8b0b1b8e5b45578e05e5850dfb2c2", size = 261434 }, + { url = "https://files.pythonhosted.org/packages/ee/51/a03bec00d37faaa891b3ff7387192cef20f01604e5283a5fabc95346befa/coverage-7.10.7-cp313-cp313t-win32.whl", hash = "sha256:2a78cd46550081a7909b3329e2266204d584866e8d97b898cd7fb5ac8d888b1a", size = 221403 }, + { url = "https://files.pythonhosted.org/packages/53/22/3cf25d614e64bf6d8e59c7c669b20d6d940bb337bdee5900b9ca41c820bb/coverage-7.10.7-cp313-cp313t-win_amd64.whl", hash = "sha256:33a5e6396ab684cb43dc7befa386258acb2d7fae7f67330ebb85ba4ea27938eb", size = 222469 }, + { url = "https://files.pythonhosted.org/packages/49/a1/00164f6d30d8a01c3c9c48418a7a5be394de5349b421b9ee019f380df2a0/coverage-7.10.7-cp313-cp313t-win_arm64.whl", hash = "sha256:86b0e7308289ddde73d863b7683f596d8d21c7d8664ce1dee061d0bcf3fbb4bb", size = 220731 }, + { url = "https://files.pythonhosted.org/packages/23/9c/5844ab4ca6a4dd97a1850e030a15ec7d292b5c5cb93082979225126e35dd/coverage-7.10.7-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b06f260b16ead11643a5a9f955bd4b5fd76c1a4c6796aeade8520095b75de520", size = 218302 }, + { url = "https://files.pythonhosted.org/packages/f0/89/673f6514b0961d1f0e20ddc242e9342f6da21eaba3489901b565c0689f34/coverage-7.10.7-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:212f8f2e0612778f09c55dd4872cb1f64a1f2b074393d139278ce902064d5b32", size = 218578 }, + { url = "https://files.pythonhosted.org/packages/05/e8/261cae479e85232828fb17ad536765c88dd818c8470aca690b0ac6feeaa3/coverage-7.10.7-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3445258bcded7d4aa630ab8296dea4d3f15a255588dd535f980c193ab6b95f3f", size = 249629 }, + { url = "https://files.pythonhosted.org/packages/82/62/14ed6546d0207e6eda876434e3e8475a3e9adbe32110ce896c9e0c06bb9a/coverage-7.10.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bb45474711ba385c46a0bfe696c695a929ae69ac636cda8f532be9e8c93d720a", size = 252162 }, + { url = "https://files.pythonhosted.org/packages/ff/49/07f00db9ac6478e4358165a08fb41b469a1b053212e8a00cb02f0d27a05f/coverage-7.10.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:813922f35bd800dca9994c5971883cbc0d291128a5de6b167c7aa697fcf59360", size = 253517 }, + { url = "https://files.pythonhosted.org/packages/a2/59/c5201c62dbf165dfbc91460f6dbbaa85a8b82cfa6131ac45d6c1bfb52deb/coverage-7.10.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:93c1b03552081b2a4423091d6fb3787265b8f86af404cff98d1b5342713bdd69", size = 249632 }, + { url = "https://files.pythonhosted.org/packages/07/ae/5920097195291a51fb00b3a70b9bbd2edbfe3c84876a1762bd1ef1565ebc/coverage-7.10.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:cc87dd1b6eaf0b848eebb1c86469b9f72a1891cb42ac7adcfbce75eadb13dd14", size = 251520 }, + { url = "https://files.pythonhosted.org/packages/b9/3c/a815dde77a2981f5743a60b63df31cb322c944843e57dbd579326625a413/coverage-7.10.7-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:39508ffda4f343c35f3236fe8d1a6634a51f4581226a1262769d7f970e73bffe", size = 249455 }, + { url = "https://files.pythonhosted.org/packages/aa/99/f5cdd8421ea656abefb6c0ce92556709db2265c41e8f9fc6c8ae0f7824c9/coverage-7.10.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:925a1edf3d810537c5a3abe78ec5530160c5f9a26b1f4270b40e62cc79304a1e", size = 249287 }, + { url = "https://files.pythonhosted.org/packages/c3/7a/e9a2da6a1fc5d007dd51fca083a663ab930a8c4d149c087732a5dbaa0029/coverage-7.10.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2c8b9a0636f94c43cd3576811e05b89aa9bc2d0a85137affc544ae5cb0e4bfbd", size = 250946 }, + { url = "https://files.pythonhosted.org/packages/ef/5b/0b5799aa30380a949005a353715095d6d1da81927d6dbed5def2200a4e25/coverage-7.10.7-cp314-cp314-win32.whl", hash = "sha256:b7b8288eb7cdd268b0304632da8cb0bb93fadcfec2fe5712f7b9cc8f4d487be2", size = 221009 }, + { url = "https://files.pythonhosted.org/packages/da/b0/e802fbb6eb746de006490abc9bb554b708918b6774b722bb3a0e6aa1b7de/coverage-7.10.7-cp314-cp314-win_amd64.whl", hash = "sha256:1ca6db7c8807fb9e755d0379ccc39017ce0a84dcd26d14b5a03b78563776f681", size = 221804 }, + { url = "https://files.pythonhosted.org/packages/9e/e8/71d0c8e374e31f39e3389bb0bd19e527d46f00ea8571ec7ec8fd261d8b44/coverage-7.10.7-cp314-cp314-win_arm64.whl", hash = "sha256:097c1591f5af4496226d5783d036bf6fd6cd0cbc132e071b33861de756efb880", size = 220384 }, + { url = "https://files.pythonhosted.org/packages/62/09/9a5608d319fa3eba7a2019addeacb8c746fb50872b57a724c9f79f146969/coverage-7.10.7-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:a62c6ef0d50e6de320c270ff91d9dd0a05e7250cac2a800b7784bae474506e63", size = 219047 }, + { url = "https://files.pythonhosted.org/packages/f5/6f/f58d46f33db9f2e3647b2d0764704548c184e6f5e014bef528b7f979ef84/coverage-7.10.7-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9fa6e4dd51fe15d8738708a973470f67a855ca50002294852e9571cdbd9433f2", size = 219266 }, + { url = "https://files.pythonhosted.org/packages/74/5c/183ffc817ba68e0b443b8c934c8795553eb0c14573813415bd59941ee165/coverage-7.10.7-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8fb190658865565c549b6b4706856d6a7b09302c797eb2cf8e7fe9dabb043f0d", size = 260767 }, + { url = "https://files.pythonhosted.org/packages/0f/48/71a8abe9c1ad7e97548835e3cc1adbf361e743e9d60310c5f75c9e7bf847/coverage-7.10.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:affef7c76a9ef259187ef31599a9260330e0335a3011732c4b9effa01e1cd6e0", size = 262931 }, + { url = "https://files.pythonhosted.org/packages/84/fd/193a8fb132acfc0a901f72020e54be5e48021e1575bb327d8ee1097a28fd/coverage-7.10.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e16e07d85ca0cf8bafe5f5d23a0b850064e8e945d5677492b06bbe6f09cc699", size = 265186 }, + { url = "https://files.pythonhosted.org/packages/b1/8f/74ecc30607dd95ad50e3034221113ccb1c6d4e8085cc761134782995daae/coverage-7.10.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:03ffc58aacdf65d2a82bbeb1ffe4d01ead4017a21bfd0454983b88ca73af94b9", size = 259470 }, + { url = "https://files.pythonhosted.org/packages/0f/55/79ff53a769f20d71b07023ea115c9167c0bb56f281320520cf64c5298a96/coverage-7.10.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1b4fd784344d4e52647fd7857b2af5b3fbe6c239b0b5fa63e94eb67320770e0f", size = 262626 }, + { url = "https://files.pythonhosted.org/packages/88/e2/dac66c140009b61ac3fc13af673a574b00c16efdf04f9b5c740703e953c0/coverage-7.10.7-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:0ebbaddb2c19b71912c6f2518e791aa8b9f054985a0769bdb3a53ebbc765c6a1", size = 260386 }, + { url = "https://files.pythonhosted.org/packages/a2/f1/f48f645e3f33bb9ca8a496bc4a9671b52f2f353146233ebd7c1df6160440/coverage-7.10.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:a2d9a3b260cc1d1dbdb1c582e63ddcf5363426a1a68faa0f5da28d8ee3c722a0", size = 258852 }, + { url = "https://files.pythonhosted.org/packages/bb/3b/8442618972c51a7affeead957995cfa8323c0c9bcf8fa5a027421f720ff4/coverage-7.10.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a3cc8638b2480865eaa3926d192e64ce6c51e3d29c849e09d5b4ad95efae5399", size = 261534 }, + { url = "https://files.pythonhosted.org/packages/b2/dc/101f3fa3a45146db0cb03f5b4376e24c0aac818309da23e2de0c75295a91/coverage-7.10.7-cp314-cp314t-win32.whl", hash = "sha256:67f8c5cbcd3deb7a60b3345dffc89a961a484ed0af1f6f73de91705cc6e31235", size = 221784 }, + { url = "https://files.pythonhosted.org/packages/4c/a1/74c51803fc70a8a40d7346660379e144be772bab4ac7bb6e6b905152345c/coverage-7.10.7-cp314-cp314t-win_amd64.whl", hash = "sha256:e1ed71194ef6dea7ed2d5cb5f7243d4bcd334bfb63e59878519be558078f848d", size = 222905 }, + { url = "https://files.pythonhosted.org/packages/12/65/f116a6d2127df30bcafbceef0302d8a64ba87488bf6f73a6d8eebf060873/coverage-7.10.7-cp314-cp314t-win_arm64.whl", hash = "sha256:7fe650342addd8524ca63d77b2362b02345e5f1a093266787d210c70a50b471a", size = 220922 }, + { url = "https://files.pythonhosted.org/packages/ec/16/114df1c291c22cac3b0c127a73e0af5c12ed7bbb6558d310429a0ae24023/coverage-7.10.7-py3-none-any.whl", hash = "sha256:f7941f6f2fe6dd6807a1208737b8a0cbcf1cc6d7b07d24998ad2d63590868260", size = 209952 }, ] [[package]] name = "cryptography" -version = "45.0.6" +version = "46.0.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d6/0d/d13399c94234ee8f3df384819dc67e0c5ce215fb751d567a55a1f4b028c7/cryptography-45.0.6.tar.gz", hash = "sha256:5c966c732cf6e4a276ce83b6e4c729edda2df6929083a952cc7da973c539c719", size = 744949, upload_time = "2025-08-05T23:59:27.93Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8c/29/2793d178d0eda1ca4a09a7c4e09a5185e75738cc6d526433e8663b460ea6/cryptography-45.0.6-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:048e7ad9e08cf4c0ab07ff7f36cc3115924e22e2266e034450a890d9e312dd74", size = 7042702, upload_time = "2025-08-05T23:58:23.464Z" }, - { url = "https://files.pythonhosted.org/packages/b3/b6/cabd07410f222f32c8d55486c464f432808abaa1f12af9afcbe8f2f19030/cryptography-45.0.6-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:44647c5d796f5fc042bbc6d61307d04bf29bccb74d188f18051b635f20a9c75f", size = 4206483, upload_time = "2025-08-05T23:58:27.132Z" }, - { url = "https://files.pythonhosted.org/packages/8b/9e/f9c7d36a38b1cfeb1cc74849aabe9bf817990f7603ff6eb485e0d70e0b27/cryptography-45.0.6-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e40b80ecf35ec265c452eea0ba94c9587ca763e739b8e559c128d23bff7ebbbf", size = 4429679, upload_time = "2025-08-05T23:58:29.152Z" }, - { url = "https://files.pythonhosted.org/packages/9c/2a/4434c17eb32ef30b254b9e8b9830cee4e516f08b47fdd291c5b1255b8101/cryptography-45.0.6-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:00e8724bdad672d75e6f069b27970883179bd472cd24a63f6e620ca7e41cc0c5", size = 4210553, upload_time = "2025-08-05T23:58:30.596Z" }, - { url = "https://files.pythonhosted.org/packages/ef/1d/09a5df8e0c4b7970f5d1f3aff1b640df6d4be28a64cae970d56c6cf1c772/cryptography-45.0.6-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7a3085d1b319d35296176af31c90338eeb2ddac8104661df79f80e1d9787b8b2", size = 3894499, upload_time = "2025-08-05T23:58:32.03Z" }, - { url = "https://files.pythonhosted.org/packages/79/62/120842ab20d9150a9d3a6bdc07fe2870384e82f5266d41c53b08a3a96b34/cryptography-45.0.6-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:1b7fa6a1c1188c7ee32e47590d16a5a0646270921f8020efc9a511648e1b2e08", size = 4458484, upload_time = "2025-08-05T23:58:33.526Z" }, - { url = "https://files.pythonhosted.org/packages/fd/80/1bc3634d45ddfed0871bfba52cf8f1ad724761662a0c792b97a951fb1b30/cryptography-45.0.6-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:275ba5cc0d9e320cd70f8e7b96d9e59903c815ca579ab96c1e37278d231fc402", size = 4210281, upload_time = "2025-08-05T23:58:35.445Z" }, - { url = "https://files.pythonhosted.org/packages/7d/fe/ffb12c2d83d0ee625f124880a1f023b5878f79da92e64c37962bbbe35f3f/cryptography-45.0.6-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f4028f29a9f38a2025abedb2e409973709c660d44319c61762202206ed577c42", size = 4456890, upload_time = "2025-08-05T23:58:36.923Z" }, - { url = "https://files.pythonhosted.org/packages/8c/8e/b3f3fe0dc82c77a0deb5f493b23311e09193f2268b77196ec0f7a36e3f3e/cryptography-45.0.6-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ee411a1b977f40bd075392c80c10b58025ee5c6b47a822a33c1198598a7a5f05", size = 4333247, upload_time = "2025-08-05T23:58:38.781Z" }, - { url = "https://files.pythonhosted.org/packages/b3/a6/c3ef2ab9e334da27a1d7b56af4a2417d77e7806b2e0f90d6267ce120d2e4/cryptography-45.0.6-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e2a21a8eda2d86bb604934b6b37691585bd095c1f788530c1fcefc53a82b3453", size = 4565045, upload_time = "2025-08-05T23:58:40.415Z" }, - { url = "https://files.pythonhosted.org/packages/31/c3/77722446b13fa71dddd820a5faab4ce6db49e7e0bf8312ef4192a3f78e2f/cryptography-45.0.6-cp311-abi3-win32.whl", hash = "sha256:d063341378d7ee9c91f9d23b431a3502fc8bfacd54ef0a27baa72a0843b29159", size = 2928923, upload_time = "2025-08-05T23:58:41.919Z" }, - { url = "https://files.pythonhosted.org/packages/38/63/a025c3225188a811b82932a4dcc8457a26c3729d81578ccecbcce2cb784e/cryptography-45.0.6-cp311-abi3-win_amd64.whl", hash = "sha256:833dc32dfc1e39b7376a87b9a6a4288a10aae234631268486558920029b086ec", size = 3403805, upload_time = "2025-08-05T23:58:43.792Z" }, - { url = "https://files.pythonhosted.org/packages/5b/af/bcfbea93a30809f126d51c074ee0fac5bd9d57d068edf56c2a73abedbea4/cryptography-45.0.6-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:3436128a60a5e5490603ab2adbabc8763613f638513ffa7d311c900a8349a2a0", size = 7020111, upload_time = "2025-08-05T23:58:45.316Z" }, - { url = "https://files.pythonhosted.org/packages/98/c6/ea5173689e014f1a8470899cd5beeb358e22bb3cf5a876060f9d1ca78af4/cryptography-45.0.6-cp37-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0d9ef57b6768d9fa58e92f4947cea96ade1233c0e236db22ba44748ffedca394", size = 4198169, upload_time = "2025-08-05T23:58:47.121Z" }, - { url = "https://files.pythonhosted.org/packages/ba/73/b12995edc0c7e2311ffb57ebd3b351f6b268fed37d93bfc6f9856e01c473/cryptography-45.0.6-cp37-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:ea3c42f2016a5bbf71825537c2ad753f2870191134933196bee408aac397b3d9", size = 4421273, upload_time = "2025-08-05T23:58:48.557Z" }, - { url = "https://files.pythonhosted.org/packages/f7/6e/286894f6f71926bc0da67408c853dd9ba953f662dcb70993a59fd499f111/cryptography-45.0.6-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:20ae4906a13716139d6d762ceb3e0e7e110f7955f3bc3876e3a07f5daadec5f3", size = 4199211, upload_time = "2025-08-05T23:58:50.139Z" }, - { url = "https://files.pythonhosted.org/packages/de/34/a7f55e39b9623c5cb571d77a6a90387fe557908ffc44f6872f26ca8ae270/cryptography-45.0.6-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:2dac5ec199038b8e131365e2324c03d20e97fe214af051d20c49db129844e8b3", size = 3883732, upload_time = "2025-08-05T23:58:52.253Z" }, - { url = "https://files.pythonhosted.org/packages/f9/b9/c6d32edbcba0cd9f5df90f29ed46a65c4631c4fbe11187feb9169c6ff506/cryptography-45.0.6-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:18f878a34b90d688982e43f4b700408b478102dd58b3e39de21b5ebf6509c301", size = 4450655, upload_time = "2025-08-05T23:58:53.848Z" }, - { url = "https://files.pythonhosted.org/packages/77/2d/09b097adfdee0227cfd4c699b3375a842080f065bab9014248933497c3f9/cryptography-45.0.6-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:5bd6020c80c5b2b2242d6c48487d7b85700f5e0038e67b29d706f98440d66eb5", size = 4198956, upload_time = "2025-08-05T23:58:55.209Z" }, - { url = "https://files.pythonhosted.org/packages/55/66/061ec6689207d54effdff535bbdf85cc380d32dd5377173085812565cf38/cryptography-45.0.6-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:eccddbd986e43014263eda489abbddfbc287af5cddfd690477993dbb31e31016", size = 4449859, upload_time = "2025-08-05T23:58:56.639Z" }, - { url = "https://files.pythonhosted.org/packages/41/ff/e7d5a2ad2d035e5a2af116e1a3adb4d8fcd0be92a18032917a089c6e5028/cryptography-45.0.6-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:550ae02148206beb722cfe4ef0933f9352bab26b087af00e48fdfb9ade35c5b3", size = 4320254, upload_time = "2025-08-05T23:58:58.833Z" }, - { url = "https://files.pythonhosted.org/packages/82/27/092d311af22095d288f4db89fcaebadfb2f28944f3d790a4cf51fe5ddaeb/cryptography-45.0.6-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5b64e668fc3528e77efa51ca70fadcd6610e8ab231e3e06ae2bab3b31c2b8ed9", size = 4554815, upload_time = "2025-08-05T23:59:00.283Z" }, - { url = "https://files.pythonhosted.org/packages/7e/01/aa2f4940262d588a8fdf4edabe4cda45854d00ebc6eaac12568b3a491a16/cryptography-45.0.6-cp37-abi3-win32.whl", hash = "sha256:780c40fb751c7d2b0c6786ceee6b6f871e86e8718a8ff4bc35073ac353c7cd02", size = 2912147, upload_time = "2025-08-05T23:59:01.716Z" }, - { url = "https://files.pythonhosted.org/packages/0a/bc/16e0276078c2de3ceef6b5a34b965f4436215efac45313df90d55f0ba2d2/cryptography-45.0.6-cp37-abi3-win_amd64.whl", hash = "sha256:20d15aed3ee522faac1a39fbfdfee25d17b1284bafd808e1640a74846d7c4d1b", size = 3390459, upload_time = "2025-08-05T23:59:03.358Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/a9/62/e3664e6ffd7743e1694b244dde70b43a394f6f7fbcacf7014a8ff5197c73/cryptography-46.0.1.tar.gz", hash = "sha256:ed570874e88f213437f5cf758f9ef26cbfc3f336d889b1e592ee11283bb8d1c7", size = 749198 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/8c/44ee01267ec01e26e43ebfdae3f120ec2312aa72fa4c0507ebe41a26739f/cryptography-46.0.1-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:1cd6d50c1a8b79af1a6f703709d8973845f677c8e97b1268f5ff323d38ce8475", size = 7285044 }, + { url = "https://files.pythonhosted.org/packages/22/59/9ae689a25047e0601adfcb159ec4f83c0b4149fdb5c3030cc94cd218141d/cryptography-46.0.1-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0ff483716be32690c14636e54a1f6e2e1b7bf8e22ca50b989f88fa1b2d287080", size = 4308182 }, + { url = "https://files.pythonhosted.org/packages/c4/ee/ca6cc9df7118f2fcd142c76b1da0f14340d77518c05b1ebfbbabca6b9e7d/cryptography-46.0.1-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9873bf7c1f2a6330bdfe8621e7ce64b725784f9f0c3a6a55c3047af5849f920e", size = 4572393 }, + { url = "https://files.pythonhosted.org/packages/7f/a3/0f5296f63815d8e985922b05c31f77ce44787b3127a67c0b7f70f115c45f/cryptography-46.0.1-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0dfb7c88d4462a0cfdd0d87a3c245a7bc3feb59de101f6ff88194f740f72eda6", size = 4308400 }, + { url = "https://files.pythonhosted.org/packages/5d/8c/74fcda3e4e01be1d32775d5b4dd841acaac3c1b8fa4d0774c7ac8d52463d/cryptography-46.0.1-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e22801b61613ebdebf7deb18b507919e107547a1d39a3b57f5f855032dd7cfb8", size = 4015786 }, + { url = "https://files.pythonhosted.org/packages/dc/b8/85d23287baeef273b0834481a3dd55bbed3a53587e3b8d9f0898235b8f91/cryptography-46.0.1-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:757af4f6341ce7a1e47c326ca2a81f41d236070217e5fbbad61bbfe299d55d28", size = 4982606 }, + { url = "https://files.pythonhosted.org/packages/e5/d3/de61ad5b52433b389afca0bc70f02a7a1f074651221f599ce368da0fe437/cryptography-46.0.1-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f7a24ea78de345cfa7f6a8d3bde8b242c7fac27f2bd78fa23474ca38dfaeeab9", size = 4604234 }, + { url = "https://files.pythonhosted.org/packages/dc/1f/dbd4d6570d84748439237a7478d124ee0134bf166ad129267b7ed8ea6d22/cryptography-46.0.1-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e8776dac9e660c22241b6587fae51a67b4b0147daa4d176b172c3ff768ad736", size = 4307669 }, + { url = "https://files.pythonhosted.org/packages/ec/fd/ca0a14ce7f0bfe92fa727aacaf2217eb25eb7e4ed513b14d8e03b26e63ed/cryptography-46.0.1-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9f40642a140c0c8649987027867242b801486865277cbabc8c6059ddef16dc8b", size = 4947579 }, + { url = "https://files.pythonhosted.org/packages/89/6b/09c30543bb93401f6f88fce556b3bdbb21e55ae14912c04b7bf355f5f96c/cryptography-46.0.1-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:449ef2b321bec7d97ef2c944173275ebdab78f3abdd005400cc409e27cd159ab", size = 4603669 }, + { url = "https://files.pythonhosted.org/packages/23/9a/38cb01cb09ce0adceda9fc627c9cf98eb890fc8d50cacbe79b011df20f8a/cryptography-46.0.1-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2dd339ba3345b908fa3141ddba4025568fa6fd398eabce3ef72a29ac2d73ad75", size = 4435828 }, + { url = "https://files.pythonhosted.org/packages/0f/53/435b5c36a78d06ae0bef96d666209b0ecd8f8181bfe4dda46536705df59e/cryptography-46.0.1-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7411c910fb2a412053cf33cfad0153ee20d27e256c6c3f14d7d7d1d9fec59fd5", size = 4709553 }, + { url = "https://files.pythonhosted.org/packages/f5/c4/0da6e55595d9b9cd3b6eb5dc22f3a07ded7f116a3ea72629cab595abb804/cryptography-46.0.1-cp311-abi3-win32.whl", hash = "sha256:cbb8e769d4cac884bb28e3ff620ef1001b75588a5c83c9c9f1fdc9afbe7f29b0", size = 3058327 }, + { url = "https://files.pythonhosted.org/packages/95/0f/cd29a35e0d6e78a0ee61793564c8cff0929c38391cb0de27627bdc7525aa/cryptography-46.0.1-cp311-abi3-win_amd64.whl", hash = "sha256:92e8cfe8bd7dd86eac0a677499894862cd5cc2fd74de917daa881d00871ac8e7", size = 3523893 }, + { url = "https://files.pythonhosted.org/packages/f2/dd/eea390f3e78432bc3d2f53952375f8b37cb4d37783e626faa6a51e751719/cryptography-46.0.1-cp311-abi3-win_arm64.whl", hash = "sha256:db5597a4c7353b2e5fb05a8e6cb74b56a4658a2b7bf3cb6b1821ae7e7fd6eaa0", size = 2932145 }, + { url = "https://files.pythonhosted.org/packages/0a/fb/c73588561afcd5e24b089952bd210b14676c0c5bf1213376350ae111945c/cryptography-46.0.1-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:4c49eda9a23019e11d32a0eb51a27b3e7ddedde91e099c0ac6373e3aacc0d2ee", size = 7193928 }, + { url = "https://files.pythonhosted.org/packages/26/34/0ff0bb2d2c79f25a2a63109f3b76b9108a906dd2a2eb5c1d460b9938adbb/cryptography-46.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9babb7818fdd71394e576cf26c5452df77a355eac1a27ddfa24096665a27f8fd", size = 4293515 }, + { url = "https://files.pythonhosted.org/packages/df/b7/d4f848aee24ecd1be01db6c42c4a270069a4f02a105d9c57e143daf6cf0f/cryptography-46.0.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9f2c4cc63be3ef43c0221861177cee5d14b505cd4d4599a89e2cd273c4d3542a", size = 4545619 }, + { url = "https://files.pythonhosted.org/packages/44/a5/42fedefc754fd1901e2d95a69815ea4ec8a9eed31f4c4361fcab80288661/cryptography-46.0.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:41c281a74df173876da1dc9a9b6953d387f06e3d3ed9284e3baae3ab3f40883a", size = 4299160 }, + { url = "https://files.pythonhosted.org/packages/86/a1/cd21174f56e769c831fbbd6399a1b7519b0ff6280acec1b826d7b072640c/cryptography-46.0.1-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0a17377fa52563d730248ba1f68185461fff36e8bc75d8787a7dd2e20a802b7a", size = 3994491 }, + { url = "https://files.pythonhosted.org/packages/8d/2f/a8cbfa1c029987ddc746fd966711d4fa71efc891d37fbe9f030fe5ab4eec/cryptography-46.0.1-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:0d1922d9280e08cde90b518a10cd66831f632960a8d08cb3418922d83fce6f12", size = 4960157 }, + { url = "https://files.pythonhosted.org/packages/67/ae/63a84e6789e0d5a2502edf06b552bcb0fa9ff16147265d5c44a211942abe/cryptography-46.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:af84e8e99f1a82cea149e253014ea9dc89f75b82c87bb6c7242203186f465129", size = 4577263 }, + { url = "https://files.pythonhosted.org/packages/ef/8f/1b9fa8e92bd9cbcb3b7e1e593a5232f2c1e6f9bd72b919c1a6b37d315f92/cryptography-46.0.1-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:ef648d2c690703501714588b2ba640facd50fd16548133b11b2859e8655a69da", size = 4298703 }, + { url = "https://files.pythonhosted.org/packages/c3/af/bb95db070e73fea3fae31d8a69ac1463d89d1c084220f549b00dd01094a8/cryptography-46.0.1-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:e94eb5fa32a8a9f9bf991f424f002913e3dd7c699ef552db9b14ba6a76a6313b", size = 4926363 }, + { url = "https://files.pythonhosted.org/packages/f5/3b/d8fb17ffeb3a83157a1cc0aa5c60691d062aceecba09c2e5e77ebfc1870c/cryptography-46.0.1-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:534b96c0831855e29fc3b069b085fd185aa5353033631a585d5cd4dd5d40d657", size = 4576958 }, + { url = "https://files.pythonhosted.org/packages/d9/46/86bc3a05c10c8aa88c8ae7e953a8b4e407c57823ed201dbcba55c4d655f4/cryptography-46.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:f9b55038b5c6c47559aa33626d8ecd092f354e23de3c6975e4bb205df128a2a0", size = 4422507 }, + { url = "https://files.pythonhosted.org/packages/a8/4e/387e5a21dfd2b4198e74968a541cfd6128f66f8ec94ed971776e15091ac3/cryptography-46.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ec13b7105117dbc9afd023300fb9954d72ca855c274fe563e72428ece10191c0", size = 4683964 }, + { url = "https://files.pythonhosted.org/packages/25/a3/f9f5907b166adb8f26762071474b38bbfcf89858a5282f032899075a38a1/cryptography-46.0.1-cp314-cp314t-win32.whl", hash = "sha256:504e464944f2c003a0785b81668fe23c06f3b037e9cb9f68a7c672246319f277", size = 3029705 }, + { url = "https://files.pythonhosted.org/packages/12/66/4d3a4f1850db2e71c2b1628d14b70b5e4c1684a1bd462f7fffb93c041c38/cryptography-46.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c52fded6383f7e20eaf70a60aeddd796b3677c3ad2922c801be330db62778e05", size = 3502175 }, + { url = "https://files.pythonhosted.org/packages/52/c7/9f10ad91435ef7d0d99a0b93c4360bea3df18050ff5b9038c489c31ac2f5/cryptography-46.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:9495d78f52c804b5ec8878b5b8c7873aa8e63db9cd9ee387ff2db3fffe4df784", size = 2912354 }, + { url = "https://files.pythonhosted.org/packages/98/e5/fbd632385542a3311915976f88e0dfcf09e62a3fc0aff86fb6762162a24d/cryptography-46.0.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:d84c40bdb8674c29fa192373498b6cb1e84f882889d21a471b45d1f868d8d44b", size = 7255677 }, + { url = "https://files.pythonhosted.org/packages/56/3e/13ce6eab9ad6eba1b15a7bd476f005a4c1b3f299f4c2f32b22408b0edccf/cryptography-46.0.1-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9ed64e5083fa806709e74fc5ea067dfef9090e5b7a2320a49be3c9df3583a2d8", size = 4301110 }, + { url = "https://files.pythonhosted.org/packages/a2/67/65dc233c1ddd688073cf7b136b06ff4b84bf517ba5529607c9d79720fc67/cryptography-46.0.1-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:341fb7a26bc9d6093c1b124b9f13acc283d2d51da440b98b55ab3f79f2522ead", size = 4562369 }, + { url = "https://files.pythonhosted.org/packages/17/db/d64ae4c6f4e98c3dac5bf35dd4d103f4c7c345703e43560113e5e8e31b2b/cryptography-46.0.1-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6ef1488967e729948d424d09c94753d0167ce59afba8d0f6c07a22b629c557b2", size = 4302126 }, + { url = "https://files.pythonhosted.org/packages/3d/19/5f1eea17d4805ebdc2e685b7b02800c4f63f3dd46cfa8d4c18373fea46c8/cryptography-46.0.1-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7823bc7cdf0b747ecfb096d004cc41573c2f5c7e3a29861603a2871b43d3ef32", size = 4009431 }, + { url = "https://files.pythonhosted.org/packages/81/b5/229ba6088fe7abccbfe4c5edb96c7a5ad547fac5fdd0d40aa6ea540b2985/cryptography-46.0.1-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:f736ab8036796f5a119ff8211deda416f8c15ce03776db704a7a4e17381cb2ef", size = 4980739 }, + { url = "https://files.pythonhosted.org/packages/3a/9c/50aa38907b201e74bc43c572f9603fa82b58e831bd13c245613a23cff736/cryptography-46.0.1-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:e46710a240a41d594953012213ea8ca398cd2448fbc5d0f1be8160b5511104a0", size = 4592289 }, + { url = "https://files.pythonhosted.org/packages/5a/33/229858f8a5bb22f82468bb285e9f4c44a31978d5f5830bb4ea1cf8a4e454/cryptography-46.0.1-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:84ef1f145de5aee82ea2447224dc23f065ff4cc5791bb3b506615957a6ba8128", size = 4301815 }, + { url = "https://files.pythonhosted.org/packages/52/cb/b76b2c87fbd6ed4a231884bea3ce073406ba8e2dae9defad910d33cbf408/cryptography-46.0.1-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9394c7d5a7565ac5f7d9ba38b2617448eba384d7b107b262d63890079fad77ca", size = 4943251 }, + { url = "https://files.pythonhosted.org/packages/94/0f/f66125ecf88e4cb5b8017ff43f3a87ede2d064cb54a1c5893f9da9d65093/cryptography-46.0.1-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:ed957044e368ed295257ae3d212b95456bd9756df490e1ac4538857f67531fcc", size = 4591247 }, + { url = "https://files.pythonhosted.org/packages/f6/22/9f3134ae436b63b463cfdf0ff506a0570da6873adb4bf8c19b8a5b4bac64/cryptography-46.0.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f7de12fa0eee6234de9a9ce0ffcfa6ce97361db7a50b09b65c63ac58e5f22fc7", size = 4428534 }, + { url = "https://files.pythonhosted.org/packages/89/39/e6042bcb2638650b0005c752c38ea830cbfbcbb1830e4d64d530000aa8dc/cryptography-46.0.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7fab1187b6c6b2f11a326f33b036f7168f5b996aedd0c059f9738915e4e8f53a", size = 4699541 }, + { url = "https://files.pythonhosted.org/packages/68/46/753d457492d15458c7b5a653fc9a84a1c9c7a83af6ebdc94c3fc373ca6e8/cryptography-46.0.1-cp38-abi3-win32.whl", hash = "sha256:45f790934ac1018adeba46a0f7289b2b8fe76ba774a88c7f1922213a56c98bc1", size = 3043779 }, + { url = "https://files.pythonhosted.org/packages/2f/50/b6f3b540c2f6ee712feeb5fa780bb11fad76634e71334718568e7695cb55/cryptography-46.0.1-cp38-abi3-win_amd64.whl", hash = "sha256:7176a5ab56fac98d706921f6416a05e5aff7df0e4b91516f450f8627cda22af3", size = 3517226 }, + { url = "https://files.pythonhosted.org/packages/ff/e8/77d17d00981cdd27cc493e81e1749a0b8bbfb843780dbd841e30d7f50743/cryptography-46.0.1-cp38-abi3-win_arm64.whl", hash = "sha256:efc9e51c3e595267ff84adf56e9b357db89ab2279d7e375ffcaf8f678606f3d9", size = 2923149 }, ] [[package]] name = "csscompressor" version = "0.9.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/2a/8c3ac3d8bc94e6de8d7ae270bb5bc437b210bb9d6d9e46630c98f4abd20c/csscompressor-0.9.5.tar.gz", hash = "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05", size = 237808, upload_time = "2017-11-26T21:13:08.238Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/2a/8c3ac3d8bc94e6de8d7ae270bb5bc437b210bb9d6d9e46630c98f4abd20c/csscompressor-0.9.5.tar.gz", hash = "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05", size = 237808 } [[package]] name = "cssselect2" @@ -381,98 +445,102 @@ dependencies = [ { name = "tinycss2" }, { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9f/86/fd7f58fc498b3166f3a7e8e0cddb6e620fe1da35b02248b1bd59e95dbaaa/cssselect2-0.8.0.tar.gz", hash = "sha256:7674ffb954a3b46162392aee2a3a0aedb2e14ecf99fcc28644900f4e6e3e9d3a", size = 35716, upload_time = "2025-03-05T14:46:07.988Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/86/fd7f58fc498b3166f3a7e8e0cddb6e620fe1da35b02248b1bd59e95dbaaa/cssselect2-0.8.0.tar.gz", hash = "sha256:7674ffb954a3b46162392aee2a3a0aedb2e14ecf99fcc28644900f4e6e3e9d3a", size = 35716 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/e7/aa315e6a749d9b96c2504a1ba0ba031ba2d0517e972ce22682e3fccecb09/cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e", size = 15454, upload_time = "2025-03-05T14:46:06.463Z" }, + { url = "https://files.pythonhosted.org/packages/0f/e7/aa315e6a749d9b96c2504a1ba0ba031ba2d0517e972ce22682e3fccecb09/cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e", size = 15454 }, ] [[package]] name = "debugpy" -version = "1.8.14" +version = "1.8.17" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444, upload_time = "2025-04-10T19:46:10.981Z" } +sdist = { url = "https://files.pythonhosted.org/packages/15/ad/71e708ff4ca377c4230530d6a7aa7992592648c122a2cd2b321cf8b35a76/debugpy-1.8.17.tar.gz", hash = "sha256:fd723b47a8c08892b1a16b2c6239a8b96637c62a59b94bb5dab4bac592a58a8e", size = 1644129 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268, upload_time = "2025-04-10T19:46:26.044Z" }, - { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077, upload_time = "2025-04-10T19:46:27.464Z" }, - { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127, upload_time = "2025-04-10T19:46:29.467Z" }, - { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249, upload_time = "2025-04-10T19:46:31.538Z" }, - { url = "https://files.pythonhosted.org/packages/4d/e4/395c792b243f2367d84202dc33689aa3d910fb9826a7491ba20fc9e261f5/debugpy-1.8.14-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:329a15d0660ee09fec6786acdb6e0443d595f64f5d096fc3e3ccf09a4259033f", size = 2485676, upload_time = "2025-04-10T19:46:32.96Z" }, - { url = "https://files.pythonhosted.org/packages/ba/f1/6f2ee3f991327ad9e4c2f8b82611a467052a0fb0e247390192580e89f7ff/debugpy-1.8.14-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f920c7f9af409d90f5fd26e313e119d908b0dd2952c2393cd3247a462331f15", size = 4217514, upload_time = "2025-04-10T19:46:34.336Z" }, - { url = "https://files.pythonhosted.org/packages/79/28/b9d146f8f2dc535c236ee09ad3e5ac899adb39d7a19b49f03ac95d216beb/debugpy-1.8.14-cp313-cp313-win32.whl", hash = "sha256:3784ec6e8600c66cbdd4ca2726c72d8ca781e94bce2f396cc606d458146f8f4e", size = 5254756, upload_time = "2025-04-10T19:46:36.199Z" }, - { url = "https://files.pythonhosted.org/packages/e0/62/a7b4a57013eac4ccaef6977966e6bec5c63906dd25a86e35f155952e29a1/debugpy-1.8.14-cp313-cp313-win_amd64.whl", hash = "sha256:684eaf43c95a3ec39a96f1f5195a7ff3d4144e4a18d69bb66beeb1a6de605d6e", size = 5297119, upload_time = "2025-04-10T19:46:38.141Z" }, - { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230, upload_time = "2025-04-10T19:46:54.077Z" }, + { url = "https://files.pythonhosted.org/packages/08/2b/9d8e65beb2751876c82e1aceb32f328c43ec872711fa80257c7674f45650/debugpy-1.8.17-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:f14467edef672195c6f6b8e27ce5005313cb5d03c9239059bc7182b60c176e2d", size = 2549522 }, + { url = "https://files.pythonhosted.org/packages/b4/78/eb0d77f02971c05fca0eb7465b18058ba84bd957062f5eec82f941ac792a/debugpy-1.8.17-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:24693179ef9dfa20dca8605905a42b392be56d410c333af82f1c5dff807a64cc", size = 4309417 }, + { url = "https://files.pythonhosted.org/packages/37/42/c40f1d8cc1fed1e75ea54298a382395b8b937d923fcf41ab0797a554f555/debugpy-1.8.17-cp312-cp312-win32.whl", hash = "sha256:6a4e9dacf2cbb60d2514ff7b04b4534b0139facbf2abdffe0639ddb6088e59cf", size = 5277130 }, + { url = "https://files.pythonhosted.org/packages/72/22/84263b205baad32b81b36eac076de0cdbe09fe2d0637f5b32243dc7c925b/debugpy-1.8.17-cp312-cp312-win_amd64.whl", hash = "sha256:e8f8f61c518952fb15f74a302e068b48d9c4691768ade433e4adeea961993464", size = 5319053 }, + { url = "https://files.pythonhosted.org/packages/50/76/597e5cb97d026274ba297af8d89138dfd9e695767ba0e0895edb20963f40/debugpy-1.8.17-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:857c1dd5d70042502aef1c6d1c2801211f3ea7e56f75e9c335f434afb403e464", size = 2538386 }, + { url = "https://files.pythonhosted.org/packages/5f/60/ce5c34fcdfec493701f9d1532dba95b21b2f6394147234dce21160bd923f/debugpy-1.8.17-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:3bea3b0b12f3946e098cce9b43c3c46e317b567f79570c3f43f0b96d00788088", size = 4292100 }, + { url = "https://files.pythonhosted.org/packages/e8/95/7873cf2146577ef71d2a20bf553f12df865922a6f87b9e8ee1df04f01785/debugpy-1.8.17-cp313-cp313-win32.whl", hash = "sha256:e34ee844c2f17b18556b5bbe59e1e2ff4e86a00282d2a46edab73fd7f18f4a83", size = 5277002 }, + { url = "https://files.pythonhosted.org/packages/46/11/18c79a1cee5ff539a94ec4aa290c1c069a5580fd5cfd2fb2e282f8e905da/debugpy-1.8.17-cp313-cp313-win_amd64.whl", hash = "sha256:6c5cd6f009ad4fca8e33e5238210dc1e5f42db07d4b6ab21ac7ffa904a196420", size = 5319047 }, + { url = "https://files.pythonhosted.org/packages/de/45/115d55b2a9da6de812696064ceb505c31e952c5d89c4ed1d9bb983deec34/debugpy-1.8.17-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:045290c010bcd2d82bc97aa2daf6837443cd52f6328592698809b4549babcee1", size = 2536899 }, + { url = "https://files.pythonhosted.org/packages/5a/73/2aa00c7f1f06e997ef57dc9b23d61a92120bec1437a012afb6d176585197/debugpy-1.8.17-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:b69b6bd9dba6a03632534cdf67c760625760a215ae289f7489a452af1031fe1f", size = 4268254 }, + { url = "https://files.pythonhosted.org/packages/86/b5/ed3e65c63c68a6634e3ba04bd10255c8e46ec16ebed7d1c79e4816d8a760/debugpy-1.8.17-cp314-cp314-win32.whl", hash = "sha256:5c59b74aa5630f3a5194467100c3b3d1c77898f9ab27e3f7dc5d40fc2f122670", size = 5277203 }, + { url = "https://files.pythonhosted.org/packages/b0/26/394276b71c7538445f29e792f589ab7379ae70fd26ff5577dfde71158e96/debugpy-1.8.17-cp314-cp314-win_amd64.whl", hash = "sha256:893cba7bb0f55161de4365584b025f7064e1f88913551bcd23be3260b231429c", size = 5318493 }, + { url = "https://files.pythonhosted.org/packages/b0/d0/89247ec250369fc76db477720a26b2fce7ba079ff1380e4ab4529d2fe233/debugpy-1.8.17-py2.py3-none-any.whl", hash = "sha256:60c7dca6571efe660ccb7a9508d73ca14b8796c4ed484c2002abba714226cfef", size = 5283210 }, ] [[package]] name = "decorator" version = "5.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload_time = "2025-02-24T04:41:34.073Z" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload_time = "2025-02-24T04:41:32.565Z" }, + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 }, ] [[package]] name = "defusedxml" version = "0.7.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload_time = "2021-03-08T10:59:26.269Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload_time = "2021-03-08T10:59:24.45Z" }, + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, ] [[package]] name = "distlib" -version = "0.3.9" +version = "0.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload_time = "2024-10-09T18:35:47.551Z" } +sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605 } wheels = [ - { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload_time = "2024-10-09T18:35:44.272Z" }, + { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047 }, ] [[package]] name = "et-xmlfile" version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234, upload_time = "2024-10-25T17:25:40.039Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059, upload_time = "2024-10-25T17:25:39.051Z" }, + { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059 }, ] [[package]] name = "execnet" version = "2.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/ff/b4c0dc78fbe20c3e59c0c7334de0c27eb4001a2b2017999af398bf730817/execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3", size = 166524, upload_time = "2024-04-08T09:04:19.245Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/ff/b4c0dc78fbe20c3e59c0c7334de0c27eb4001a2b2017999af398bf730817/execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3", size = 166524 } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/09/2aea36ff60d16dd8879bdb2f5b3ee0ba8d08cbbdcdfe870e695ce3784385/execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc", size = 40612, upload_time = "2024-04-08T09:04:17.414Z" }, + { url = "https://files.pythonhosted.org/packages/43/09/2aea36ff60d16dd8879bdb2f5b3ee0ba8d08cbbdcdfe870e695ce3784385/execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc", size = 40612 }, ] [[package]] name = "executing" -version = "2.2.0" +version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload_time = "2025-01-22T15:41:29.403Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload_time = "2025-01-22T15:41:25.929Z" }, + { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317 }, ] [[package]] name = "fastjsonschema" version = "2.21.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/b5/23b216d9d985a956623b6bd12d4086b60f0059b27799f23016af04a74ea1/fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de", size = 374130, upload_time = "2025-08-14T18:49:36.666Z" } +sdist = { url = "https://files.pythonhosted.org/packages/20/b5/23b216d9d985a956623b6bd12d4086b60f0059b27799f23016af04a74ea1/fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de", size = 374130 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024, upload_time = "2025-08-14T18:49:34.776Z" }, + { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024 }, ] [[package]] name = "filelock" -version = "3.18.0" +version = "3.19.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload_time = "2025-03-14T07:11:40.47Z" } +sdist = { url = "https://files.pythonhosted.org/packages/40/bb/0ab3e58d22305b6f5440629d20683af28959bf793d98d11950e305c1c326/filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58", size = 17687 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload_time = "2025-03-14T07:11:39.145Z" }, + { url = "https://files.pythonhosted.org/packages/42/14/42b2651a2f46b022ccd948bca9f2d5af0fd8929c4eec235b8d6d844fbe67/filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d", size = 15988 }, ] [[package]] @@ -482,9 +550,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/b0/8a21e330561c65653d010ef112bf38f60890051d244ede197ddaa08e50c1/flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656", size = 15816, upload_time = "2024-03-09T03:21:07.555Z" } +sdist = { url = "https://files.pythonhosted.org/packages/55/b0/8a21e330561c65653d010ef112bf38f60890051d244ede197ddaa08e50c1/flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656", size = 15816 } wheels = [ - { url = "https://files.pythonhosted.org/packages/27/cd/c883e1a7c447479d6e13985565080e3fea88ab5a107c21684c813dba1875/flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32", size = 13263, upload_time = "2024-03-09T03:21:05.635Z" }, + { url = "https://files.pythonhosted.org/packages/27/cd/c883e1a7c447479d6e13985565080e3fea88ab5a107c21684c813dba1875/flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32", size = 13263 }, ] [[package]] @@ -494,9 +562,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/82/99/b4de7e39e8eaf8207ba1a8fa2241dd98b2ba72ae6e16960d8351736d8702/flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2", size = 31799, upload_time = "2024-11-07T02:00:56.249Z" } +sdist = { url = "https://files.pythonhosted.org/packages/82/99/b4de7e39e8eaf8207ba1a8fa2241dd98b2ba72ae6e16960d8351736d8702/flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2", size = 31799 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/5e/3be305568fe5f34448807976dc82fc151d76c3e0e03958f34770286278c1/flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846", size = 27625, upload_time = "2024-11-07T02:00:54.523Z" }, + { url = "https://files.pythonhosted.org/packages/fe/5e/3be305568fe5f34448807976dc82fc151d76c3e0e03958f34770286278c1/flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846", size = 27625 }, ] [[package]] @@ -524,20 +592,20 @@ dependencies = [ { name = "typing-extensions" }, { name = "validators" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/11/d0/c94675a1c1b8c12fd68489e2b4a924f80a2b122199cd986c58a5136197d2/frictionless-5.18.1.tar.gz", hash = "sha256:daeaf55f896eeb52b43e62600466af9528fe0aeeebd28b1b917e13322f370a8b", size = 74372478, upload_time = "2025-03-25T21:32:50.081Z" } +sdist = { url = "https://files.pythonhosted.org/packages/11/d0/c94675a1c1b8c12fd68489e2b4a924f80a2b122199cd986c58a5136197d2/frictionless-5.18.1.tar.gz", hash = "sha256:daeaf55f896eeb52b43e62600466af9528fe0aeeebd28b1b917e13322f370a8b", size = 74372478 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/7a/dac76d31584bb4f874ae860490c9465f5b59bd8c110f68fbbb07aba48845/frictionless-5.18.1-py3-none-any.whl", hash = "sha256:3f4c87469a89bdb88e9cc318088553a26f3d14839098f95c183ea01fc89628dd", size = 531615, upload_time = "2025-03-25T21:32:45.534Z" }, + { url = "https://files.pythonhosted.org/packages/a9/7a/dac76d31584bb4f874ae860490c9465f5b59bd8c110f68fbbb07aba48845/frictionless-5.18.1-py3-none-any.whl", hash = "sha256:3f4c87469a89bdb88e9cc318088553a26f3d14839098f95c183ea01fc89628dd", size = 531615 }, ] [[package]] name = "frozendict" version = "2.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/59/19eb300ba28e7547538bdf603f1c6c34793240a90e1a7b61b65d8517e35e/frozendict-2.4.6.tar.gz", hash = "sha256:df7cd16470fbd26fc4969a208efadc46319334eb97def1ddf48919b351192b8e", size = 316416, upload_time = "2024-10-13T12:15:32.449Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/59/19eb300ba28e7547538bdf603f1c6c34793240a90e1a7b61b65d8517e35e/frozendict-2.4.6.tar.gz", hash = "sha256:df7cd16470fbd26fc4969a208efadc46319334eb97def1ddf48919b351192b8e", size = 316416 } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/13/d9839089b900fa7b479cce495d62110cddc4bd5630a04d8469916c0e79c5/frozendict-2.4.6-py311-none-any.whl", hash = "sha256:d065db6a44db2e2375c23eac816f1a022feb2fa98cbb50df44a9e83700accbea", size = 16148, upload_time = "2024-10-13T12:15:26.839Z" }, - { url = "https://files.pythonhosted.org/packages/ba/d0/d482c39cee2ab2978a892558cf130681d4574ea208e162da8958b31e9250/frozendict-2.4.6-py312-none-any.whl", hash = "sha256:49344abe90fb75f0f9fdefe6d4ef6d4894e640fadab71f11009d52ad97f370b9", size = 16146, upload_time = "2024-10-13T12:15:28.16Z" }, - { url = "https://files.pythonhosted.org/packages/a5/8e/b6bf6a0de482d7d7d7a2aaac8fdc4a4d0bb24a809f5ddd422aa7060eb3d2/frozendict-2.4.6-py313-none-any.whl", hash = "sha256:7134a2bb95d4a16556bb5f2b9736dceb6ea848fa5b6f3f6c2d6dba93b44b4757", size = 16146, upload_time = "2024-10-13T12:15:29.495Z" }, + { url = "https://files.pythonhosted.org/packages/04/13/d9839089b900fa7b479cce495d62110cddc4bd5630a04d8469916c0e79c5/frozendict-2.4.6-py311-none-any.whl", hash = "sha256:d065db6a44db2e2375c23eac816f1a022feb2fa98cbb50df44a9e83700accbea", size = 16148 }, + { url = "https://files.pythonhosted.org/packages/ba/d0/d482c39cee2ab2978a892558cf130681d4574ea208e162da8958b31e9250/frozendict-2.4.6-py312-none-any.whl", hash = "sha256:49344abe90fb75f0f9fdefe6d4ef6d4894e640fadab71f11009d52ad97f370b9", size = 16146 }, + { url = "https://files.pythonhosted.org/packages/a5/8e/b6bf6a0de482d7d7d7a2aaac8fdc4a4d0bb24a809f5ddd422aa7060eb3d2/frozendict-2.4.6-py313-none-any.whl", hash = "sha256:7134a2bb95d4a16556bb5f2b9736dceb6ea848fa5b6f3f6c2d6dba93b44b4757", size = 16146 }, ] [[package]] @@ -547,9 +615,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943, upload_time = "2022-05-02T15:47:16.11Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034, upload_time = "2022-05-02T15:47:14.552Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, ] [[package]] @@ -559,33 +627,33 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "smmap" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684, upload_time = "2025-01-02T07:20:46.413Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794, upload_time = "2025-01-02T07:20:43.624Z" }, + { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794 }, ] [[package]] name = "gitpython" -version = "3.1.44" +version = "3.1.45" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "gitdb" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196, upload_time = "2025-01-02T07:32:43.59Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/c8/dd58967d119baab745caec2f9d853297cec1989ec1d63f677d3880632b88/gitpython-3.1.45.tar.gz", hash = "sha256:85b0ee964ceddf211c41b9f27a49086010a190fd8132a24e21f362a4b36a791c", size = 215076 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599, upload_time = "2025-01-02T07:32:40.731Z" }, + { url = "https://files.pythonhosted.org/packages/01/61/d4b89fec821f72385526e1b9d9a3a0385dda4a72b206d28049e2c7cd39b8/gitpython-3.1.45-py3-none-any.whl", hash = "sha256:8908cb2e02fb3b93b7eb0f2827125cb699869470432cc885f019b8fd0fccff77", size = 208168 }, ] [[package]] name = "griffe" -version = "1.7.3" +version = "1.14.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a9/3e/5aa9a61f7c3c47b0b52a1d930302992229d191bf4bc76447b324b731510a/griffe-1.7.3.tar.gz", hash = "sha256:52ee893c6a3a968b639ace8015bec9d36594961e156e23315c8e8e51401fa50b", size = 395137, upload_time = "2025-04-23T11:29:09.147Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/d7/6c09dd7ce4c7837e4cdb11dce980cb45ae3cd87677298dc3b781b6bce7d3/griffe-1.14.0.tar.gz", hash = "sha256:9d2a15c1eca966d68e00517de5d69dd1bc5c9f2335ef6c1775362ba5b8651a13", size = 424684 } wheels = [ - { url = "https://files.pythonhosted.org/packages/58/c6/5c20af38c2a57c15d87f7f38bee77d63c1d2a3689f74fefaf35915dd12b2/griffe-1.7.3-py3-none-any.whl", hash = "sha256:c6b3ee30c2f0f17f30bcdef5068d6ab7a2a4f1b8bf1a3e74b56fffd21e1c5f75", size = 129303, upload_time = "2025-04-23T11:29:07.145Z" }, + { url = "https://files.pythonhosted.org/packages/2a/b1/9ff6578d789a89812ff21e4e0f80ffae20a65d5dd84e7a17873fe3b365be/griffe-1.14.0-py3-none-any.whl", hash = "sha256:0e9d52832cccf0f7188cfe585ba962d2674b241c01916d780925df34873bceb0", size = 144439 }, ] [[package]] @@ -593,33 +661,33 @@ name = "gurobipy" version = "12.0.3" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6f/bb/b3784497115c64c2bd122cc9d411f167026d4ec42a26b1ff3c43a779275d/gurobipy-12.0.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:020f23277f630e079eac114385eabd1bd9fb4ac22f8796ed5ba6d915ce4f141b", size = 12222234, upload_time = "2025-07-15T07:19:24.64Z" }, - { url = "https://files.pythonhosted.org/packages/18/ea/c065984de5287c99fd30ee8d700fd78f83692e992471f9667ab5d36612b9/gurobipy-12.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:72bbf544bc05060bb93909b79715ace4c0f416198f7622a985cabb9e8e99aa1c", size = 62583866, upload_time = "2025-07-15T07:20:17.576Z" }, - { url = "https://files.pythonhosted.org/packages/9b/8b/2b9f26e4e19a258229b8a8ffc377ca372cc2059a22a0a7c67572efe308d8/gurobipy-12.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b3f971caf270f671b6ffcf5b937b3c0430a5264b0f01529dc8681d61c221f215", size = 14268480, upload_time = "2025-07-15T07:20:26.898Z" }, - { url = "https://files.pythonhosted.org/packages/26/0f/3544a323635f37cdfe1e011d2903b7ef94ba18e10224fa1419f64d0c1968/gurobipy-12.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:af18fd03d5dc3f6e5f590c372ad288b8430a6d88a5b5e66cfcd8432f86ee8650", size = 11121565, upload_time = "2025-07-15T07:20:34.576Z" }, - { url = "https://files.pythonhosted.org/packages/5e/95/f0e5b5cf85298f42482cf4e53d8114c45bb962f55195d531fe4e62b5afa1/gurobipy-12.0.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a8552e47673cb6f1fd351edf8fcad86b02f832cbfb57d90ef21e0397e96d138e", size = 12183439, upload_time = "2025-07-15T07:20:44.224Z" }, - { url = "https://files.pythonhosted.org/packages/61/6e/aea725b4143faa4eb6878414a91fa74e7871aba0ab9453803a9eeef781c2/gurobipy-12.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:be05c074141c8a126c8aaeccc41795ab091a666eabb39ca1ff98a74bde81e663", size = 62583451, upload_time = "2025-07-15T07:21:38.825Z" }, - { url = "https://files.pythonhosted.org/packages/75/47/7b9c63ce2cd85d796403b91a6d211d5c8baac7b694edd94e2151f365d6a9/gurobipy-12.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:79a333766e27fef7902ceeefbcf0279a1ca393a27a72ea62f8e301b21aa17d59", size = 14271076, upload_time = "2025-07-15T07:21:55.102Z" }, - { url = "https://files.pythonhosted.org/packages/2a/93/b10cd6112c05675fed5c817fd7933c9d4ba3a7039e42cba844a9ac09242a/gurobipy-12.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:e0f9ed55077e622021369bb9df2ca3b00c86b678792a3b1556cc59f67348fab0", size = 11111414, upload_time = "2025-07-15T07:22:05.079Z" }, + { url = "https://files.pythonhosted.org/packages/6f/bb/b3784497115c64c2bd122cc9d411f167026d4ec42a26b1ff3c43a779275d/gurobipy-12.0.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:020f23277f630e079eac114385eabd1bd9fb4ac22f8796ed5ba6d915ce4f141b", size = 12222234 }, + { url = "https://files.pythonhosted.org/packages/18/ea/c065984de5287c99fd30ee8d700fd78f83692e992471f9667ab5d36612b9/gurobipy-12.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:72bbf544bc05060bb93909b79715ace4c0f416198f7622a985cabb9e8e99aa1c", size = 62583866 }, + { url = "https://files.pythonhosted.org/packages/9b/8b/2b9f26e4e19a258229b8a8ffc377ca372cc2059a22a0a7c67572efe308d8/gurobipy-12.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b3f971caf270f671b6ffcf5b937b3c0430a5264b0f01529dc8681d61c221f215", size = 14268480 }, + { url = "https://files.pythonhosted.org/packages/26/0f/3544a323635f37cdfe1e011d2903b7ef94ba18e10224fa1419f64d0c1968/gurobipy-12.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:af18fd03d5dc3f6e5f590c372ad288b8430a6d88a5b5e66cfcd8432f86ee8650", size = 11121565 }, + { url = "https://files.pythonhosted.org/packages/5e/95/f0e5b5cf85298f42482cf4e53d8114c45bb962f55195d531fe4e62b5afa1/gurobipy-12.0.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a8552e47673cb6f1fd351edf8fcad86b02f832cbfb57d90ef21e0397e96d138e", size = 12183439 }, + { url = "https://files.pythonhosted.org/packages/61/6e/aea725b4143faa4eb6878414a91fa74e7871aba0ab9453803a9eeef781c2/gurobipy-12.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:be05c074141c8a126c8aaeccc41795ab091a666eabb39ca1ff98a74bde81e663", size = 62583451 }, + { url = "https://files.pythonhosted.org/packages/75/47/7b9c63ce2cd85d796403b91a6d211d5c8baac7b694edd94e2151f365d6a9/gurobipy-12.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:79a333766e27fef7902ceeefbcf0279a1ca393a27a72ea62f8e301b21aa17d59", size = 14271076 }, + { url = "https://files.pythonhosted.org/packages/2a/93/b10cd6112c05675fed5c817fd7933c9d4ba3a7039e42cba844a9ac09242a/gurobipy-12.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:e0f9ed55077e622021369bb9df2ca3b00c86b678792a3b1556cc59f67348fab0", size = 11111414 }, ] [[package]] name = "hdx-python-country" -version = "3.9.6" +version = "3.9.8" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "hdx-python-utilities" }, { name = "libhxl" }, { name = "tenacity" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/88/96/ac55b204699cd216a22a943f64aafac32bba818f624a5d44879d60368fad/hdx_python_country-3.9.6.tar.gz", hash = "sha256:7791f4b9c5ae3e62e82795c266a3ca6ee23c7bab706c91533844edf2ebd9bb18", size = 529232, upload_time = "2025-07-09T22:56:32.162Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/cc/5621c48b79a510a87288495f4bdde38a292f0f97dd14177e2cc77c8a79bb/hdx_python_country-3.9.8.tar.gz", hash = "sha256:de9d928e490490fe6fa2d743597464fa8bae317f808667a947e734c1ea26e4d9", size = 531031 } wheels = [ - { url = "https://files.pythonhosted.org/packages/45/90/646b56ec12df459799510d6d0869ada210ad9f765ad104e50dae4867eb50/hdx_python_country-3.9.6-py3-none-any.whl", hash = "sha256:4c1833bdf3cbd14dfff0146e0bdcae5763931d344fce5f1b42493dc8751e3d4a", size = 55554, upload_time = "2025-07-09T22:56:30.128Z" }, + { url = "https://files.pythonhosted.org/packages/ce/8f/7d961e17372bb9df875e988432a2abb9ca4883b4a0592dfccefa50cb697f/hdx_python_country-3.9.8-py3-none-any.whl", hash = "sha256:602e495028e474e2f93094136007b2c0e765d88af55b2cae7e0ba778e178bcaf", size = 56383 }, ] [[package]] name = "hdx-python-utilities" -version = "3.8.7" +version = "3.9.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "frictionless" }, @@ -637,9 +705,9 @@ dependencies = [ { name = "xlsx2csv" }, { name = "xlwt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/de/b812b6b242f47db98ed043b7f3211c81443f0e59959377e97a93915331c0/hdx_python_utilities-3.8.7.tar.gz", hash = "sha256:41212cd5b682777d393ee991b546f1b4326665d981714a829e5483101fd15a60", size = 656009, upload_time = "2025-05-14T02:31:28.578Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/13/f22d36f9146beaefe27b1a888acd31ddd09c1a9730ed1d42df9af33f99e2/hdx_python_utilities-3.9.2.tar.gz", hash = "sha256:de39248afdca00ab636fdfa0c3259fa80e4b95dba026170a4efc5bee14eda3f3", size = 656826 } wheels = [ - { url = "https://files.pythonhosted.org/packages/db/38/44f2a0b83e103bb3d47dbc66dfaa4aaa65c34c60fd26d5445fb2bbd3c09a/hdx_python_utilities-3.8.7-py3-none-any.whl", hash = "sha256:47e67810e81a481504b8653c429b31b8c237da594dc27604075c8e79077c8640", size = 60787, upload_time = "2025-05-14T02:31:26.794Z" }, + { url = "https://files.pythonhosted.org/packages/95/6d/06994f86c2cc172b5ea127dedbb19e809205e06b1ba7532e2f0aea5631cd/hdx_python_utilities-3.9.2-py3-none-any.whl", hash = "sha256:fae3cc241420ae7ebb0a7a53cc8034c6851886396b2f0880685aba9045973111", size = 61187 }, ] [[package]] @@ -649,28 +717,28 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b4/fc/aa1325331c320598ce60cc31060087681cd05123b6fb2a8a571e882b7f05/highspy-1.11.0.tar.gz", hash = "sha256:771e58c076122d207ff1b19759c21d3227f0da5b80dfd89a4145681524969cef", size = 1285415, upload_time = "2025-06-06T00:47:22.562Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/ad/b54ad6740b950faab3b7f1465fbb5c740fc522928a8d9f01cac181f8f9a6/highspy-1.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:28fffd3e733833a7b2569df6761088046e8aca868ab328828711dbe15b102ad4", size = 2232856, upload_time = "2025-06-06T00:46:11.161Z" }, - { url = "https://files.pythonhosted.org/packages/a3/0c/3921a207f47d52abc81a9d00d8f4d579b05b85670e23bc7140e39268490d/highspy-1.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:20a3adf8820a5f7a9cee6fc76df625e651ecfd8b5898af2a77042e79269ce0bc", size = 1908641, upload_time = "2025-06-06T00:46:12.706Z" }, - { url = "https://files.pythonhosted.org/packages/0a/b6/ea7ea6c4c3f781b007fe928b2aefa40c49287b4689985d04c3b20d383475/highspy-1.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d4bc0a84cf613bb8565f9b5f610eb0655384162f509b5d86f9c888570275fdc", size = 2119574, upload_time = "2025-06-06T00:46:14.261Z" }, - { url = "https://files.pythonhosted.org/packages/ff/0c/94f1ccb6606e8445a7a0c68d983e47f64899582c64fcea651f488eaaaea0/highspy-1.11.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:543789b75c396a904cb550de34eb333f1a184e123dadc9903b5e6dbca18a007b", size = 2441487, upload_time = "2025-06-06T00:46:16.286Z" }, - { url = "https://files.pythonhosted.org/packages/ad/aa/e7c4ac05162187c484bb121f50d8e037c13bf894ed5cf4e781e1cff68762/highspy-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a23949e4f44b6df0ed8c387a7c733d683a0fa66e3ff15d65719979ce2099ee99", size = 2302302, upload_time = "2025-06-06T00:46:18.819Z" }, - { url = "https://files.pythonhosted.org/packages/04/ce/fd2473bed635eb06d116f987767d5c5fe3c62b317fb1a788c31966d7fa0a/highspy-1.11.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:50dacf300ebe7c4dca92891c0bf61b694f2ca744207cf7d0d24f2a30ffb5608c", size = 3101885, upload_time = "2025-06-06T00:46:20.774Z" }, - { url = "https://files.pythonhosted.org/packages/6e/e1/bf174389656de5d302ed53dd5cdeb5f7e9ad84156ad2fc95d5a63ba023f2/highspy-1.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a782c242b4b047f86110787b0dafce9d77cc10f079adab1fd51c5331e5760127", size = 3647952, upload_time = "2025-06-06T00:46:22.847Z" }, - { url = "https://files.pythonhosted.org/packages/f3/f5/42f6f2ce99c5b9d7aa864ac3abeaf8a2b66da707821ab42b0a31ec2a0dc1/highspy-1.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:15b804387089a389e5f01b056a4b3ad74c7d1cf00ab00a0faaf3b4a582bb664c", size = 3309616, upload_time = "2025-06-06T00:46:24.888Z" }, - { url = "https://files.pythonhosted.org/packages/47/f5/cf13640ed65ea934b45e0c3e786497f4696f286faf45e8e62579a0f15462/highspy-1.11.0-cp312-cp312-win32.whl", hash = "sha256:8c33f68df8ab9666d379b0d64d04775c0a9db31882d4f87b3ec8cece0003b47d", size = 1710641, upload_time = "2025-06-06T00:46:26.462Z" }, - { url = "https://files.pythonhosted.org/packages/b7/2f/7acfea5b8d32b86bdec018f858bc195236b804a22a7cd3349da711498692/highspy-1.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0aed8c80d33e2fc2eb1def75dbd34c9fa463acb589d19a5ed5dcc0178ae7062", size = 1985767, upload_time = "2025-06-06T00:46:28.144Z" }, - { url = "https://files.pythonhosted.org/packages/96/84/3e899c5d95dc9d5400a308e0aaf4a5143f69016a4f46dd528ff7cd65d341/highspy-1.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f675cda73860c7c8a22546db3c80db985720baea84866b08a971cfa03cc7a156", size = 2232867, upload_time = "2025-06-06T00:46:29.651Z" }, - { url = "https://files.pythonhosted.org/packages/74/e2/2853095a74e9fc2c2081340647be8edba7122696534ebbaf159ceb53f9b4/highspy-1.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7babebfc01b7682c69c95e0520614ec9400e10cec1b84d3fb7cd48535c606244", size = 1908601, upload_time = "2025-06-06T00:46:31.232Z" }, - { url = "https://files.pythonhosted.org/packages/e6/36/3cabdd3ae8610912962bad96f4d4d6702255d6c01d050754e4050a9eaa4a/highspy-1.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39fb60d84d7a58e58f923ea6f0641e6978eb9049033b84de1a2add723e01cd3f", size = 2119726, upload_time = "2025-06-06T00:46:32.796Z" }, - { url = "https://files.pythonhosted.org/packages/a9/da/200d3f13ca9ad3f9fc11a1f3f76cc2734de42dae064510365d42caeb5ed4/highspy-1.11.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c2e7cf4d504287cd8910de322a726d58428af43bb985d6bae602bf84a7454b9", size = 2441449, upload_time = "2025-06-06T00:46:35.147Z" }, - { url = "https://files.pythonhosted.org/packages/6c/58/fc3775850dc668006039637a4f23f03a9c0eb533643c9d3a7370f9d63de2/highspy-1.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79682aa7855d94106ccbbb750082d156dcbb57dff9d489f167320ae0ce768867", size = 2302685, upload_time = "2025-06-06T00:46:36.791Z" }, - { url = "https://files.pythonhosted.org/packages/b5/16/e13326a9706c407d32e39ad14aa79a696c1eb49bb13d50fde5d96afb02b5/highspy-1.11.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:65232aa496fb27be56cc85b2c7c785fac866107c32ea00cc38ec474d6a9f6494", size = 3102306, upload_time = "2025-06-06T00:46:38.341Z" }, - { url = "https://files.pythonhosted.org/packages/0e/93/468e63b16d9bf123174e7f8f7b8bd5a2f96b18d7370a2cc35e6485871749/highspy-1.11.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f78f27e18275d3c7868dcd0314ea535ed361322e7f0817363872d75a4cc15abc", size = 3648234, upload_time = "2025-06-06T00:46:40.895Z" }, - { url = "https://files.pythonhosted.org/packages/dc/c5/37b849a69c9cbccf533a9a51e309a49e83d704f06bf45370c2e78ceb15d4/highspy-1.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6156a7d643268456427b6fe310626ad9ee9d908ff812cc64ee8bad7b9872ea98", size = 3309724, upload_time = "2025-06-06T00:46:43.083Z" }, - { url = "https://files.pythonhosted.org/packages/90/0f/89c579b2f718dc419fd76067a03ecb3c96e6919b7cffee1b9f5a2dfe4f56/highspy-1.11.0-cp313-cp313-win32.whl", hash = "sha256:e61facebb0127eb3661db79a11c7665e47229ec63d2b425996d04aeede26d46b", size = 1710676, upload_time = "2025-06-06T00:46:45.132Z" }, - { url = "https://files.pythonhosted.org/packages/20/ca/ba2af91f2418bee0d0e99df71dcd171ca863675de6a5260bbf06c120f084/highspy-1.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:ceac08be37f75dc0af95669a0cfb073e5db5f07ead05cdcc81fd4b4394708d53", size = 1985967, upload_time = "2025-06-06T00:46:46.767Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/b4/fc/aa1325331c320598ce60cc31060087681cd05123b6fb2a8a571e882b7f05/highspy-1.11.0.tar.gz", hash = "sha256:771e58c076122d207ff1b19759c21d3227f0da5b80dfd89a4145681524969cef", size = 1285415 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/ad/b54ad6740b950faab3b7f1465fbb5c740fc522928a8d9f01cac181f8f9a6/highspy-1.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:28fffd3e733833a7b2569df6761088046e8aca868ab328828711dbe15b102ad4", size = 2232856 }, + { url = "https://files.pythonhosted.org/packages/a3/0c/3921a207f47d52abc81a9d00d8f4d579b05b85670e23bc7140e39268490d/highspy-1.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:20a3adf8820a5f7a9cee6fc76df625e651ecfd8b5898af2a77042e79269ce0bc", size = 1908641 }, + { url = "https://files.pythonhosted.org/packages/0a/b6/ea7ea6c4c3f781b007fe928b2aefa40c49287b4689985d04c3b20d383475/highspy-1.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d4bc0a84cf613bb8565f9b5f610eb0655384162f509b5d86f9c888570275fdc", size = 2119574 }, + { url = "https://files.pythonhosted.org/packages/ff/0c/94f1ccb6606e8445a7a0c68d983e47f64899582c64fcea651f488eaaaea0/highspy-1.11.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:543789b75c396a904cb550de34eb333f1a184e123dadc9903b5e6dbca18a007b", size = 2441487 }, + { url = "https://files.pythonhosted.org/packages/ad/aa/e7c4ac05162187c484bb121f50d8e037c13bf894ed5cf4e781e1cff68762/highspy-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a23949e4f44b6df0ed8c387a7c733d683a0fa66e3ff15d65719979ce2099ee99", size = 2302302 }, + { url = "https://files.pythonhosted.org/packages/04/ce/fd2473bed635eb06d116f987767d5c5fe3c62b317fb1a788c31966d7fa0a/highspy-1.11.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:50dacf300ebe7c4dca92891c0bf61b694f2ca744207cf7d0d24f2a30ffb5608c", size = 3101885 }, + { url = "https://files.pythonhosted.org/packages/6e/e1/bf174389656de5d302ed53dd5cdeb5f7e9ad84156ad2fc95d5a63ba023f2/highspy-1.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a782c242b4b047f86110787b0dafce9d77cc10f079adab1fd51c5331e5760127", size = 3647952 }, + { url = "https://files.pythonhosted.org/packages/f3/f5/42f6f2ce99c5b9d7aa864ac3abeaf8a2b66da707821ab42b0a31ec2a0dc1/highspy-1.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:15b804387089a389e5f01b056a4b3ad74c7d1cf00ab00a0faaf3b4a582bb664c", size = 3309616 }, + { url = "https://files.pythonhosted.org/packages/47/f5/cf13640ed65ea934b45e0c3e786497f4696f286faf45e8e62579a0f15462/highspy-1.11.0-cp312-cp312-win32.whl", hash = "sha256:8c33f68df8ab9666d379b0d64d04775c0a9db31882d4f87b3ec8cece0003b47d", size = 1710641 }, + { url = "https://files.pythonhosted.org/packages/b7/2f/7acfea5b8d32b86bdec018f858bc195236b804a22a7cd3349da711498692/highspy-1.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0aed8c80d33e2fc2eb1def75dbd34c9fa463acb589d19a5ed5dcc0178ae7062", size = 1985767 }, + { url = "https://files.pythonhosted.org/packages/96/84/3e899c5d95dc9d5400a308e0aaf4a5143f69016a4f46dd528ff7cd65d341/highspy-1.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f675cda73860c7c8a22546db3c80db985720baea84866b08a971cfa03cc7a156", size = 2232867 }, + { url = "https://files.pythonhosted.org/packages/74/e2/2853095a74e9fc2c2081340647be8edba7122696534ebbaf159ceb53f9b4/highspy-1.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7babebfc01b7682c69c95e0520614ec9400e10cec1b84d3fb7cd48535c606244", size = 1908601 }, + { url = "https://files.pythonhosted.org/packages/e6/36/3cabdd3ae8610912962bad96f4d4d6702255d6c01d050754e4050a9eaa4a/highspy-1.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39fb60d84d7a58e58f923ea6f0641e6978eb9049033b84de1a2add723e01cd3f", size = 2119726 }, + { url = "https://files.pythonhosted.org/packages/a9/da/200d3f13ca9ad3f9fc11a1f3f76cc2734de42dae064510365d42caeb5ed4/highspy-1.11.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c2e7cf4d504287cd8910de322a726d58428af43bb985d6bae602bf84a7454b9", size = 2441449 }, + { url = "https://files.pythonhosted.org/packages/6c/58/fc3775850dc668006039637a4f23f03a9c0eb533643c9d3a7370f9d63de2/highspy-1.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79682aa7855d94106ccbbb750082d156dcbb57dff9d489f167320ae0ce768867", size = 2302685 }, + { url = "https://files.pythonhosted.org/packages/b5/16/e13326a9706c407d32e39ad14aa79a696c1eb49bb13d50fde5d96afb02b5/highspy-1.11.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:65232aa496fb27be56cc85b2c7c785fac866107c32ea00cc38ec474d6a9f6494", size = 3102306 }, + { url = "https://files.pythonhosted.org/packages/0e/93/468e63b16d9bf123174e7f8f7b8bd5a2f96b18d7370a2cc35e6485871749/highspy-1.11.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f78f27e18275d3c7868dcd0314ea535ed361322e7f0817363872d75a4cc15abc", size = 3648234 }, + { url = "https://files.pythonhosted.org/packages/dc/c5/37b849a69c9cbccf533a9a51e309a49e83d704f06bf45370c2e78ceb15d4/highspy-1.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6156a7d643268456427b6fe310626ad9ee9d908ff812cc64ee8bad7b9872ea98", size = 3309724 }, + { url = "https://files.pythonhosted.org/packages/90/0f/89c579b2f718dc419fd76067a03ecb3c96e6919b7cffee1b9f5a2dfe4f56/highspy-1.11.0-cp313-cp313-win32.whl", hash = "sha256:e61facebb0127eb3661db79a11c7665e47229ec63d2b425996d04aeede26d46b", size = 1710676 }, + { url = "https://files.pythonhosted.org/packages/20/ca/ba2af91f2418bee0d0e99df71dcd171ca863675de6a5260bbf06c120f084/highspy-1.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:ceac08be37f75dc0af95669a0cfb073e5db5f07ead05cdcc81fd4b4394708d53", size = 1985967 }, ] [[package]] @@ -678,75 +746,75 @@ name = "htmlmin2" version = "0.1.13" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/be/31/a76f4bfa885f93b8167cb4c85cf32b54d1f64384d0b897d45bc6d19b7b45/htmlmin2-0.1.13-py3-none-any.whl", hash = "sha256:75609f2a42e64f7ce57dbff28a39890363bde9e7e5885db633317efbdf8c79a2", size = 34486, upload_time = "2023-03-14T21:28:30.388Z" }, + { url = "https://files.pythonhosted.org/packages/be/31/a76f4bfa885f93b8167cb4c85cf32b54d1f64384d0b897d45bc6d19b7b45/htmlmin2-0.1.13-py3-none-any.whl", hash = "sha256:75609f2a42e64f7ce57dbff28a39890363bde9e7e5885db633317efbdf8c79a2", size = 34486 }, ] [[package]] name = "humanize" -version = "4.12.3" +version = "4.13.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/22/d1/bbc4d251187a43f69844f7fd8941426549bbe4723e8ff0a7441796b0789f/humanize-4.12.3.tar.gz", hash = "sha256:8430be3a615106fdfceb0b2c1b41c4c98c6b0fc5cc59663a5539b111dd325fb0", size = 80514, upload_time = "2025-04-30T11:51:07.98Z" } +sdist = { url = "https://files.pythonhosted.org/packages/98/1d/3062fcc89ee05a715c0b9bfe6490c00c576314f27ffee3a704122c6fd259/humanize-4.13.0.tar.gz", hash = "sha256:78f79e68f76f0b04d711c4e55d32bebef5be387148862cb1ef83d2b58e7935a0", size = 81884 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/1e/62a2ec3104394a2975a2629eec89276ede9dbe717092f6966fcf963e1bf0/humanize-4.12.3-py3-none-any.whl", hash = "sha256:2cbf6370af06568fa6d2da77c86edb7886f3160ecd19ee1ffef07979efc597f6", size = 128487, upload_time = "2025-04-30T11:51:06.468Z" }, + { url = "https://files.pythonhosted.org/packages/1e/c7/316e7ca04d26695ef0635dc81683d628350810eb8e9b2299fc08ba49f366/humanize-4.13.0-py3-none-any.whl", hash = "sha256:b810820b31891813b1673e8fec7f1ed3312061eab2f26e3fa192c393d11ed25f", size = 128869 }, ] [[package]] name = "identify" -version = "2.6.12" +version = "2.6.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/88/d193a27416618628a5eea64e3223acd800b40749a96ffb322a9b55a49ed1/identify-2.6.12.tar.gz", hash = "sha256:d8de45749f1efb108badef65ee8386f0f7bb19a7f26185f74de6367bffbaf0e6", size = 99254, upload_time = "2025-05-23T20:37:53.3Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/c4/62963f25a678f6a050fb0505a65e9e726996171e6dbe1547f79619eefb15/identify-2.6.14.tar.gz", hash = "sha256:663494103b4f717cb26921c52f8751363dc89db64364cd836a9bf1535f53cd6a", size = 99283 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/cd/18f8da995b658420625f7ef13f037be53ae04ec5ad33f9b718240dcfd48c/identify-2.6.12-py2.py3-none-any.whl", hash = "sha256:ad9672d5a72e0d2ff7c5c8809b62dfa60458626352fb0eb7b55e69bdc45334a2", size = 99145, upload_time = "2025-05-23T20:37:51.495Z" }, + { url = "https://files.pythonhosted.org/packages/e5/ae/2ad30f4652712c82f1c23423d79136fbce338932ad166d70c1efb86a5998/identify-2.6.14-py2.py3-none-any.whl", hash = "sha256:11a073da82212c6646b1f39bb20d4483bfb9543bd5566fec60053c4bb309bf2e", size = 99172 }, ] [[package]] name = "idna" version = "3.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload_time = "2024-09-15T18:07:39.745Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload_time = "2024-09-15T18:07:37.964Z" }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, ] [[package]] name = "ijson" version = "3.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a3/4f/1cfeada63f5fce87536651268ddf5cca79b8b4bbb457aee4e45777964a0a/ijson-3.4.0.tar.gz", hash = "sha256:5f74dcbad9d592c428d3ca3957f7115a42689ee7ee941458860900236ae9bb13", size = 65782, upload_time = "2025-05-08T02:37:20.135Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/ec/317ee5b2d13e50448833ead3aa906659a32b376191f6abc2a7c6112d2b27/ijson-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:956b148f88259a80a9027ffbe2d91705fae0c004fbfba3e5a24028fbe72311a9", size = 87212, upload_time = "2025-05-08T02:35:51.835Z" }, - { url = "https://files.pythonhosted.org/packages/f8/43/b06c96ced30cacecc5d518f89b0fd1c98c294a30ff88848b70ed7b7f72a1/ijson-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:06b89960f5c721106394c7fba5760b3f67c515b8eb7d80f612388f5eca2f4621", size = 59175, upload_time = "2025-05-08T02:35:52.988Z" }, - { url = "https://files.pythonhosted.org/packages/e9/df/b4aeafb7ecde463130840ee9be36130823ec94a00525049bf700883378b8/ijson-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a0bb591cf250dd7e9dfab69d634745a7f3272d31cfe879f9156e0a081fd97ee", size = 59011, upload_time = "2025-05-08T02:35:54.394Z" }, - { url = "https://files.pythonhosted.org/packages/e3/7c/a80b8e361641609507f62022089626d4b8067f0826f51e1c09e4ba86eba8/ijson-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e92de999977f4c6b660ffcf2b8d59604ccd531edcbfde05b642baf283e0de8", size = 146094, upload_time = "2025-05-08T02:35:55.601Z" }, - { url = "https://files.pythonhosted.org/packages/01/44/fa416347b9a802e3646c6ff377fc3278bd7d6106e17beb339514b6a3184e/ijson-3.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e9602157a5b869d44b6896e64f502c712a312fcde044c2e586fccb85d3e316e", size = 137903, upload_time = "2025-05-08T02:35:56.814Z" }, - { url = "https://files.pythonhosted.org/packages/24/c6/41a9ad4d42df50ff6e70fdce79b034f09b914802737ebbdc141153d8d791/ijson-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e83660edb931a425b7ff662eb49db1f10d30ca6d4d350e5630edbed098bc01", size = 148339, upload_time = "2025-05-08T02:35:58.595Z" }, - { url = "https://files.pythonhosted.org/packages/5f/6f/7d01efda415b8502dce67e067ed9e8a124f53e763002c02207e542e1a2f1/ijson-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:49bf8eac1c7b7913073865a859c215488461f7591b4fa6a33c14b51cb73659d0", size = 149383, upload_time = "2025-05-08T02:36:00.197Z" }, - { url = "https://files.pythonhosted.org/packages/95/6c/0d67024b9ecb57916c5e5ab0350251c9fe2f86dc9c8ca2b605c194bdad6a/ijson-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:160b09273cb42019f1811469508b0a057d19f26434d44752bde6f281da6d3f32", size = 141580, upload_time = "2025-05-08T02:36:01.998Z" }, - { url = "https://files.pythonhosted.org/packages/06/43/e10edcc1c6a3b619294de835e7678bfb3a1b8a75955f3689fd66a1e9e7b4/ijson-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2019ff4e6f354aa00c76c8591bd450899111c61f2354ad55cc127e2ce2492c44", size = 150280, upload_time = "2025-05-08T02:36:03.926Z" }, - { url = "https://files.pythonhosted.org/packages/07/84/1cbeee8e8190a1ebe6926569a92cf1fa80ddb380c129beb6f86559e1bb24/ijson-3.4.0-cp312-cp312-win32.whl", hash = "sha256:931c007bf6bb8330705429989b2deed6838c22b63358a330bf362b6e458ba0bf", size = 51512, upload_time = "2025-05-08T02:36:05.595Z" }, - { url = "https://files.pythonhosted.org/packages/66/13/530802bc391c95be6fe9f96e9aa427d94067e7c0b7da7a9092344dc44c4b/ijson-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:71523f2b64cb856a820223e94d23e88369f193017ecc789bb4de198cc9d349eb", size = 54081, upload_time = "2025-05-08T02:36:07.099Z" }, - { url = "https://files.pythonhosted.org/packages/77/b3/b1d2eb2745e5204ec7a25365a6deb7868576214feb5e109bce368fb692c9/ijson-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e8d96f88d75196a61c9d9443de2b72c2d4a7ba9456ff117b57ae3bba23a54256", size = 87216, upload_time = "2025-05-08T02:36:08.414Z" }, - { url = "https://files.pythonhosted.org/packages/b1/cd/cd6d340087617f8cc9bedbb21d974542fe2f160ed0126b8288d3499a469b/ijson-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c45906ce2c1d3b62f15645476fc3a6ca279549127f01662a39ca5ed334a00cf9", size = 59170, upload_time = "2025-05-08T02:36:09.604Z" }, - { url = "https://files.pythonhosted.org/packages/3e/4d/32d3a9903b488d3306e3c8288f6ee4217d2eea82728261db03a1045eb5d1/ijson-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4ab4bc2119b35c4363ea49f29563612237cae9413d2fbe54b223be098b97bc9e", size = 59013, upload_time = "2025-05-08T02:36:10.696Z" }, - { url = "https://files.pythonhosted.org/packages/d5/c8/db15465ab4b0b477cee5964c8bfc94bf8c45af8e27a23e1ad78d1926e587/ijson-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97b0a9b5a15e61dfb1f14921ea4e0dba39f3a650df6d8f444ddbc2b19b479ff1", size = 146564, upload_time = "2025-05-08T02:36:11.916Z" }, - { url = "https://files.pythonhosted.org/packages/c4/d8/0755545bc122473a9a434ab90e0f378780e603d75495b1ca3872de757873/ijson-3.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3047bb994dabedf11de11076ed1147a307924b6e5e2df6784fb2599c4ad8c60", size = 137917, upload_time = "2025-05-08T02:36:13.532Z" }, - { url = "https://files.pythonhosted.org/packages/d0/c6/aeb89c8939ebe3f534af26c8c88000c5e870dbb6ae33644c21a4531f87d2/ijson-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68c83161b052e9f5dc8191acbc862bb1e63f8a35344cb5cd0db1afd3afd487a6", size = 148897, upload_time = "2025-05-08T02:36:14.813Z" }, - { url = "https://files.pythonhosted.org/packages/be/0e/7ef6e9b372106f2682a4a32b3c65bf86bb471a1670e4dac242faee4a7d3f/ijson-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1eebd9b6c20eb1dffde0ae1f0fbb4aeacec2eb7b89adb5c7c0449fc9fd742760", size = 149711, upload_time = "2025-05-08T02:36:16.476Z" }, - { url = "https://files.pythonhosted.org/packages/d1/5d/9841c3ed75bcdabf19b3202de5f862a9c9c86ce5c7c9d95fa32347fdbf5f/ijson-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:13fb6d5c35192c541421f3ee81239d91fc15a8d8f26c869250f941f4b346a86c", size = 141691, upload_time = "2025-05-08T02:36:18.044Z" }, - { url = "https://files.pythonhosted.org/packages/d5/d2/ce74e17218dba292e9be10a44ed0c75439f7958cdd263adb0b5b92d012d5/ijson-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:28b7196ff7b37c4897c547a28fa4876919696739fc91c1f347651c9736877c69", size = 150738, upload_time = "2025-05-08T02:36:19.483Z" }, - { url = "https://files.pythonhosted.org/packages/4e/43/dcc480f94453b1075c9911d4755b823f3ace275761bb37b40139f22109ca/ijson-3.4.0-cp313-cp313-win32.whl", hash = "sha256:3c2691d2da42629522140f77b99587d6f5010440d58d36616f33bc7bdc830cc3", size = 51512, upload_time = "2025-05-08T02:36:20.99Z" }, - { url = "https://files.pythonhosted.org/packages/35/dd/d8c5f15efd85ba51e6e11451ebe23d779361a9ec0d192064c2a8c3cdfcb8/ijson-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:c4554718c275a044c47eb3874f78f2c939f300215d9031e785a6711cc51b83fc", size = 54074, upload_time = "2025-05-08T02:36:22.075Z" }, - { url = "https://files.pythonhosted.org/packages/79/73/24ad8cd106203419c4d22bed627e02e281d66b83e91bc206a371893d0486/ijson-3.4.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:915a65e3f3c0eee2ea937bc62aaedb6c14cc1e8f0bb9f3f4fb5a9e2bbfa4b480", size = 91694, upload_time = "2025-05-08T02:36:23.289Z" }, - { url = "https://files.pythonhosted.org/packages/17/2d/f7f680984bcb7324a46a4c2df3bd73cf70faef0acfeb85a3f811abdfd590/ijson-3.4.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:afbe9748707684b6c5adc295c4fdcf27765b300aec4d484e14a13dca4e5c0afa", size = 61390, upload_time = "2025-05-08T02:36:24.42Z" }, - { url = "https://files.pythonhosted.org/packages/09/a1/f3ca7bab86f95bdb82494739e71d271410dfefce4590785d511669127145/ijson-3.4.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d823f8f321b4d8d5fa020d0a84f089fec5d52b7c0762430476d9f8bf95bbc1a9", size = 61140, upload_time = "2025-05-08T02:36:26.708Z" }, - { url = "https://files.pythonhosted.org/packages/51/79/dd340df3d4fc7771c95df29997956b92ed0570fe7b616d1792fea9ad93f2/ijson-3.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0a2c54f3becf76881188beefd98b484b1d3bd005769a740d5b433b089fa23", size = 214739, upload_time = "2025-05-08T02:36:27.973Z" }, - { url = "https://files.pythonhosted.org/packages/59/f0/85380b7f51d1f5fb7065d76a7b623e02feca920cc678d329b2eccc0011e0/ijson-3.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ced19a83ab09afa16257a0b15bc1aa888dbc555cb754be09d375c7f8d41051f2", size = 198338, upload_time = "2025-05-08T02:36:29.496Z" }, - { url = "https://files.pythonhosted.org/packages/a5/cd/313264cf2ec42e0f01d198c49deb7b6fadeb793b3685e20e738eb6b3fa13/ijson-3.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8100f9885eff1f38d35cef80ef759a1bbf5fc946349afa681bd7d0e681b7f1a0", size = 207515, upload_time = "2025-05-08T02:36:30.981Z" }, - { url = "https://files.pythonhosted.org/packages/12/94/bf14457aa87ea32641f2db577c9188ef4e4ae373478afef422b31fc7f309/ijson-3.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d7bcc3f7f21b0f703031ecd15209b1284ea51b2a329d66074b5261de3916c1eb", size = 210081, upload_time = "2025-05-08T02:36:32.403Z" }, - { url = "https://files.pythonhosted.org/packages/7d/b4/eaee39e290e40e52d665db9bd1492cfdce86bd1e47948e0440db209c6023/ijson-3.4.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2dcb190227b09dd171bdcbfe4720fddd574933c66314818dfb3960c8a6246a77", size = 199253, upload_time = "2025-05-08T02:36:33.861Z" }, - { url = "https://files.pythonhosted.org/packages/c5/9c/e09c7b9ac720a703ab115b221b819f149ed54c974edfff623c1e925e57da/ijson-3.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:eda4cfb1d49c6073a901735aaa62e39cb7ab47f3ad7bb184862562f776f1fa8a", size = 203816, upload_time = "2025-05-08T02:36:35.348Z" }, - { url = "https://files.pythonhosted.org/packages/7c/14/acd304f412e32d16a2c12182b9d78206bb0ae35354d35664f45db05c1b3b/ijson-3.4.0-cp313-cp313t-win32.whl", hash = "sha256:0772638efa1f3b72b51736833404f1cbd2f5beeb9c1a3d392e7d385b9160cba7", size = 53760, upload_time = "2025-05-08T02:36:36.608Z" }, - { url = "https://files.pythonhosted.org/packages/2f/24/93dd0a467191590a5ed1fc2b35842bca9d09900d001e00b0b497c0208ef6/ijson-3.4.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3d8a0d67f36e4fb97c61a724456ef0791504b16ce6f74917a31c2e92309bbeb9", size = 56948, upload_time = "2025-05-08T02:36:37.849Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/a3/4f/1cfeada63f5fce87536651268ddf5cca79b8b4bbb457aee4e45777964a0a/ijson-3.4.0.tar.gz", hash = "sha256:5f74dcbad9d592c428d3ca3957f7115a42689ee7ee941458860900236ae9bb13", size = 65782 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ec/317ee5b2d13e50448833ead3aa906659a32b376191f6abc2a7c6112d2b27/ijson-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:956b148f88259a80a9027ffbe2d91705fae0c004fbfba3e5a24028fbe72311a9", size = 87212 }, + { url = "https://files.pythonhosted.org/packages/f8/43/b06c96ced30cacecc5d518f89b0fd1c98c294a30ff88848b70ed7b7f72a1/ijson-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:06b89960f5c721106394c7fba5760b3f67c515b8eb7d80f612388f5eca2f4621", size = 59175 }, + { url = "https://files.pythonhosted.org/packages/e9/df/b4aeafb7ecde463130840ee9be36130823ec94a00525049bf700883378b8/ijson-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a0bb591cf250dd7e9dfab69d634745a7f3272d31cfe879f9156e0a081fd97ee", size = 59011 }, + { url = "https://files.pythonhosted.org/packages/e3/7c/a80b8e361641609507f62022089626d4b8067f0826f51e1c09e4ba86eba8/ijson-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e92de999977f4c6b660ffcf2b8d59604ccd531edcbfde05b642baf283e0de8", size = 146094 }, + { url = "https://files.pythonhosted.org/packages/01/44/fa416347b9a802e3646c6ff377fc3278bd7d6106e17beb339514b6a3184e/ijson-3.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e9602157a5b869d44b6896e64f502c712a312fcde044c2e586fccb85d3e316e", size = 137903 }, + { url = "https://files.pythonhosted.org/packages/24/c6/41a9ad4d42df50ff6e70fdce79b034f09b914802737ebbdc141153d8d791/ijson-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e83660edb931a425b7ff662eb49db1f10d30ca6d4d350e5630edbed098bc01", size = 148339 }, + { url = "https://files.pythonhosted.org/packages/5f/6f/7d01efda415b8502dce67e067ed9e8a124f53e763002c02207e542e1a2f1/ijson-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:49bf8eac1c7b7913073865a859c215488461f7591b4fa6a33c14b51cb73659d0", size = 149383 }, + { url = "https://files.pythonhosted.org/packages/95/6c/0d67024b9ecb57916c5e5ab0350251c9fe2f86dc9c8ca2b605c194bdad6a/ijson-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:160b09273cb42019f1811469508b0a057d19f26434d44752bde6f281da6d3f32", size = 141580 }, + { url = "https://files.pythonhosted.org/packages/06/43/e10edcc1c6a3b619294de835e7678bfb3a1b8a75955f3689fd66a1e9e7b4/ijson-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2019ff4e6f354aa00c76c8591bd450899111c61f2354ad55cc127e2ce2492c44", size = 150280 }, + { url = "https://files.pythonhosted.org/packages/07/84/1cbeee8e8190a1ebe6926569a92cf1fa80ddb380c129beb6f86559e1bb24/ijson-3.4.0-cp312-cp312-win32.whl", hash = "sha256:931c007bf6bb8330705429989b2deed6838c22b63358a330bf362b6e458ba0bf", size = 51512 }, + { url = "https://files.pythonhosted.org/packages/66/13/530802bc391c95be6fe9f96e9aa427d94067e7c0b7da7a9092344dc44c4b/ijson-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:71523f2b64cb856a820223e94d23e88369f193017ecc789bb4de198cc9d349eb", size = 54081 }, + { url = "https://files.pythonhosted.org/packages/77/b3/b1d2eb2745e5204ec7a25365a6deb7868576214feb5e109bce368fb692c9/ijson-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e8d96f88d75196a61c9d9443de2b72c2d4a7ba9456ff117b57ae3bba23a54256", size = 87216 }, + { url = "https://files.pythonhosted.org/packages/b1/cd/cd6d340087617f8cc9bedbb21d974542fe2f160ed0126b8288d3499a469b/ijson-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c45906ce2c1d3b62f15645476fc3a6ca279549127f01662a39ca5ed334a00cf9", size = 59170 }, + { url = "https://files.pythonhosted.org/packages/3e/4d/32d3a9903b488d3306e3c8288f6ee4217d2eea82728261db03a1045eb5d1/ijson-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4ab4bc2119b35c4363ea49f29563612237cae9413d2fbe54b223be098b97bc9e", size = 59013 }, + { url = "https://files.pythonhosted.org/packages/d5/c8/db15465ab4b0b477cee5964c8bfc94bf8c45af8e27a23e1ad78d1926e587/ijson-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97b0a9b5a15e61dfb1f14921ea4e0dba39f3a650df6d8f444ddbc2b19b479ff1", size = 146564 }, + { url = "https://files.pythonhosted.org/packages/c4/d8/0755545bc122473a9a434ab90e0f378780e603d75495b1ca3872de757873/ijson-3.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3047bb994dabedf11de11076ed1147a307924b6e5e2df6784fb2599c4ad8c60", size = 137917 }, + { url = "https://files.pythonhosted.org/packages/d0/c6/aeb89c8939ebe3f534af26c8c88000c5e870dbb6ae33644c21a4531f87d2/ijson-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68c83161b052e9f5dc8191acbc862bb1e63f8a35344cb5cd0db1afd3afd487a6", size = 148897 }, + { url = "https://files.pythonhosted.org/packages/be/0e/7ef6e9b372106f2682a4a32b3c65bf86bb471a1670e4dac242faee4a7d3f/ijson-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1eebd9b6c20eb1dffde0ae1f0fbb4aeacec2eb7b89adb5c7c0449fc9fd742760", size = 149711 }, + { url = "https://files.pythonhosted.org/packages/d1/5d/9841c3ed75bcdabf19b3202de5f862a9c9c86ce5c7c9d95fa32347fdbf5f/ijson-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:13fb6d5c35192c541421f3ee81239d91fc15a8d8f26c869250f941f4b346a86c", size = 141691 }, + { url = "https://files.pythonhosted.org/packages/d5/d2/ce74e17218dba292e9be10a44ed0c75439f7958cdd263adb0b5b92d012d5/ijson-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:28b7196ff7b37c4897c547a28fa4876919696739fc91c1f347651c9736877c69", size = 150738 }, + { url = "https://files.pythonhosted.org/packages/4e/43/dcc480f94453b1075c9911d4755b823f3ace275761bb37b40139f22109ca/ijson-3.4.0-cp313-cp313-win32.whl", hash = "sha256:3c2691d2da42629522140f77b99587d6f5010440d58d36616f33bc7bdc830cc3", size = 51512 }, + { url = "https://files.pythonhosted.org/packages/35/dd/d8c5f15efd85ba51e6e11451ebe23d779361a9ec0d192064c2a8c3cdfcb8/ijson-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:c4554718c275a044c47eb3874f78f2c939f300215d9031e785a6711cc51b83fc", size = 54074 }, + { url = "https://files.pythonhosted.org/packages/79/73/24ad8cd106203419c4d22bed627e02e281d66b83e91bc206a371893d0486/ijson-3.4.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:915a65e3f3c0eee2ea937bc62aaedb6c14cc1e8f0bb9f3f4fb5a9e2bbfa4b480", size = 91694 }, + { url = "https://files.pythonhosted.org/packages/17/2d/f7f680984bcb7324a46a4c2df3bd73cf70faef0acfeb85a3f811abdfd590/ijson-3.4.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:afbe9748707684b6c5adc295c4fdcf27765b300aec4d484e14a13dca4e5c0afa", size = 61390 }, + { url = "https://files.pythonhosted.org/packages/09/a1/f3ca7bab86f95bdb82494739e71d271410dfefce4590785d511669127145/ijson-3.4.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d823f8f321b4d8d5fa020d0a84f089fec5d52b7c0762430476d9f8bf95bbc1a9", size = 61140 }, + { url = "https://files.pythonhosted.org/packages/51/79/dd340df3d4fc7771c95df29997956b92ed0570fe7b616d1792fea9ad93f2/ijson-3.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0a2c54f3becf76881188beefd98b484b1d3bd005769a740d5b433b089fa23", size = 214739 }, + { url = "https://files.pythonhosted.org/packages/59/f0/85380b7f51d1f5fb7065d76a7b623e02feca920cc678d329b2eccc0011e0/ijson-3.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ced19a83ab09afa16257a0b15bc1aa888dbc555cb754be09d375c7f8d41051f2", size = 198338 }, + { url = "https://files.pythonhosted.org/packages/a5/cd/313264cf2ec42e0f01d198c49deb7b6fadeb793b3685e20e738eb6b3fa13/ijson-3.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8100f9885eff1f38d35cef80ef759a1bbf5fc946349afa681bd7d0e681b7f1a0", size = 207515 }, + { url = "https://files.pythonhosted.org/packages/12/94/bf14457aa87ea32641f2db577c9188ef4e4ae373478afef422b31fc7f309/ijson-3.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d7bcc3f7f21b0f703031ecd15209b1284ea51b2a329d66074b5261de3916c1eb", size = 210081 }, + { url = "https://files.pythonhosted.org/packages/7d/b4/eaee39e290e40e52d665db9bd1492cfdce86bd1e47948e0440db209c6023/ijson-3.4.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2dcb190227b09dd171bdcbfe4720fddd574933c66314818dfb3960c8a6246a77", size = 199253 }, + { url = "https://files.pythonhosted.org/packages/c5/9c/e09c7b9ac720a703ab115b221b819f149ed54c974edfff623c1e925e57da/ijson-3.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:eda4cfb1d49c6073a901735aaa62e39cb7ab47f3ad7bb184862562f776f1fa8a", size = 203816 }, + { url = "https://files.pythonhosted.org/packages/7c/14/acd304f412e32d16a2c12182b9d78206bb0ae35354d35664f45db05c1b3b/ijson-3.4.0-cp313-cp313t-win32.whl", hash = "sha256:0772638efa1f3b72b51736833404f1cbd2f5beeb9c1a3d392e7d385b9160cba7", size = 53760 }, + { url = "https://files.pythonhosted.org/packages/2f/24/93dd0a467191590a5ed1fc2b35842bca9d09900d001e00b0b497c0208ef6/ijson-3.4.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3d8a0d67f36e4fb97c61a724456ef0791504b16ce6f74917a31c2e92309bbeb9", size = 56948 }, ] [[package]] @@ -759,23 +827,23 @@ dependencies = [ { name = "pandas" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/af/45/24521d229aec5c058d998510794567788bc7b1b764dfaa02fb8e0aeda4b7/imf_reader-1.3.0.tar.gz", hash = "sha256:3f3130dd793a112fdd5913a7c7b733847a5a07fd70dee14d57624ae4e021a141", size = 12990, upload_time = "2025-02-06T09:16:10.723Z" } +sdist = { url = "https://files.pythonhosted.org/packages/af/45/24521d229aec5c058d998510794567788bc7b1b764dfaa02fb8e0aeda4b7/imf_reader-1.3.0.tar.gz", hash = "sha256:3f3130dd793a112fdd5913a7c7b733847a5a07fd70dee14d57624ae4e021a141", size = 12990 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/5b/3a063116950f2aa2b450120e78162bb5b87098dde3b75ae90210c6f2c099/imf_reader-1.3.0-py3-none-any.whl", hash = "sha256:3515c6644dfef44d5fda89f5bb3786b4f83da20f49184911f0df2386782106f1", size = 16520, upload_time = "2025-02-06T09:16:09.042Z" }, + { url = "https://files.pythonhosted.org/packages/fd/5b/3a063116950f2aa2b450120e78162bb5b87098dde3b75ae90210c6f2c099/imf_reader-1.3.0-py3-none-any.whl", hash = "sha256:3515c6644dfef44d5fda89f5bb3786b4f83da20f49184911f0df2386782106f1", size = 16520 }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload_time = "2025-03-19T20:09:59.721Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload_time = "2025-03-19T20:10:01.071Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, ] [[package]] name = "ipykernel" -version = "6.29.5" +version = "6.30.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "appnope", marker = "sys_platform == 'darwin'" }, @@ -792,14 +860,14 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367, upload_time = "2024-07-01T14:07:22.543Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/76/11082e338e0daadc89c8ff866185de11daf67d181901038f9e139d109761/ipykernel-6.30.1.tar.gz", hash = "sha256:6abb270161896402e76b91394fcdce5d1be5d45f456671e5080572f8505be39b", size = 166260 } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173, upload_time = "2024-07-01T14:07:19.603Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c7/b445faca8deb954fe536abebff4ece5b097b923de482b26e78448c89d1dd/ipykernel-6.30.1-py3-none-any.whl", hash = "sha256:aa6b9fb93dca949069d8b85b6c79b2518e32ac583ae9c7d37c51d119e18b3fb4", size = 117484 }, ] [[package]] name = "ipython" -version = "9.4.0" +version = "9.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -813,9 +881,9 @@ dependencies = [ { name = "stack-data" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/80/406f9e3bde1c1fd9bf5a0be9d090f8ae623e401b7670d8f6fdf2ab679891/ipython-9.4.0.tar.gz", hash = "sha256:c033c6d4e7914c3d9768aabe76bbe87ba1dc66a92a05db6bfa1125d81f2ee270", size = 4385338, upload_time = "2025-07-01T11:11:30.606Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6e/71/a86262bf5a68bf211bcc71fe302af7e05f18a2852fdc610a854d20d085e6/ipython-9.5.0.tar.gz", hash = "sha256:129c44b941fe6d9b82d36fc7a7c18127ddb1d6f02f78f867f402e2e3adde3113", size = 4389137 } wheels = [ - { url = "https://files.pythonhosted.org/packages/63/f8/0031ee2b906a15a33d6bfc12dd09c3dfa966b3cb5b284ecfb7549e6ac3c4/ipython-9.4.0-py3-none-any.whl", hash = "sha256:25850f025a446d9b359e8d296ba175a36aedd32e83ca9b5060430fe16801f066", size = 611021, upload_time = "2025-07-01T11:11:27.85Z" }, + { url = "https://files.pythonhosted.org/packages/08/2a/5628a99d04acb2d2f2e749cdf4ea571d2575e898df0528a090948018b726/ipython-9.5.0-py3-none-any.whl", hash = "sha256:88369ffa1d5817d609120daa523a6da06d02518e582347c29f8451732a9c5e72", size = 612426 }, ] [[package]] @@ -825,18 +893,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload_time = "2025-01-17T11:24:34.505Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload_time = "2025-01-17T11:24:33.271Z" }, + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 }, ] [[package]] name = "isodate" version = "0.7.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload_time = "2024-10-08T23:04:11.5Z" } +sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705 } wheels = [ - { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload_time = "2024-10-08T23:04:09.501Z" }, + { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320 }, ] [[package]] @@ -846,9 +914,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "parso" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload_time = "2024-11-11T01:41:42.873Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload_time = "2024-11-11T01:41:40.175Z" }, + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 }, ] [[package]] @@ -858,25 +926,25 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload_time = "2025-03-05T20:05:02.478Z" } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload_time = "2025-03-05T20:05:00.369Z" }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, ] [[package]] name = "joblib" -version = "1.5.1" +version = "1.5.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475, upload_time = "2025-05-23T12:04:37.097Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/5d/447af5ea094b9e4c4054f82e223ada074c552335b9b4b2d14bd9b35a67c4/joblib-1.5.2.tar.gz", hash = "sha256:3faa5c39054b2f03ca547da9b2f52fde67c06240c31853f306aea97f13647b55", size = 331077 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746, upload_time = "2025-05-23T12:04:35.124Z" }, + { url = "https://files.pythonhosted.org/packages/1e/e8/685f47e0d754320684db4425a0967f7d3fa70126bffd76110b7009a0090f/joblib-1.5.2-py3-none-any.whl", hash = "sha256:4e1f0bdbb987e6d843c70cf43714cb276623def372df3c22fe5266b2670bc241", size = 308396 }, ] [[package]] name = "jsmin" version = "3.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5e/73/e01e4c5e11ad0494f4407a3f623ad4d87714909f50b17a06ed121034ff6e/jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc", size = 13925, upload_time = "2022-01-16T20:35:59.13Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/73/e01e4c5e11ad0494f4407a3f623ad4d87714909f50b17a06ed121034ff6e/jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc", size = 13925 } [[package]] name = "jsonlines" @@ -885,9 +953,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/35/87/bcda8e46c88d0e34cad2f09ee2d0c7f5957bccdb9791b0b934ec84d84be4/jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74", size = 11359, upload_time = "2023-09-01T12:34:44.187Z" } +sdist = { url = "https://files.pythonhosted.org/packages/35/87/bcda8e46c88d0e34cad2f09ee2d0c7f5957bccdb9791b0b934ec84d84be4/jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74", size = 11359 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/62/d9ba6323b9202dd2fe166beab8a86d29465c41a0288cbe229fac60c1ab8d/jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55", size = 8701, upload_time = "2023-09-01T12:34:42.563Z" }, + { url = "https://files.pythonhosted.org/packages/f8/62/d9ba6323b9202dd2fe166beab8a86d29465c41a0288cbe229fac60c1ab8d/jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55", size = 8701 }, ] [[package]] @@ -897,14 +965,14 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ply" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838, upload_time = "2024-10-11T15:41:42.404Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838 } wheels = [ - { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105, upload_time = "2024-11-20T17:58:30.418Z" }, + { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105 }, ] [[package]] name = "jsonschema" -version = "4.24.0" +version = "4.25.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -912,21 +980,21 @@ dependencies = [ { name = "referencing" }, { name = "rpds-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/d3/1cf5326b923a53515d8f3a2cd442e6d7e94fcc444716e879ea70a0ce3177/jsonschema-4.24.0.tar.gz", hash = "sha256:0b4e8069eb12aedfa881333004bccaec24ecef5a8a6a4b6df142b2cc9599d196", size = 353480, upload_time = "2025-05-26T18:48:10.459Z" } +sdist = { url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85", size = 357342 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a2/3d/023389198f69c722d039351050738d6755376c8fd343e91dc493ea485905/jsonschema-4.24.0-py3-none-any.whl", hash = "sha256:a462455f19f5faf404a7902952b6f0e3ce868f3ee09a359b05eca6673bd8412d", size = 88709, upload_time = "2025-05-26T18:48:08.417Z" }, + { url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63", size = 90040 }, ] [[package]] name = "jsonschema-specifications" -version = "2025.4.1" +version = "2025.9.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "referencing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload_time = "2025-04-23T12:34:07.418Z" } +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855 } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload_time = "2025-04-23T12:34:05.422Z" }, + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437 }, ] [[package]] @@ -940,9 +1008,9 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload_time = "2024-09-17T10:44:17.613Z" } +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019 } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload_time = "2024-09-17T10:44:15.218Z" }, + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105 }, ] [[package]] @@ -954,23 +1022,23 @@ dependencies = [ { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload_time = "2025-05-27T07:38:16.655Z" } +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload_time = "2025-05-27T07:38:15.137Z" }, + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880 }, ] [[package]] name = "jupyterlab-pygments" version = "0.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload_time = "2023-11-23T09:26:37.44Z" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload_time = "2023-11-23T09:26:34.325Z" }, + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884 }, ] [[package]] name = "jupytext" -version = "1.17.2" +version = "1.17.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, @@ -979,9 +1047,9 @@ dependencies = [ { name = "packaging" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/30/ce/0bd5290ca4978777154e2683413dca761781aacf57f7dc0146f5210df8b1/jupytext-1.17.2.tar.gz", hash = "sha256:772d92898ac1f2ded69106f897b34af48ce4a85c985fa043a378ff5a65455f02", size = 3748577, upload_time = "2025-06-01T21:31:48.231Z" } +sdist = { url = "https://files.pythonhosted.org/packages/15/14/41faf71e168fcc6c48268f0fc67ba0d6acf6ee4e2c5c785c2bccb967c29d/jupytext-1.17.3.tar.gz", hash = "sha256:8b6dae76d63c95cad47b493c38f0d9c74491fb621dcd0980abfcac4c8f168679", size = 3753151 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/f1/82ea8e783433707cafd9790099a2d19f113c22f32a31c8bb5abdc7a61dbb/jupytext-1.17.2-py3-none-any.whl", hash = "sha256:4f85dc43bb6a24b75491c5c434001ad5ef563932f68f15dd3e1c8ce12a4a426b", size = 164401, upload_time = "2025-06-01T21:31:46.319Z" }, + { url = "https://files.pythonhosted.org/packages/36/86/751ec86adb66104d15e650b704f89dddd64ba29283178b9651b9bc84b624/jupytext-1.17.3-py3-none-any.whl", hash = "sha256:09b0a94cd904416e823a5ba9f41bd181031215b6fc682d2b5c18e68354feb17c", size = 166548 }, ] [[package]] @@ -1000,7 +1068,7 @@ dependencies = [ { name = "wheel" }, { name = "xlrd3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/ad/c1dafb7c59e685692a2eeafce83245b7c5f46e05881fdb77a0cbb7c19c74/libhxl-5.2.2.tar.gz", hash = "sha256:3a74d9f23561bfcefd20e5229c574bc68dfc114fdb6ba1ba684d9e9d7ea52483", size = 127736, upload_time = "2024-10-25T09:19:11.202Z" } +sdist = { url = "https://files.pythonhosted.org/packages/63/ad/c1dafb7c59e685692a2eeafce83245b7c5f46e05881fdb77a0cbb7c19c74/libhxl-5.2.2.tar.gz", hash = "sha256:3a74d9f23561bfcefd20e5229c574bc68dfc114fdb6ba1ba684d9e9d7ea52483", size = 127736 } [[package]] name = "license-expression" @@ -1009,9 +1077,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "boolean-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/40/71/d89bb0e71b1415453980fd32315f2a037aad9f7f70f695c7cec7035feb13/license_expression-30.4.4.tar.gz", hash = "sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd", size = 186402, upload_time = "2025-07-22T11:13:32.17Z" } +sdist = { url = "https://files.pythonhosted.org/packages/40/71/d89bb0e71b1415453980fd32315f2a037aad9f7f70f695c7cec7035feb13/license_expression-30.4.4.tar.gz", hash = "sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd", size = 186402 } wheels = [ - { url = "https://files.pythonhosted.org/packages/af/40/791891d4c0c4dab4c5e187c17261cedc26285fd41541577f900470a45a4d/license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4", size = 120615, upload_time = "2025-07-22T11:13:31.217Z" }, + { url = "https://files.pythonhosted.org/packages/af/40/791891d4c0c4dab4c5e187c17261cedc26285fd41541577f900470a45a4d/license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4", size = 120615 }, ] [[package]] @@ -1022,139 +1090,157 @@ dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "win32-setctime", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559, upload_time = "2024-12-06T11:20:56.608Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595, upload_time = "2024-12-06T11:20:54.538Z" }, + { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595 }, ] [[package]] name = "lxml" -version = "6.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8f/bd/f9d01fd4132d81c6f43ab01983caea69ec9614b913c290a26738431a015d/lxml-6.0.1.tar.gz", hash = "sha256:2b3a882ebf27dd026df3801a87cf49ff791336e0f94b0fad195db77e01240690", size = 4070214, upload_time = "2025-08-22T10:37:53.525Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b0/a9/82b244c8198fcdf709532e39a1751943a36b3e800b420adc739d751e0299/lxml-6.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c03ac546adaabbe0b8e4a15d9ad815a281afc8d36249c246aecf1aaad7d6f200", size = 8422788, upload_time = "2025-08-22T10:32:56.612Z" }, - { url = "https://files.pythonhosted.org/packages/c9/8d/1ed2bc20281b0e7ed3e6c12b0a16e64ae2065d99be075be119ba88486e6d/lxml-6.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33b862c7e3bbeb4ba2c96f3a039f925c640eeba9087a4dc7a572ec0f19d89392", size = 4593547, upload_time = "2025-08-22T10:32:59.016Z" }, - { url = "https://files.pythonhosted.org/packages/76/53/d7fd3af95b72a3493bf7fbe842a01e339d8f41567805cecfecd5c71aa5ee/lxml-6.0.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7a3ec1373f7d3f519de595032d4dcafae396c29407cfd5073f42d267ba32440d", size = 4948101, upload_time = "2025-08-22T10:33:00.765Z" }, - { url = "https://files.pythonhosted.org/packages/9d/51/4e57cba4d55273c400fb63aefa2f0d08d15eac021432571a7eeefee67bed/lxml-6.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:03b12214fb1608f4cffa181ec3d046c72f7e77c345d06222144744c122ded870", size = 5108090, upload_time = "2025-08-22T10:33:03.108Z" }, - { url = "https://files.pythonhosted.org/packages/f6/6e/5f290bc26fcc642bc32942e903e833472271614e24d64ad28aaec09d5dae/lxml-6.0.1-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:207ae0d5f0f03b30f95e649a6fa22aa73f5825667fee9c7ec6854d30e19f2ed8", size = 5021791, upload_time = "2025-08-22T10:33:06.972Z" }, - { url = "https://files.pythonhosted.org/packages/13/d4/2e7551a86992ece4f9a0f6eebd4fb7e312d30f1e372760e2109e721d4ce6/lxml-6.0.1-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:32297b09ed4b17f7b3f448de87a92fb31bb8747496623483788e9f27c98c0f00", size = 5358861, upload_time = "2025-08-22T10:33:08.967Z" }, - { url = "https://files.pythonhosted.org/packages/8a/5f/cb49d727fc388bf5fd37247209bab0da11697ddc5e976ccac4826599939e/lxml-6.0.1-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:7e18224ea241b657a157c85e9cac82c2b113ec90876e01e1f127312006233756", size = 5652569, upload_time = "2025-08-22T10:33:10.815Z" }, - { url = "https://files.pythonhosted.org/packages/ca/b8/66c1ef8c87ad0f958b0a23998851e610607c74849e75e83955d5641272e6/lxml-6.0.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a07a994d3c46cd4020c1ea566345cf6815af205b1e948213a4f0f1d392182072", size = 5252262, upload_time = "2025-08-22T10:33:12.673Z" }, - { url = "https://files.pythonhosted.org/packages/1a/ef/131d3d6b9590e64fdbb932fbc576b81fcc686289da19c7cb796257310e82/lxml-6.0.1-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:2287fadaa12418a813b05095485c286c47ea58155930cfbd98c590d25770e225", size = 4710309, upload_time = "2025-08-22T10:33:14.952Z" }, - { url = "https://files.pythonhosted.org/packages/bc/3f/07f48ae422dce44902309aa7ed386c35310929dc592439c403ec16ef9137/lxml-6.0.1-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b4e597efca032ed99f418bd21314745522ab9fa95af33370dcee5533f7f70136", size = 5265786, upload_time = "2025-08-22T10:33:16.721Z" }, - { url = "https://files.pythonhosted.org/packages/11/c7/125315d7b14ab20d9155e8316f7d287a4956098f787c22d47560b74886c4/lxml-6.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9696d491f156226decdd95d9651c6786d43701e49f32bf23715c975539aa2b3b", size = 5062272, upload_time = "2025-08-22T10:33:18.478Z" }, - { url = "https://files.pythonhosted.org/packages/8b/c3/51143c3a5fc5168a7c3ee626418468ff20d30f5a59597e7b156c1e61fba8/lxml-6.0.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:e4e3cd3585f3c6f87cdea44cda68e692cc42a012f0131d25957ba4ce755241a7", size = 4786955, upload_time = "2025-08-22T10:33:20.34Z" }, - { url = "https://files.pythonhosted.org/packages/11/86/73102370a420ec4529647b31c4a8ce8c740c77af3a5fae7a7643212d6f6e/lxml-6.0.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:45cbc92f9d22c28cd3b97f8d07fcefa42e569fbd587dfdac76852b16a4924277", size = 5673557, upload_time = "2025-08-22T10:33:22.282Z" }, - { url = "https://files.pythonhosted.org/packages/d7/2d/aad90afaec51029aef26ef773b8fd74a9e8706e5e2f46a57acd11a421c02/lxml-6.0.1-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:f8c9bcfd2e12299a442fba94459adf0b0d001dbc68f1594439bfa10ad1ecb74b", size = 5254211, upload_time = "2025-08-22T10:33:24.15Z" }, - { url = "https://files.pythonhosted.org/packages/63/01/c9e42c8c2d8b41f4bdefa42ab05448852e439045f112903dd901b8fbea4d/lxml-6.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1e9dc2b9f1586e7cd77753eae81f8d76220eed9b768f337dc83a3f675f2f0cf9", size = 5275817, upload_time = "2025-08-22T10:33:26.007Z" }, - { url = "https://files.pythonhosted.org/packages/bc/1f/962ea2696759abe331c3b0e838bb17e92224f39c638c2068bf0d8345e913/lxml-6.0.1-cp312-cp312-win32.whl", hash = "sha256:987ad5c3941c64031f59c226167f55a04d1272e76b241bfafc968bdb778e07fb", size = 3610889, upload_time = "2025-08-22T10:33:28.169Z" }, - { url = "https://files.pythonhosted.org/packages/41/e2/22c86a990b51b44442b75c43ecb2f77b8daba8c4ba63696921966eac7022/lxml-6.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:abb05a45394fd76bf4a60c1b7bec0e6d4e8dfc569fc0e0b1f634cd983a006ddc", size = 4010925, upload_time = "2025-08-22T10:33:29.874Z" }, - { url = "https://files.pythonhosted.org/packages/b2/21/dc0c73325e5eb94ef9c9d60dbb5dcdcb2e7114901ea9509735614a74e75a/lxml-6.0.1-cp312-cp312-win_arm64.whl", hash = "sha256:c4be29bce35020d8579d60aa0a4e95effd66fcfce31c46ffddf7e5422f73a299", size = 3671922, upload_time = "2025-08-22T10:33:31.535Z" }, - { url = "https://files.pythonhosted.org/packages/43/c4/cd757eeec4548e6652eff50b944079d18ce5f8182d2b2cf514e125e8fbcb/lxml-6.0.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:485eda5d81bb7358db96a83546949c5fe7474bec6c68ef3fa1fb61a584b00eea", size = 8405139, upload_time = "2025-08-22T10:33:34.09Z" }, - { url = "https://files.pythonhosted.org/packages/ff/99/0290bb86a7403893f5e9658490c705fcea103b9191f2039752b071b4ef07/lxml-6.0.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:d12160adea318ce3d118f0b4fbdff7d1225c75fb7749429541b4d217b85c3f76", size = 4585954, upload_time = "2025-08-22T10:33:36.294Z" }, - { url = "https://files.pythonhosted.org/packages/88/a7/4bb54dd1e626342a0f7df6ec6ca44fdd5d0e100ace53acc00e9a689ead04/lxml-6.0.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48c8d335d8ab72f9265e7ba598ae5105a8272437403f4032107dbcb96d3f0b29", size = 4944052, upload_time = "2025-08-22T10:33:38.19Z" }, - { url = "https://files.pythonhosted.org/packages/71/8d/20f51cd07a7cbef6214675a8a5c62b2559a36d9303fe511645108887c458/lxml-6.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:405e7cf9dbdbb52722c231e0f1257214202dfa192327fab3de45fd62e0554082", size = 5098885, upload_time = "2025-08-22T10:33:40.035Z" }, - { url = "https://files.pythonhosted.org/packages/5a/63/efceeee7245d45f97d548e48132258a36244d3c13c6e3ddbd04db95ff496/lxml-6.0.1-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:299a790d403335a6a057ade46f92612ebab87b223e4e8c5308059f2dc36f45ed", size = 5017542, upload_time = "2025-08-22T10:33:41.896Z" }, - { url = "https://files.pythonhosted.org/packages/57/5d/92cb3d3499f5caba17f7933e6be3b6c7de767b715081863337ced42eb5f2/lxml-6.0.1-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:48da704672f6f9c461e9a73250440c647638cc6ff9567ead4c3b1f189a604ee8", size = 5347303, upload_time = "2025-08-22T10:33:43.868Z" }, - { url = "https://files.pythonhosted.org/packages/69/f8/606fa16a05d7ef5e916c6481c634f40870db605caffed9d08b1a4fb6b989/lxml-6.0.1-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:21e364e1bb731489e3f4d51db416f991a5d5da5d88184728d80ecfb0904b1d68", size = 5641055, upload_time = "2025-08-22T10:33:45.784Z" }, - { url = "https://files.pythonhosted.org/packages/b3/01/15d5fc74ebb49eac4e5df031fbc50713dcc081f4e0068ed963a510b7d457/lxml-6.0.1-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1bce45a2c32032afddbd84ed8ab092130649acb935536ef7a9559636ce7ffd4a", size = 5242719, upload_time = "2025-08-22T10:33:48.089Z" }, - { url = "https://files.pythonhosted.org/packages/42/a5/1b85e2aaaf8deaa67e04c33bddb41f8e73d07a077bf9db677cec7128bfb4/lxml-6.0.1-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:fa164387ff20ab0e575fa909b11b92ff1481e6876835014e70280769920c4433", size = 4717310, upload_time = "2025-08-22T10:33:49.852Z" }, - { url = "https://files.pythonhosted.org/packages/42/23/f3bb1292f55a725814317172eeb296615db3becac8f1a059b53c51fc1da8/lxml-6.0.1-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:7587ac5e000e1594e62278422c5783b34a82b22f27688b1074d71376424b73e8", size = 5254024, upload_time = "2025-08-22T10:33:52.22Z" }, - { url = "https://files.pythonhosted.org/packages/b4/be/4d768f581ccd0386d424bac615d9002d805df7cc8482ae07d529f60a3c1e/lxml-6.0.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:57478424ac4c9170eabf540237125e8d30fad1940648924c058e7bc9fb9cf6dd", size = 5055335, upload_time = "2025-08-22T10:33:54.041Z" }, - { url = "https://files.pythonhosted.org/packages/40/07/ed61d1a3e77d1a9f856c4fab15ee5c09a2853fb7af13b866bb469a3a6d42/lxml-6.0.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:09c74afc7786c10dd6afaa0be2e4805866beadc18f1d843cf517a7851151b499", size = 4784864, upload_time = "2025-08-22T10:33:56.382Z" }, - { url = "https://files.pythonhosted.org/packages/01/37/77e7971212e5c38a55431744f79dff27fd751771775165caea096d055ca4/lxml-6.0.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7fd70681aeed83b196482d42a9b0dc5b13bab55668d09ad75ed26dff3be5a2f5", size = 5657173, upload_time = "2025-08-22T10:33:58.698Z" }, - { url = "https://files.pythonhosted.org/packages/32/a3/e98806d483941cd9061cc838b1169626acef7b2807261fbe5e382fcef881/lxml-6.0.1-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:10a72e456319b030b3dd900df6b1f19d89adf06ebb688821636dc406788cf6ac", size = 5245896, upload_time = "2025-08-22T10:34:00.586Z" }, - { url = "https://files.pythonhosted.org/packages/07/de/9bb5a05e42e8623bf06b4638931ea8c8f5eb5a020fe31703abdbd2e83547/lxml-6.0.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b0fa45fb5f55111ce75b56c703843b36baaf65908f8b8d2fbbc0e249dbc127ed", size = 5267417, upload_time = "2025-08-22T10:34:02.719Z" }, - { url = "https://files.pythonhosted.org/packages/f2/43/c1cb2a7c67226266c463ef8a53b82d42607228beb763b5fbf4867e88a21f/lxml-6.0.1-cp313-cp313-win32.whl", hash = "sha256:01dab65641201e00c69338c9c2b8a0f2f484b6b3a22d10779bb417599fae32b5", size = 3610051, upload_time = "2025-08-22T10:34:04.553Z" }, - { url = "https://files.pythonhosted.org/packages/34/96/6a6c3b8aa480639c1a0b9b6faf2a63fb73ab79ffcd2a91cf28745faa22de/lxml-6.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:bdf8f7c8502552d7bff9e4c98971910a0a59f60f88b5048f608d0a1a75e94d1c", size = 4009325, upload_time = "2025-08-22T10:34:06.24Z" }, - { url = "https://files.pythonhosted.org/packages/8c/66/622e8515121e1fd773e3738dae71b8df14b12006d9fb554ce90886689fd0/lxml-6.0.1-cp313-cp313-win_arm64.whl", hash = "sha256:a6aeca75959426b9fd8d4782c28723ba224fe07cfa9f26a141004210528dcbe2", size = 3670443, upload_time = "2025-08-22T10:34:07.974Z" }, - { url = "https://files.pythonhosted.org/packages/38/e3/b7eb612ce07abe766918a7e581ec6a0e5212352194001fd287c3ace945f0/lxml-6.0.1-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:29b0e849ec7030e3ecb6112564c9f7ad6881e3b2375dd4a0c486c5c1f3a33859", size = 8426160, upload_time = "2025-08-22T10:34:10.154Z" }, - { url = "https://files.pythonhosted.org/packages/35/8f/ab3639a33595cf284fe733c6526da2ca3afbc5fd7f244ae67f3303cec654/lxml-6.0.1-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:02a0f7e629f73cc0be598c8b0611bf28ec3b948c549578a26111b01307fd4051", size = 4589288, upload_time = "2025-08-22T10:34:12.972Z" }, - { url = "https://files.pythonhosted.org/packages/2c/65/819d54f2e94d5c4458c1db8c1ccac9d05230b27c1038937d3d788eb406f9/lxml-6.0.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:beab5e54de016e730875f612ba51e54c331e2fa6dc78ecf9a5415fc90d619348", size = 4964523, upload_time = "2025-08-22T10:34:15.474Z" }, - { url = "https://files.pythonhosted.org/packages/5b/4a/d4a74ce942e60025cdaa883c5a4478921a99ce8607fc3130f1e349a83b28/lxml-6.0.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:92a08aefecd19ecc4ebf053c27789dd92c87821df2583a4337131cf181a1dffa", size = 5101108, upload_time = "2025-08-22T10:34:17.348Z" }, - { url = "https://files.pythonhosted.org/packages/cb/48/67f15461884074edd58af17b1827b983644d1fae83b3d909e9045a08b61e/lxml-6.0.1-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36c8fa7e177649470bc3dcf7eae6bee1e4984aaee496b9ccbf30e97ac4127fa2", size = 5053498, upload_time = "2025-08-22T10:34:19.232Z" }, - { url = "https://files.pythonhosted.org/packages/b6/d4/ec1bf1614828a5492f4af0b6a9ee2eb3e92440aea3ac4fa158e5228b772b/lxml-6.0.1-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:5d08e0f1af6916267bb7eff21c09fa105620f07712424aaae09e8cb5dd4164d1", size = 5351057, upload_time = "2025-08-22T10:34:21.143Z" }, - { url = "https://files.pythonhosted.org/packages/65/2b/c85929dacac08821f2100cea3eb258ce5c8804a4e32b774f50ebd7592850/lxml-6.0.1-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:9705cdfc05142f8c38c97a61bd3a29581ceceb973a014e302ee4a73cc6632476", size = 5671579, upload_time = "2025-08-22T10:34:23.528Z" }, - { url = "https://files.pythonhosted.org/packages/d0/36/cf544d75c269b9aad16752fd9f02d8e171c5a493ca225cb46bb7ba72868c/lxml-6.0.1-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:74555e2da7c1636e30bff4e6e38d862a634cf020ffa591f1f63da96bf8b34772", size = 5250403, upload_time = "2025-08-22T10:34:25.642Z" }, - { url = "https://files.pythonhosted.org/packages/c2/e8/83dbc946ee598fd75fdeae6151a725ddeaab39bb321354a9468d4c9f44f3/lxml-6.0.1-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:e38b5f94c5a2a5dadaddd50084098dfd005e5a2a56cd200aaf5e0a20e8941782", size = 4696712, upload_time = "2025-08-22T10:34:27.753Z" }, - { url = "https://files.pythonhosted.org/packages/f4/72/889c633b47c06205743ba935f4d1f5aa4eb7f0325d701ed2b0540df1b004/lxml-6.0.1-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a5ec101a92ddacb4791977acfc86c1afd624c032974bfb6a21269d1083c9bc49", size = 5268177, upload_time = "2025-08-22T10:34:29.804Z" }, - { url = "https://files.pythonhosted.org/packages/b0/b6/f42a21a1428479b66ea0da7bd13e370436aecaff0cfe93270c7e165bd2a4/lxml-6.0.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:5c17e70c82fd777df586c12114bbe56e4e6f823a971814fd40dec9c0de518772", size = 5094648, upload_time = "2025-08-22T10:34:31.703Z" }, - { url = "https://files.pythonhosted.org/packages/51/b0/5f8c1e8890e2ee1c2053c2eadd1cb0e4b79e2304e2912385f6ca666f48b1/lxml-6.0.1-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:45fdd0415a0c3d91640b5d7a650a8f37410966a2e9afebb35979d06166fd010e", size = 4745220, upload_time = "2025-08-22T10:34:33.595Z" }, - { url = "https://files.pythonhosted.org/packages/eb/f9/820b5125660dae489ca3a21a36d9da2e75dd6b5ffe922088f94bbff3b8a0/lxml-6.0.1-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:d417eba28981e720a14fcb98f95e44e7a772fe25982e584db38e5d3b6ee02e79", size = 5692913, upload_time = "2025-08-22T10:34:35.482Z" }, - { url = "https://files.pythonhosted.org/packages/23/8e/a557fae9eec236618aecf9ff35fec18df41b6556d825f3ad6017d9f6e878/lxml-6.0.1-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:8e5d116b9e59be7934febb12c41cce2038491ec8fdb743aeacaaf36d6e7597e4", size = 5259816, upload_time = "2025-08-22T10:34:37.482Z" }, - { url = "https://files.pythonhosted.org/packages/fa/fd/b266cfaab81d93a539040be699b5854dd24c84e523a1711ee5f615aa7000/lxml-6.0.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:c238f0d0d40fdcb695c439fe5787fa69d40f45789326b3bb6ef0d61c4b588d6e", size = 5276162, upload_time = "2025-08-22T10:34:39.507Z" }, - { url = "https://files.pythonhosted.org/packages/25/6c/6f9610fbf1de002048e80585ea4719591921a0316a8565968737d9f125ca/lxml-6.0.1-cp314-cp314-win32.whl", hash = "sha256:537b6cf1c5ab88cfd159195d412edb3e434fee880f206cbe68dff9c40e17a68a", size = 3669595, upload_time = "2025-08-22T10:34:41.783Z" }, - { url = "https://files.pythonhosted.org/packages/72/a5/506775e3988677db24dc75a7b03e04038e0b3d114ccd4bccea4ce0116c15/lxml-6.0.1-cp314-cp314-win_amd64.whl", hash = "sha256:911d0a2bb3ef3df55b3d97ab325a9ca7e438d5112c102b8495321105d25a441b", size = 4079818, upload_time = "2025-08-22T10:34:44.04Z" }, - { url = "https://files.pythonhosted.org/packages/0a/44/9613f300201b8700215856e5edd056d4e58dd23368699196b58877d4408b/lxml-6.0.1-cp314-cp314-win_arm64.whl", hash = "sha256:2834377b0145a471a654d699bdb3a2155312de492142ef5a1d426af2c60a0a31", size = 3753901, upload_time = "2025-08-22T10:34:45.799Z" }, +version = "6.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/88/262177de60548e5a2bfc46ad28232c9e9cbde697bd94132aeb80364675cb/lxml-6.0.2.tar.gz", hash = "sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62", size = 4073426 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/c8/8ff2bc6b920c84355146cd1ab7d181bc543b89241cfb1ebee824a7c81457/lxml-6.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a59f5448ba2ceccd06995c95ea59a7674a10de0810f2ce90c9006f3cbc044456", size = 8661887 }, + { url = "https://files.pythonhosted.org/packages/37/6f/9aae1008083bb501ef63284220ce81638332f9ccbfa53765b2b7502203cf/lxml-6.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e8113639f3296706fbac34a30813929e29247718e88173ad849f57ca59754924", size = 4667818 }, + { url = "https://files.pythonhosted.org/packages/f1/ca/31fb37f99f37f1536c133476674c10b577e409c0a624384147653e38baf2/lxml-6.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a8bef9b9825fa8bc816a6e641bb67219489229ebc648be422af695f6e7a4fa7f", size = 4950807 }, + { url = "https://files.pythonhosted.org/packages/da/87/f6cb9442e4bada8aab5ae7e1046264f62fdbeaa6e3f6211b93f4c0dd97f1/lxml-6.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:65ea18d710fd14e0186c2f973dc60bb52039a275f82d3c44a0e42b43440ea534", size = 5109179 }, + { url = "https://files.pythonhosted.org/packages/c8/20/a7760713e65888db79bbae4f6146a6ae5c04e4a204a3c48896c408cd6ed2/lxml-6.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c371aa98126a0d4c739ca93ceffa0fd7a5d732e3ac66a46e74339acd4d334564", size = 5023044 }, + { url = "https://files.pythonhosted.org/packages/a2/b0/7e64e0460fcb36471899f75831509098f3fd7cd02a3833ac517433cb4f8f/lxml-6.0.2-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:700efd30c0fa1a3581d80a748157397559396090a51d306ea59a70020223d16f", size = 5359685 }, + { url = "https://files.pythonhosted.org/packages/b9/e1/e5df362e9ca4e2f48ed6411bd4b3a0ae737cc842e96877f5bf9428055ab4/lxml-6.0.2-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c33e66d44fe60e72397b487ee92e01da0d09ba2d66df8eae42d77b6d06e5eba0", size = 5654127 }, + { url = "https://files.pythonhosted.org/packages/c6/d1/232b3309a02d60f11e71857778bfcd4acbdb86c07db8260caf7d008b08f8/lxml-6.0.2-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90a345bbeaf9d0587a3aaffb7006aa39ccb6ff0e96a57286c0cb2fd1520ea192", size = 5253958 }, + { url = "https://files.pythonhosted.org/packages/35/35/d955a070994725c4f7d80583a96cab9c107c57a125b20bb5f708fe941011/lxml-6.0.2-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:064fdadaf7a21af3ed1dcaa106b854077fbeada827c18f72aec9346847cd65d0", size = 4711541 }, + { url = "https://files.pythonhosted.org/packages/1e/be/667d17363b38a78c4bd63cfd4b4632029fd68d2c2dc81f25ce9eb5224dd5/lxml-6.0.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fbc74f42c3525ac4ffa4b89cbdd00057b6196bcefe8bce794abd42d33a018092", size = 5267426 }, + { url = "https://files.pythonhosted.org/packages/ea/47/62c70aa4a1c26569bc958c9ca86af2bb4e1f614e8c04fb2989833874f7ae/lxml-6.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6ddff43f702905a4e32bc24f3f2e2edfe0f8fde3277d481bffb709a4cced7a1f", size = 5064917 }, + { url = "https://files.pythonhosted.org/packages/bd/55/6ceddaca353ebd0f1908ef712c597f8570cc9c58130dbb89903198e441fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6da5185951d72e6f5352166e3da7b0dc27aa70bd1090b0eb3f7f7212b53f1bb8", size = 4788795 }, + { url = "https://files.pythonhosted.org/packages/cf/e8/fd63e15da5e3fd4c2146f8bbb3c14e94ab850589beab88e547b2dbce22e1/lxml-6.0.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:57a86e1ebb4020a38d295c04fc79603c7899e0df71588043eb218722dabc087f", size = 5676759 }, + { url = "https://files.pythonhosted.org/packages/76/47/b3ec58dc5c374697f5ba37412cd2728f427d056315d124dd4b61da381877/lxml-6.0.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2047d8234fe735ab77802ce5f2297e410ff40f5238aec569ad7c8e163d7b19a6", size = 5255666 }, + { url = "https://files.pythonhosted.org/packages/19/93/03ba725df4c3d72afd9596eef4a37a837ce8e4806010569bedfcd2cb68fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6f91fd2b2ea15a6800c8e24418c0775a1694eefc011392da73bc6cef2623b322", size = 5277989 }, + { url = "https://files.pythonhosted.org/packages/c6/80/c06de80bfce881d0ad738576f243911fccf992687ae09fd80b734712b39c/lxml-6.0.2-cp312-cp312-win32.whl", hash = "sha256:3ae2ce7d6fedfb3414a2b6c5e20b249c4c607f72cb8d2bb7cc9c6ec7c6f4e849", size = 3611456 }, + { url = "https://files.pythonhosted.org/packages/f7/d7/0cdfb6c3e30893463fb3d1e52bc5f5f99684a03c29a0b6b605cfae879cd5/lxml-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:72c87e5ee4e58a8354fb9c7c84cbf95a1c8236c127a5d1b7683f04bed8361e1f", size = 4011793 }, + { url = "https://files.pythonhosted.org/packages/ea/7b/93c73c67db235931527301ed3785f849c78991e2e34f3fd9a6663ffda4c5/lxml-6.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:61cb10eeb95570153e0c0e554f58df92ecf5109f75eacad4a95baa709e26c3d6", size = 3672836 }, + { url = "https://files.pythonhosted.org/packages/53/fd/4e8f0540608977aea078bf6d79f128e0e2c2bba8af1acf775c30baa70460/lxml-6.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9b33d21594afab46f37ae58dfadd06636f154923c4e8a4d754b0127554eb2e77", size = 8648494 }, + { url = "https://files.pythonhosted.org/packages/5d/f4/2a94a3d3dfd6c6b433501b8d470a1960a20ecce93245cf2db1706adf6c19/lxml-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c8963287d7a4c5c9a432ff487c52e9c5618667179c18a204bdedb27310f022f", size = 4661146 }, + { url = "https://files.pythonhosted.org/packages/25/2e/4efa677fa6b322013035d38016f6ae859d06cac67437ca7dc708a6af7028/lxml-6.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1941354d92699fb5ffe6ed7b32f9649e43c2feb4b97205f75866f7d21aa91452", size = 4946932 }, + { url = "https://files.pythonhosted.org/packages/ce/0f/526e78a6d38d109fdbaa5049c62e1d32fdd70c75fb61c4eadf3045d3d124/lxml-6.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb2f6ca0ae2d983ded09357b84af659c954722bbf04dea98030064996d156048", size = 5100060 }, + { url = "https://files.pythonhosted.org/packages/81/76/99de58d81fa702cc0ea7edae4f4640416c2062813a00ff24bd70ac1d9c9b/lxml-6.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb2a12d704f180a902d7fa778c6d71f36ceb7b0d317f34cdc76a5d05aa1dd1df", size = 5019000 }, + { url = "https://files.pythonhosted.org/packages/b5/35/9e57d25482bc9a9882cb0037fdb9cc18f4b79d85df94fa9d2a89562f1d25/lxml-6.0.2-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:6ec0e3f745021bfed19c456647f0298d60a24c9ff86d9d051f52b509663feeb1", size = 5348496 }, + { url = "https://files.pythonhosted.org/packages/a6/8e/cb99bd0b83ccc3e8f0f528e9aa1f7a9965dfec08c617070c5db8d63a87ce/lxml-6.0.2-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:846ae9a12d54e368933b9759052d6206a9e8b250291109c48e350c1f1f49d916", size = 5643779 }, + { url = "https://files.pythonhosted.org/packages/d0/34/9e591954939276bb679b73773836c6684c22e56d05980e31d52a9a8deb18/lxml-6.0.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef9266d2aa545d7374938fb5c484531ef5a2ec7f2d573e62f8ce722c735685fd", size = 5244072 }, + { url = "https://files.pythonhosted.org/packages/8d/27/b29ff065f9aaca443ee377aff699714fcbffb371b4fce5ac4ca759e436d5/lxml-6.0.2-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:4077b7c79f31755df33b795dc12119cb557a0106bfdab0d2c2d97bd3cf3dffa6", size = 4718675 }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f756f9c2cd27caa1a6ef8c32ae47aadea697f5c2c6d07b0dae133c244fbe/lxml-6.0.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a7c5d5e5f1081955358533be077166ee97ed2571d6a66bdba6ec2f609a715d1a", size = 5255171 }, + { url = "https://files.pythonhosted.org/packages/61/46/bb85ea42d2cb1bd8395484fd72f38e3389611aa496ac7772da9205bbda0e/lxml-6.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8f8d0cbd0674ee89863a523e6994ac25fd5be9c8486acfc3e5ccea679bad2679", size = 5057175 }, + { url = "https://files.pythonhosted.org/packages/95/0c/443fc476dcc8e41577f0af70458c50fe299a97bb6b7505bb1ae09aa7f9ac/lxml-6.0.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2cbcbf6d6e924c28f04a43f3b6f6e272312a090f269eff68a2982e13e5d57659", size = 4785688 }, + { url = "https://files.pythonhosted.org/packages/48/78/6ef0b359d45bb9697bc5a626e1992fa5d27aa3f8004b137b2314793b50a0/lxml-6.0.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dfb874cfa53340009af6bdd7e54ebc0d21012a60a4e65d927c2e477112e63484", size = 5660655 }, + { url = "https://files.pythonhosted.org/packages/ff/ea/e1d33808f386bc1339d08c0dcada6e4712d4ed8e93fcad5f057070b7988a/lxml-6.0.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fb8dae0b6b8b7f9e96c26fdd8121522ce5de9bb5538010870bd538683d30e9a2", size = 5247695 }, + { url = "https://files.pythonhosted.org/packages/4f/47/eba75dfd8183673725255247a603b4ad606f4ae657b60c6c145b381697da/lxml-6.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:358d9adae670b63e95bc59747c72f4dc97c9ec58881d4627fe0120da0f90d314", size = 5269841 }, + { url = "https://files.pythonhosted.org/packages/76/04/5c5e2b8577bc936e219becb2e98cdb1aca14a4921a12995b9d0c523502ae/lxml-6.0.2-cp313-cp313-win32.whl", hash = "sha256:e8cd2415f372e7e5a789d743d133ae474290a90b9023197fd78f32e2dc6873e2", size = 3610700 }, + { url = "https://files.pythonhosted.org/packages/fe/0a/4643ccc6bb8b143e9f9640aa54e38255f9d3b45feb2cbe7ae2ca47e8782e/lxml-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:b30d46379644fbfc3ab81f8f82ae4de55179414651f110a1514f0b1f8f6cb2d7", size = 4010347 }, + { url = "https://files.pythonhosted.org/packages/31/ef/dcf1d29c3f530577f61e5fe2f1bd72929acf779953668a8a47a479ae6f26/lxml-6.0.2-cp313-cp313-win_arm64.whl", hash = "sha256:13dcecc9946dca97b11b7c40d29fba63b55ab4170d3c0cf8c0c164343b9bfdcf", size = 3671248 }, + { url = "https://files.pythonhosted.org/packages/03/15/d4a377b385ab693ce97b472fe0c77c2b16ec79590e688b3ccc71fba19884/lxml-6.0.2-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:b0c732aa23de8f8aec23f4b580d1e52905ef468afb4abeafd3fec77042abb6fe", size = 8659801 }, + { url = "https://files.pythonhosted.org/packages/c8/e8/c128e37589463668794d503afaeb003987373c5f94d667124ffd8078bbd9/lxml-6.0.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4468e3b83e10e0317a89a33d28f7aeba1caa4d1a6fd457d115dd4ffe90c5931d", size = 4659403 }, + { url = "https://files.pythonhosted.org/packages/00/ce/74903904339decdf7da7847bb5741fc98a5451b42fc419a86c0c13d26fe2/lxml-6.0.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:abd44571493973bad4598a3be7e1d807ed45aa2adaf7ab92ab7c62609569b17d", size = 4966974 }, + { url = "https://files.pythonhosted.org/packages/1f/d3/131dec79ce61c5567fecf82515bd9bc36395df42501b50f7f7f3bd065df0/lxml-6.0.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:370cd78d5855cfbffd57c422851f7d3864e6ae72d0da615fca4dad8c45d375a5", size = 5102953 }, + { url = "https://files.pythonhosted.org/packages/3a/ea/a43ba9bb750d4ffdd885f2cd333572f5bb900cd2408b67fdda07e85978a0/lxml-6.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:901e3b4219fa04ef766885fb40fa516a71662a4c61b80c94d25336b4934b71c0", size = 5055054 }, + { url = "https://files.pythonhosted.org/packages/60/23/6885b451636ae286c34628f70a7ed1fcc759f8d9ad382d132e1c8d3d9bfd/lxml-6.0.2-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:a4bf42d2e4cf52c28cc1812d62426b9503cdb0c87a6de81442626aa7d69707ba", size = 5352421 }, + { url = "https://files.pythonhosted.org/packages/48/5b/fc2ddfc94ddbe3eebb8e9af6e3fd65e2feba4967f6a4e9683875c394c2d8/lxml-6.0.2-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2c7fdaa4d7c3d886a42534adec7cfac73860b89b4e5298752f60aa5984641a0", size = 5673684 }, + { url = "https://files.pythonhosted.org/packages/29/9c/47293c58cc91769130fbf85531280e8cc7868f7fbb6d92f4670071b9cb3e/lxml-6.0.2-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:98a5e1660dc7de2200b00d53fa00bcd3c35a3608c305d45a7bbcaf29fa16e83d", size = 5252463 }, + { url = "https://files.pythonhosted.org/packages/9b/da/ba6eceb830c762b48e711ded880d7e3e89fc6c7323e587c36540b6b23c6b/lxml-6.0.2-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:dc051506c30b609238d79eda75ee9cab3e520570ec8219844a72a46020901e37", size = 4698437 }, + { url = "https://files.pythonhosted.org/packages/a5/24/7be3f82cb7990b89118d944b619e53c656c97dc89c28cfb143fdb7cd6f4d/lxml-6.0.2-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8799481bbdd212470d17513a54d568f44416db01250f49449647b5ab5b5dccb9", size = 5269890 }, + { url = "https://files.pythonhosted.org/packages/1b/bd/dcfb9ea1e16c665efd7538fc5d5c34071276ce9220e234217682e7d2c4a5/lxml-6.0.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9261bb77c2dab42f3ecd9103951aeca2c40277701eb7e912c545c1b16e0e4917", size = 5097185 }, + { url = "https://files.pythonhosted.org/packages/21/04/a60b0ff9314736316f28316b694bccbbabe100f8483ad83852d77fc7468e/lxml-6.0.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:65ac4a01aba353cfa6d5725b95d7aed6356ddc0a3cd734de00124d285b04b64f", size = 4745895 }, + { url = "https://files.pythonhosted.org/packages/d6/bd/7d54bd1846e5a310d9c715921c5faa71cf5c0853372adf78aee70c8d7aa2/lxml-6.0.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:b22a07cbb82fea98f8a2fd814f3d1811ff9ed76d0fc6abc84eb21527596e7cc8", size = 5695246 }, + { url = "https://files.pythonhosted.org/packages/fd/32/5643d6ab947bc371da21323acb2a6e603cedbe71cb4c99c8254289ab6f4e/lxml-6.0.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d759cdd7f3e055d6bc8d9bec3ad905227b2e4c785dc16c372eb5b5e83123f48a", size = 5260797 }, + { url = "https://files.pythonhosted.org/packages/33/da/34c1ec4cff1eea7d0b4cd44af8411806ed943141804ac9c5d565302afb78/lxml-6.0.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:945da35a48d193d27c188037a05fec5492937f66fb1958c24fc761fb9d40d43c", size = 5277404 }, + { url = "https://files.pythonhosted.org/packages/82/57/4eca3e31e54dc89e2c3507e1cd411074a17565fa5ffc437c4ae0a00d439e/lxml-6.0.2-cp314-cp314-win32.whl", hash = "sha256:be3aaa60da67e6153eb15715cc2e19091af5dc75faef8b8a585aea372507384b", size = 3670072 }, + { url = "https://files.pythonhosted.org/packages/e3/e0/c96cf13eccd20c9421ba910304dae0f619724dcf1702864fd59dd386404d/lxml-6.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:fa25afbadead523f7001caf0c2382afd272c315a033a7b06336da2637d92d6ed", size = 4080617 }, + { url = "https://files.pythonhosted.org/packages/d5/5d/b3f03e22b3d38d6f188ef044900a9b29b2fe0aebb94625ce9fe244011d34/lxml-6.0.2-cp314-cp314-win_arm64.whl", hash = "sha256:063eccf89df5b24e361b123e257e437f9e9878f425ee9aae3144c77faf6da6d8", size = 3754930 }, + { url = "https://files.pythonhosted.org/packages/5e/5c/42c2c4c03554580708fc738d13414801f340c04c3eff90d8d2d227145275/lxml-6.0.2-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:6162a86d86893d63084faaf4ff937b3daea233e3682fb4474db07395794fa80d", size = 8910380 }, + { url = "https://files.pythonhosted.org/packages/bf/4f/12df843e3e10d18d468a7557058f8d3733e8b6e12401f30b1ef29360740f/lxml-6.0.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:414aaa94e974e23a3e92e7ca5b97d10c0cf37b6481f50911032c69eeb3991bba", size = 4775632 }, + { url = "https://files.pythonhosted.org/packages/e4/0c/9dc31e6c2d0d418483cbcb469d1f5a582a1cd00a1f4081953d44051f3c50/lxml-6.0.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48461bd21625458dd01e14e2c38dd0aea69addc3c4f960c30d9f59d7f93be601", size = 4975171 }, + { url = "https://files.pythonhosted.org/packages/e7/2b/9b870c6ca24c841bdd887504808f0417aa9d8d564114689266f19ddf29c8/lxml-6.0.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25fcc59afc57d527cfc78a58f40ab4c9b8fd096a9a3f964d2781ffb6eb33f4ed", size = 5110109 }, + { url = "https://files.pythonhosted.org/packages/bf/0c/4f5f2a4dd319a178912751564471355d9019e220c20d7db3fb8307ed8582/lxml-6.0.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5179c60288204e6ddde3f774a93350177e08876eaf3ab78aa3a3649d43eb7d37", size = 5041061 }, + { url = "https://files.pythonhosted.org/packages/12/64/554eed290365267671fe001a20d72d14f468ae4e6acef1e179b039436967/lxml-6.0.2-cp314-cp314t-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:967aab75434de148ec80597b75062d8123cadf2943fb4281f385141e18b21338", size = 5306233 }, + { url = "https://files.pythonhosted.org/packages/7a/31/1d748aa275e71802ad9722df32a7a35034246b42c0ecdd8235412c3396ef/lxml-6.0.2-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d100fcc8930d697c6561156c6810ab4a508fb264c8b6779e6e61e2ed5e7558f9", size = 5604739 }, + { url = "https://files.pythonhosted.org/packages/8f/41/2c11916bcac09ed561adccacceaedd2bf0e0b25b297ea92aab99fd03d0fa/lxml-6.0.2-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ca59e7e13e5981175b8b3e4ab84d7da57993eeff53c07764dcebda0d0e64ecd", size = 5225119 }, + { url = "https://files.pythonhosted.org/packages/99/05/4e5c2873d8f17aa018e6afde417c80cc5d0c33be4854cce3ef5670c49367/lxml-6.0.2-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:957448ac63a42e2e49531b9d6c0fa449a1970dbc32467aaad46f11545be9af1d", size = 4633665 }, + { url = "https://files.pythonhosted.org/packages/0f/c9/dcc2da1bebd6275cdc723b515f93edf548b82f36a5458cca3578bc899332/lxml-6.0.2-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b7fc49c37f1786284b12af63152fe1d0990722497e2d5817acfe7a877522f9a9", size = 5234997 }, + { url = "https://files.pythonhosted.org/packages/9c/e2/5172e4e7468afca64a37b81dba152fc5d90e30f9c83c7c3213d6a02a5ce4/lxml-6.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e19e0643cc936a22e837f79d01a550678da8377d7d801a14487c10c34ee49c7e", size = 5090957 }, + { url = "https://files.pythonhosted.org/packages/a5/b3/15461fd3e5cd4ddcb7938b87fc20b14ab113b92312fc97afe65cd7c85de1/lxml-6.0.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:1db01e5cf14345628e0cbe71067204db658e2fb8e51e7f33631f5f4735fefd8d", size = 4764372 }, + { url = "https://files.pythonhosted.org/packages/05/33/f310b987c8bf9e61c4dd8e8035c416bd3230098f5e3cfa69fc4232de7059/lxml-6.0.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:875c6b5ab39ad5291588aed6925fac99d0097af0dd62f33c7b43736043d4a2ec", size = 5634653 }, + { url = "https://files.pythonhosted.org/packages/70/ff/51c80e75e0bc9382158133bdcf4e339b5886c6ee2418b5199b3f1a61ed6d/lxml-6.0.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:cdcbed9ad19da81c480dfd6dd161886db6096083c9938ead313d94b30aadf272", size = 5233795 }, + { url = "https://files.pythonhosted.org/packages/56/4d/4856e897df0d588789dd844dbed9d91782c4ef0b327f96ce53c807e13128/lxml-6.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80dadc234ebc532e09be1975ff538d154a7fa61ea5031c03d25178855544728f", size = 5257023 }, + { url = "https://files.pythonhosted.org/packages/0f/85/86766dfebfa87bea0ab78e9ff7a4b4b45225df4b4d3b8cc3c03c5cd68464/lxml-6.0.2-cp314-cp314t-win32.whl", hash = "sha256:da08e7bb297b04e893d91087df19638dc7a6bb858a954b0cc2b9f5053c922312", size = 3911420 }, + { url = "https://files.pythonhosted.org/packages/fe/1a/b248b355834c8e32614650b8008c69ffeb0ceb149c793961dd8c0b991bb3/lxml-6.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:252a22982dca42f6155125ac76d3432e548a7625d56f5a273ee78a5057216eca", size = 4406837 }, + { url = "https://files.pythonhosted.org/packages/92/aa/df863bcc39c5e0946263454aba394de8a9084dbaff8ad143846b0d844739/lxml-6.0.2-cp314-cp314t-win_arm64.whl", hash = "sha256:bb4c1847b303835d89d785a18801a883436cdfd5dc3d62947f9c49e24f0f5a2c", size = 3822205 }, ] [[package]] name = "markdown" -version = "3.8.2" +version = "3.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/c2/4ab49206c17f75cb08d6311171f2d65798988db4360c4d1485bd0eedd67c/markdown-3.8.2.tar.gz", hash = "sha256:247b9a70dd12e27f67431ce62523e675b866d254f900c4fe75ce3dda62237c45", size = 362071, upload_time = "2025-06-19T17:12:44.483Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8d/37/02347f6d6d8279247a5837082ebc26fc0d5aaeaf75aa013fcbb433c777ab/markdown-3.9.tar.gz", hash = "sha256:d2900fe1782bd33bdbbd56859defef70c2e78fc46668f8eb9df3128138f2cb6a", size = 364585 } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/2b/34cc11786bc00d0f04d0f5fdc3a2b1ae0b6239eef72d3d345805f9ad92a1/markdown-3.8.2-py3-none-any.whl", hash = "sha256:5c83764dbd4e00bdd94d85a19b8d55ccca20fe35b2e678a1422b380324dd5f24", size = 106827, upload_time = "2025-06-19T17:12:42.994Z" }, + { url = "https://files.pythonhosted.org/packages/70/ae/44c4a6a4cbb496d93c6257954260fe3a6e91b7bed2240e5dad2a717f5111/markdown-3.9-py3-none-any.whl", hash = "sha256:9f4d91ed810864ea88a6f32c07ba8bee1346c0cc1f6b1f9f6c822f2a9667d280", size = 107441 }, ] [[package]] name = "markdown-it-py" -version = "3.0.0" +version = "4.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload_time = "2023-06-03T06:41:14.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070 } wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload_time = "2023-06-03T06:41:11.019Z" }, + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321 }, ] [[package]] name = "marko" -version = "2.1.4" +version = "2.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/dc/c8cadbd83de1b38d95a48568b445a5553005ebdd32e00a333ca940113db4/marko-2.1.4.tar.gz", hash = "sha256:dd7d66f3706732bf8f994790e674649a4fd0a6c67f16b80246f30de8e16a1eac", size = 142795, upload_time = "2025-06-13T03:25:50.857Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/6a/32545d2379822fb9a8843f01150011402888492541977a1193fe8d695df0/marko-2.2.0.tar.gz", hash = "sha256:213c146ba197c1d6bcb06ae3658b7d87e45f6def35c09905b86aa6bb1984eba6", size = 143406 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c3/66/49e3691d14898fb6e34ccb337c7677dfb7e18269ed170f12e4b85315eae6/marko-2.1.4-py3-none-any.whl", hash = "sha256:81c2b9f570ca485bc356678d9ba1a1b3eb78b4a315d01f3ded25442fdc796990", size = 42186, upload_time = "2025-06-13T03:25:49.858Z" }, + { url = "https://files.pythonhosted.org/packages/94/b1/87f54d8842b2aafdbb162301ac730587e04f30ad0fe9aabb12fa29f7a6f7/marko-2.2.0-py3-none-any.whl", hash = "sha256:d84f867429142627e896322c8ef167664f3a6cd6ea5a2b70c6af055998041bb7", size = 42683 }, ] [[package]] name = "markupsafe" version = "3.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload_time = "2024-10-18T15:21:54.129Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload_time = "2024-10-18T15:21:13.777Z" }, - { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload_time = "2024-10-18T15:21:14.822Z" }, - { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload_time = "2024-10-18T15:21:15.642Z" }, - { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload_time = "2024-10-18T15:21:17.133Z" }, - { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload_time = "2024-10-18T15:21:18.064Z" }, - { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload_time = "2024-10-18T15:21:18.859Z" }, - { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload_time = "2024-10-18T15:21:19.671Z" }, - { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload_time = "2024-10-18T15:21:20.971Z" }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload_time = "2024-10-18T15:21:22.646Z" }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload_time = "2024-10-18T15:21:23.499Z" }, - { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload_time = "2024-10-18T15:21:24.577Z" }, - { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload_time = "2024-10-18T15:21:25.382Z" }, - { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload_time = "2024-10-18T15:21:26.199Z" }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload_time = "2024-10-18T15:21:27.029Z" }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload_time = "2024-10-18T15:21:27.846Z" }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload_time = "2024-10-18T15:21:28.744Z" }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload_time = "2024-10-18T15:21:29.545Z" }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload_time = "2024-10-18T15:21:30.366Z" }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload_time = "2024-10-18T15:21:31.207Z" }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload_time = "2024-10-18T15:21:32.032Z" }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload_time = "2024-10-18T15:21:33.625Z" }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload_time = "2024-10-18T15:21:34.611Z" }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload_time = "2024-10-18T15:21:35.398Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload_time = "2024-10-18T15:21:36.231Z" }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload_time = "2024-10-18T15:21:37.073Z" }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload_time = "2024-10-18T15:21:37.932Z" }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload_time = "2024-10-18T15:21:39.799Z" }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload_time = "2024-10-18T15:21:40.813Z" }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload_time = "2024-10-18T15:21:41.814Z" }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload_time = "2024-10-18T15:21:42.784Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, ] [[package]] @@ -1164,9 +1250,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload_time = "2024-04-15T13:44:44.803Z" } +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload_time = "2024-04-15T13:44:43.265Z" }, + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 }, ] [[package]] @@ -1176,36 +1262,36 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b2/fd/a756d36c0bfba5f6e39a1cdbdbfdd448dc02692467d83816dff4592a1ebc/mdit_py_plugins-0.5.0.tar.gz", hash = "sha256:f4918cb50119f50446560513a8e311d574ff6aaed72606ddae6d35716fe809c6", size = 44655, upload_time = "2025-08-11T07:25:49.083Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/fd/a756d36c0bfba5f6e39a1cdbdbfdd448dc02692467d83816dff4592a1ebc/mdit_py_plugins-0.5.0.tar.gz", hash = "sha256:f4918cb50119f50446560513a8e311d574ff6aaed72606ddae6d35716fe809c6", size = 44655 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/86/dd6e5db36df29e76c7a7699123569a4a18c1623ce68d826ed96c62643cae/mdit_py_plugins-0.5.0-py3-none-any.whl", hash = "sha256:07a08422fc1936a5d26d146759e9155ea466e842f5ab2f7d2266dd084c8dab1f", size = 57205, upload_time = "2025-08-11T07:25:47.597Z" }, + { url = "https://files.pythonhosted.org/packages/fb/86/dd6e5db36df29e76c7a7699123569a4a18c1623ce68d826ed96c62643cae/mdit_py_plugins-0.5.0-py3-none-any.whl", hash = "sha256:07a08422fc1936a5d26d146759e9155ea466e842f5ab2f7d2266dd084c8dab1f", size = 57205 }, ] [[package]] name = "mdurl" version = "0.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload_time = "2022-08-14T12:40:10.846Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload_time = "2022-08-14T12:40:09.779Z" }, + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, ] [[package]] name = "mergedeep" version = "1.3.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661, upload_time = "2021-02-05T18:55:30.623Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload_time = "2021-02-05T18:55:29.583Z" }, + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, ] [[package]] name = "mistune" -version = "3.1.3" +version = "3.1.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347, upload_time = "2025-03-19T14:27:24.955Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/02/a7fb8b21d4d55ac93cdcde9d3638da5dd0ebdd3a4fed76c7725e10b81cbe/mistune-3.1.4.tar.gz", hash = "sha256:b5a7f801d389f724ec702840c11d8fc48f2b33519102fc7ee739e8177b672164", size = 94588 } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410, upload_time = "2025-03-19T14:27:23.451Z" }, + { url = "https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl", hash = "sha256:93691da911e5d9d2e23bc54472892aff676df27a75274962ff9edc210364266d", size = 53481 }, ] [[package]] @@ -1227,9 +1313,9 @@ dependencies = [ { name = "pyyaml-env-tag" }, { name = "watchdog" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159, upload_time = "2024-08-30T12:24:06.899Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload_time = "2024-08-30T12:24:05.054Z" }, + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, ] [[package]] @@ -1239,9 +1325,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/26/7c/fea9d842705ca8c9e7dd21da2d0b7b61dbdd8b6e58ca3c7c85b5604914e9/mkdocs_argref_plugin-0.5.0.tar.gz", hash = "sha256:b2982f9670419911f671ddff3f773b27fdc9184762ecd1e00c42aaab3e905e70", size = 7012, upload_time = "2024-08-25T12:50:09.138Z" } +sdist = { url = "https://files.pythonhosted.org/packages/26/7c/fea9d842705ca8c9e7dd21da2d0b7b61dbdd8b6e58ca3c7c85b5604914e9/mkdocs_argref_plugin-0.5.0.tar.gz", hash = "sha256:b2982f9670419911f671ddff3f773b27fdc9184762ecd1e00c42aaab3e905e70", size = 7012 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/eb/e7e7ea2f7e374e52fc8425d5cf67890be8278a6e620aa74775da2f1039f7/mkdocs_argref_plugin-0.5.0-py3-none-any.whl", hash = "sha256:6ec4be422bfb5654c38f96785b0093078c3ca3e16774162be607d6f8d483ceb9", size = 6790, upload_time = "2024-08-25T12:50:08.151Z" }, + { url = "https://files.pythonhosted.org/packages/1e/eb/e7e7ea2f7e374e52fc8425d5cf67890be8278a6e620aa74775da2f1039f7/mkdocs_argref_plugin-0.5.0-py3-none-any.whl", hash = "sha256:6ec4be422bfb5654c38f96785b0093078c3ca3e16774162be607d6f8d483ceb9", size = 6790 }, ] [[package]] @@ -1251,23 +1337,23 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/b7/efc75b7870a4fecbc9a05ba94ce622462a40b5a13670d00036c5b47bf82f/mkdocs-autolinks-plugin-0.7.1.tar.gz", hash = "sha256:445ddb9b417b7795856c30801bb430773186c1daf210bdeecf8305f55a47d151", size = 4375, upload_time = "2023-08-04T14:42:25.67Z" } +sdist = { url = "https://files.pythonhosted.org/packages/63/b7/efc75b7870a4fecbc9a05ba94ce622462a40b5a13670d00036c5b47bf82f/mkdocs-autolinks-plugin-0.7.1.tar.gz", hash = "sha256:445ddb9b417b7795856c30801bb430773186c1daf210bdeecf8305f55a47d151", size = 4375 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/9c/ee3d81a799b8b0b73a89625bcbf3c58cd369c8a26a1b415413edea9bf259/mkdocs_autolinks_plugin-0.7.1-py3-none-any.whl", hash = "sha256:5c6c17f6649b68e79a9ef0b2648d59f3072e18002b90ee1586a64c505f11ab12", size = 4235, upload_time = "2023-08-04T14:42:23.955Z" }, + { url = "https://files.pythonhosted.org/packages/d4/9c/ee3d81a799b8b0b73a89625bcbf3c58cd369c8a26a1b415413edea9bf259/mkdocs_autolinks_plugin-0.7.1-py3-none-any.whl", hash = "sha256:5c6c17f6649b68e79a9ef0b2648d59f3072e18002b90ee1586a64c505f11ab12", size = 4235 }, ] [[package]] name = "mkdocs-autorefs" -version = "1.4.2" +version = "1.4.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown" }, { name = "markupsafe" }, { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/47/0c/c9826f35b99c67fa3a7cddfa094c1a6c43fafde558c309c6e4403e5b37dc/mkdocs_autorefs-1.4.2.tar.gz", hash = "sha256:e2ebe1abd2b67d597ed19378c0fff84d73d1dbce411fce7a7cc6f161888b6749", size = 54961, upload_time = "2025-05-20T13:09:09.886Z" } +sdist = { url = "https://files.pythonhosted.org/packages/51/fa/9124cd63d822e2bcbea1450ae68cdc3faf3655c69b455f3a7ed36ce6c628/mkdocs_autorefs-1.4.3.tar.gz", hash = "sha256:beee715b254455c4aa93b6ef3c67579c399ca092259cc41b7d9342573ff1fc75", size = 55425 } wheels = [ - { url = "https://files.pythonhosted.org/packages/87/dc/fc063b78f4b769d1956319351704e23ebeba1e9e1d6a41b4b602325fd7e4/mkdocs_autorefs-1.4.2-py3-none-any.whl", hash = "sha256:83d6d777b66ec3c372a1aad4ae0cf77c243ba5bcda5bf0c6b8a2c5e7a3d89f13", size = 24969, upload_time = "2025-05-20T13:09:08.237Z" }, + { url = "https://files.pythonhosted.org/packages/9f/4d/7123b6fa2278000688ebd338e2a06d16870aaf9eceae6ba047ea05f92df1/mkdocs_autorefs-1.4.3-py3-none-any.whl", hash = "sha256:469d85eb3114801d08e9cc55d102b3ba65917a869b893403b8987b601cf55dc9", size = 25034 }, ] [[package]] @@ -1278,7 +1364,7 @@ dependencies = [ { name = "mkdocs" }, { name = "pygtrie" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9a/3b/490d1b51fba7da69394e5a17f2c081eb65a10fb73565dc6793d53e4e4206/mkdocs-ezlinks-plugin-0.1.14.tar.gz", hash = "sha256:3e2085c16a850e022393e80194c17612e7b55de87fb45b3ffb618b5dfdb10811", size = 13366, upload_time = "2022-01-24T20:10:30.91Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/3b/490d1b51fba7da69394e5a17f2c081eb65a10fb73565dc6793d53e4e4206/mkdocs-ezlinks-plugin-0.1.14.tar.gz", hash = "sha256:3e2085c16a850e022393e80194c17612e7b55de87fb45b3ffb618b5dfdb10811", size = 13366 } [[package]] name = "mkdocs-get-deps" @@ -1289,9 +1375,9 @@ dependencies = [ { name = "platformdirs" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload_time = "2023-11-20T17:51:09.981Z" } +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521, upload_time = "2023-11-20T17:51:08.587Z" }, + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, ] [[package]] @@ -1302,9 +1388,9 @@ dependencies = [ { name = "mkdocs" }, { name = "pygithub" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c6/88/e724563e9ff1b119869ef0704157caa8d7b9b9b4a8a8faf8120aa01620e2/mkdocs-git-committers-plugin-0.2.3.tar.gz", hash = "sha256:77188d8aacc11d5233d6949435670e3d6545ffb7a0e274d56f32ed3984353c61", size = 5379, upload_time = "2023-11-06T17:13:30.207Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c6/88/e724563e9ff1b119869ef0704157caa8d7b9b9b4a8a8faf8120aa01620e2/mkdocs-git-committers-plugin-0.2.3.tar.gz", hash = "sha256:77188d8aacc11d5233d6949435670e3d6545ffb7a0e274d56f32ed3984353c61", size = 5379 } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/56/15fdbb6afa718a6c9de626bd11672040832ba547c03daf205e295be4e0d4/mkdocs_git_committers_plugin-0.2.3-py3-none-any.whl", hash = "sha256:4ca79efb7e61a72652d3512d61af5c40a4572e36667e1a00032aad524250780d", size = 4340, upload_time = "2023-11-06T17:13:28.979Z" }, + { url = "https://files.pythonhosted.org/packages/81/56/15fdbb6afa718a6c9de626bd11672040832ba547c03daf205e295be4e0d4/mkdocs_git_committers_plugin-0.2.3-py3-none-any.whl", hash = "sha256:4ca79efb7e61a72652d3512d61af5c40a4572e36667e1a00032aad524250780d", size = 4340 }, ] [[package]] @@ -1317,9 +1403,9 @@ dependencies = [ { name = "mkdocs" }, { name = "pytz" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/f8/a17ec39a4fc314d40cc96afdc1d401e393ebd4f42309d454cc940a2cf38a/mkdocs_git_revision_date_localized_plugin-1.4.7.tar.gz", hash = "sha256:10a49eff1e1c3cb766e054b9d8360c904ce4fe8c33ac3f6cc083ac6459c91953", size = 450473, upload_time = "2025-05-28T18:26:20.697Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/f8/a17ec39a4fc314d40cc96afdc1d401e393ebd4f42309d454cc940a2cf38a/mkdocs_git_revision_date_localized_plugin-1.4.7.tar.gz", hash = "sha256:10a49eff1e1c3cb766e054b9d8360c904ce4fe8c33ac3f6cc083ac6459c91953", size = 450473 } wheels = [ - { url = "https://files.pythonhosted.org/packages/53/b6/106fcc15287e7228658fbd0ad9e8b0d775becced0a089cc39984641f4a0f/mkdocs_git_revision_date_localized_plugin-1.4.7-py3-none-any.whl", hash = "sha256:056c0a90242409148f1dc94d5c9d2c25b5b8ddd8de45489fa38f7fa7ccad2bc4", size = 25382, upload_time = "2025-05-28T18:26:18.907Z" }, + { url = "https://files.pythonhosted.org/packages/53/b6/106fcc15287e7228658fbd0ad9e8b0d775becced0a089cc39984641f4a0f/mkdocs_git_revision_date_localized_plugin-1.4.7-py3-none-any.whl", hash = "sha256:056c0a90242409148f1dc94d5c9d2c25b5b8ddd8de45489fa38f7fa7ccad2bc4", size = 25382 }, ] [[package]] @@ -1334,18 +1420,19 @@ dependencies = [ { name = "nbconvert" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6c/23/6ffb8d2fd2117aa860a04c6fe2510b21bc3c3c085907ffdd851caba53152/mkdocs_jupyter-0.25.1.tar.gz", hash = "sha256:0e9272ff4947e0ec683c92423a4bfb42a26477c103ab1a6ab8277e2dcc8f7afe", size = 1626747, upload_time = "2024-10-15T14:56:32.373Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/23/6ffb8d2fd2117aa860a04c6fe2510b21bc3c3c085907ffdd851caba53152/mkdocs_jupyter-0.25.1.tar.gz", hash = "sha256:0e9272ff4947e0ec683c92423a4bfb42a26477c103ab1a6ab8277e2dcc8f7afe", size = 1626747 } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/37/5f1fd5c3f6954b3256f8126275e62af493b96fb6aef6c0dbc4ee326032ad/mkdocs_jupyter-0.25.1-py3-none-any.whl", hash = "sha256:3f679a857609885d322880e72533ef5255561bbfdb13cfee2a1e92ef4d4ad8d8", size = 1456197, upload_time = "2024-10-15T14:56:29.854Z" }, + { url = "https://files.pythonhosted.org/packages/08/37/5f1fd5c3f6954b3256f8126275e62af493b96fb6aef6c0dbc4ee326032ad/mkdocs_jupyter-0.25.1-py3-none-any.whl", hash = "sha256:3f679a857609885d322880e72533ef5255561bbfdb13cfee2a1e92ef4d4ad8d8", size = 1456197 }, ] [[package]] name = "mkdocs-material" -version = "9.6.15" +version = "9.6.20" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "babel" }, { name = "backrefs" }, + { name = "click" }, { name = "colorama" }, { name = "jinja2" }, { name = "markdown" }, @@ -1356,18 +1443,18 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/c1/f804ba2db2ddc2183e900befe7dad64339a34fa935034e1ab405289d0a97/mkdocs_material-9.6.15.tar.gz", hash = "sha256:64adf8fa8dba1a17905b6aee1894a5aafd966d4aeb44a11088519b0f5ca4f1b5", size = 3951836, upload_time = "2025-07-01T10:14:15.671Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ba/ee/6ed7fc739bd7591485c8bec67d5984508d3f2733e708f32714c21593341a/mkdocs_material-9.6.20.tar.gz", hash = "sha256:e1f84d21ec5fb730673c4259b2e0d39f8d32a3fef613e3a8e7094b012d43e790", size = 4037822 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/30/dda19f0495a9096b64b6b3c07c4bfcff1c76ee0fc521086d53593f18b4c0/mkdocs_material-9.6.15-py3-none-any.whl", hash = "sha256:ac969c94d4fe5eb7c924b6d2f43d7db41159ea91553d18a9afc4780c34f2717a", size = 8716840, upload_time = "2025-07-01T10:14:13.18Z" }, + { url = "https://files.pythonhosted.org/packages/67/d8/a31dd52e657bf12b20574706d07df8d767e1ab4340f9bfb9ce73950e5e59/mkdocs_material-9.6.20-py3-none-any.whl", hash = "sha256:b8d8c8b0444c7c06dd984b55ba456ce731f0035c5a1533cc86793618eb1e6c82", size = 9193367 }, ] [[package]] name = "mkdocs-material-extensions" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847, upload_time = "2023-11-22T19:09:45.208Z" } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload_time = "2023-11-22T19:09:43.465Z" }, + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, ] [[package]] @@ -1380,9 +1467,9 @@ dependencies = [ { name = "jsmin" }, { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/52/67/fe4b77e7a8ae7628392e28b14122588beaf6078b53eb91c7ed000fd158ac/mkdocs-minify-plugin-0.8.0.tar.gz", hash = "sha256:bc11b78b8120d79e817308e2b11539d790d21445eb63df831e393f76e52e753d", size = 8366, upload_time = "2024-01-29T16:11:32.982Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/67/fe4b77e7a8ae7628392e28b14122588beaf6078b53eb91c7ed000fd158ac/mkdocs-minify-plugin-0.8.0.tar.gz", hash = "sha256:bc11b78b8120d79e817308e2b11539d790d21445eb63df831e393f76e52e753d", size = 8366 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1b/cd/2e8d0d92421916e2ea4ff97f10a544a9bd5588eb747556701c983581df13/mkdocs_minify_plugin-0.8.0-py3-none-any.whl", hash = "sha256:5fba1a3f7bd9a2142c9954a6559a57e946587b21f133165ece30ea145c66aee6", size = 6723, upload_time = "2024-01-29T16:11:31.851Z" }, + { url = "https://files.pythonhosted.org/packages/1b/cd/2e8d0d92421916e2ea4ff97f10a544a9bd5588eb747556701c983581df13/mkdocs_minify_plugin-0.8.0-py3-none-any.whl", hash = "sha256:5fba1a3f7bd9a2142c9954a6559a57e946587b21f133165ece30ea145c66aee6", size = 6723 }, ] [[package]] @@ -1392,9 +1479,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0a/0e/f72a506a21bdb27b807124e00c688226848a388d1fd3980b80ae3cc27203/mkdocs_open_in_new_tab-1.0.8.tar.gz", hash = "sha256:3e0dad08cc9938b0b13097be8e0aa435919de1eeb2d1a648e66b5dee8d57e048", size = 5791, upload_time = "2024-11-18T13:15:13.977Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/0e/f72a506a21bdb27b807124e00c688226848a388d1fd3980b80ae3cc27203/mkdocs_open_in_new_tab-1.0.8.tar.gz", hash = "sha256:3e0dad08cc9938b0b13097be8e0aa435919de1eeb2d1a648e66b5dee8d57e048", size = 5791 } wheels = [ - { url = "https://files.pythonhosted.org/packages/21/94/44f3c868495481c868d08eea065c82803f1affd8553d3383b782f497613c/mkdocs_open_in_new_tab-1.0.8-py3-none-any.whl", hash = "sha256:051d767a4467b12d89827e1fea0ec660b05b027c726317fe4fceee5456e36ad2", size = 7717, upload_time = "2024-11-18T13:15:12.286Z" }, + { url = "https://files.pythonhosted.org/packages/21/94/44f3c868495481c868d08eea065c82803f1affd8553d3383b782f497613c/mkdocs_open_in_new_tab-1.0.8-py3-none-any.whl", hash = "sha256:051d767a4467b12d89827e1fea0ec660b05b027c726317fe4fceee5456e36ad2", size = 7717 }, ] [[package]] @@ -1404,9 +1491,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f1/a8/6d44a6cf07e969c7420cb36ab287b0669da636a2044de38a7d2208d5a758/mkdocs_redirects-1.2.2.tar.gz", hash = "sha256:3094981b42ffab29313c2c1b8ac3969861109f58b2dd58c45fc81cd44bfa0095", size = 7162, upload_time = "2024-11-07T14:57:21.109Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f1/a8/6d44a6cf07e969c7420cb36ab287b0669da636a2044de38a7d2208d5a758/mkdocs_redirects-1.2.2.tar.gz", hash = "sha256:3094981b42ffab29313c2c1b8ac3969861109f58b2dd58c45fc81cd44bfa0095", size = 7162 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/ec/38443b1f2a3821bbcb24e46cd8ba979154417794d54baf949fefde1c2146/mkdocs_redirects-1.2.2-py3-none-any.whl", hash = "sha256:7dbfa5647b79a3589da4401403d69494bd1f4ad03b9c15136720367e1f340ed5", size = 6142, upload_time = "2024-11-07T14:57:19.143Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ec/38443b1f2a3821bbcb24e46cd8ba979154417794d54baf949fefde1c2146/mkdocs_redirects-1.2.2-py3-none-any.whl", hash = "sha256:7dbfa5647b79a3589da4401403d69494bd1f4ad03b9c15136720367e1f340ed5", size = 6142 }, ] [[package]] @@ -1419,9 +1506,9 @@ dependencies = [ { name = "pyyaml" }, { name = "tabulate" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a1/1b/ca35e4b51a1814924153f7c8afa5a9c2f961688a9c275fa9f4afe7f5083a/mkdocs_table_reader_plugin-3.1.0.tar.gz", hash = "sha256:eb15688ee8c0cd1a842f506f18973b87be22bd7baa5e2e551089de6b7f9ec25b", size = 12510, upload_time = "2024-08-29T14:08:09.54Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/1b/ca35e4b51a1814924153f7c8afa5a9c2f961688a9c275fa9f4afe7f5083a/mkdocs_table_reader_plugin-3.1.0.tar.gz", hash = "sha256:eb15688ee8c0cd1a842f506f18973b87be22bd7baa5e2e551089de6b7f9ec25b", size = 12510 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/6f/dcc966874f74f8580b99d2ffecbdc85dfd00c4a5039fedbee4ddd7fc8c7f/mkdocs_table_reader_plugin-3.1.0-py3-none-any.whl", hash = "sha256:50a1302661c14d96b90ba0434ae96110441e0c653ce23559e3c6911fe79e7bd2", size = 10564, upload_time = "2024-08-29T14:08:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/b3/6f/dcc966874f74f8580b99d2ffecbdc85dfd00c4a5039fedbee4ddd7fc8c7f/mkdocs_table_reader_plugin-3.1.0-py3-none-any.whl", hash = "sha256:50a1302661c14d96b90ba0434ae96110441e0c653ce23559e3c6911fe79e7bd2", size = 10564 }, ] [[package]] @@ -1432,14 +1519,14 @@ dependencies = [ { name = "lxml" }, { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cf/16/45213649b6756744f36f31014fc8673df1d7c998bb9a801c2d769fff4114/mkdocs-video-1.5.0.tar.gz", hash = "sha256:0defc018f4b7927f8afffc4d8e039c84dfba636dffc5e25e2bfa8d6350bc8eca", size = 5633, upload_time = "2023-03-17T17:36:43.343Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/16/45213649b6756744f36f31014fc8673df1d7c998bb9a801c2d769fff4114/mkdocs-video-1.5.0.tar.gz", hash = "sha256:0defc018f4b7927f8afffc4d8e039c84dfba636dffc5e25e2bfa8d6350bc8eca", size = 5633 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/3a/b51e305eca21cdd58f4eb06973099ba0ea679b1f437a92a49f8fc576310e/mkdocs_video-1.5.0-py3-none-any.whl", hash = "sha256:b35613d4dacbac2dfa94d8c2600383cda14ad99a1fa1542b5fc4e9c6d19e9fe1", size = 6570, upload_time = "2023-03-17T17:36:40.776Z" }, + { url = "https://files.pythonhosted.org/packages/cc/3a/b51e305eca21cdd58f4eb06973099ba0ea679b1f437a92a49f8fc576310e/mkdocs_video-1.5.0-py3-none-any.whl", hash = "sha256:b35613d4dacbac2dfa94d8c2600383cda14ad99a1fa1542b5fc4e9c6d19e9fe1", size = 6570 }, ] [[package]] name = "mkdocstrings" -version = "0.29.1" +version = "0.30.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jinja2" }, @@ -1449,58 +1536,64 @@ dependencies = [ { name = "mkdocs-autorefs" }, { name = "pymdown-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/41/e8/d22922664a627a0d3d7ff4a6ca95800f5dde54f411982591b4621a76225d/mkdocstrings-0.29.1.tar.gz", hash = "sha256:8722f8f8c5cd75da56671e0a0c1bbed1df9946c0cef74794d6141b34011abd42", size = 1212686, upload_time = "2025-03-31T08:33:11.997Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c5/33/2fa3243439f794e685d3e694590d28469a9b8ea733af4b48c250a3ffc9a0/mkdocstrings-0.30.1.tar.gz", hash = "sha256:84a007aae9b707fb0aebfc9da23db4b26fc9ab562eb56e335e9ec480cb19744f", size = 106350 } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/14/22533a578bf8b187e05d67e2c1721ce10e3f526610eebaf7a149d557ea7a/mkdocstrings-0.29.1-py3-none-any.whl", hash = "sha256:37a9736134934eea89cbd055a513d40a020d87dfcae9e3052c2a6b8cd4af09b6", size = 1631075, upload_time = "2025-03-31T08:33:09.661Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2c/f0dc4e1ee7f618f5bff7e05898d20bf8b6e7fa612038f768bfa295f136a4/mkdocstrings-0.30.1-py3-none-any.whl", hash = "sha256:41bd71f284ca4d44a668816193e4025c950b002252081e387433656ae9a70a82", size = 36704 }, ] [[package]] name = "mkdocstrings-python" -version = "1.16.12" +version = "1.18.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "griffe" }, { name = "mkdocs-autorefs" }, { name = "mkdocstrings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ed/b886f8c714fd7cccc39b79646b627dbea84cd95c46be43459ef46852caf0/mkdocstrings_python-1.16.12.tar.gz", hash = "sha256:9b9eaa066e0024342d433e332a41095c4e429937024945fea511afe58f63175d", size = 206065, upload_time = "2025-06-03T12:52:49.276Z" } +sdist = { url = "https://files.pythonhosted.org/packages/95/ae/58ab2bfbee2792e92a98b97e872f7c003deb903071f75d8d83aa55db28fa/mkdocstrings_python-1.18.2.tar.gz", hash = "sha256:4ad536920a07b6336f50d4c6d5603316fafb1172c5c882370cbbc954770ad323", size = 207972 } wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/dd/a24ee3de56954bfafb6ede7cd63c2413bb842cc48eb45e41c43a05a33074/mkdocstrings_python-1.16.12-py3-none-any.whl", hash = "sha256:22ded3a63b3d823d57457a70ff9860d5a4de9e8b1e482876fc9baabaf6f5f374", size = 124287, upload_time = "2025-06-03T12:52:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/d5/8f/ce008599d9adebf33ed144e7736914385e8537f5fc686fdb7cceb8c22431/mkdocstrings_python-1.18.2-py3-none-any.whl", hash = "sha256:944fe6deb8f08f33fa936d538233c4036e9f53e840994f6146e8e94eb71b600d", size = 138215 }, ] [[package]] name = "mypy" -version = "1.16.1" +version = "1.18.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mypy-extensions" }, { name = "pathspec" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/81/69/92c7fa98112e4d9eb075a239caa4ef4649ad7d441545ccffbd5e34607cbb/mypy-1.16.1.tar.gz", hash = "sha256:6bd00a0a2094841c5e47e7374bb42b83d64c527a502e3334e1173a0c24437bab", size = 3324747, upload_time = "2025-06-16T16:51:35.145Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b4/d6/39482e5fcc724c15bf6280ff5806548c7185e0c090712a3736ed4d07e8b7/mypy-1.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:af4792433f09575d9eeca5c63d7d90ca4aeceda9d8355e136f80f8967639183d", size = 11066493, upload_time = "2025-06-16T16:47:01.683Z" }, - { url = "https://files.pythonhosted.org/packages/e6/e5/26c347890efc6b757f4d5bb83f4a0cf5958b8cf49c938ac99b8b72b420a6/mypy-1.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:66df38405fd8466ce3517eda1f6640611a0b8e70895e2a9462d1d4323c5eb4b9", size = 10081687, upload_time = "2025-06-16T16:48:19.367Z" }, - { url = "https://files.pythonhosted.org/packages/44/c7/b5cb264c97b86914487d6a24bd8688c0172e37ec0f43e93b9691cae9468b/mypy-1.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:44e7acddb3c48bd2713994d098729494117803616e116032af192871aed80b79", size = 11839723, upload_time = "2025-06-16T16:49:20.912Z" }, - { url = "https://files.pythonhosted.org/packages/15/f8/491997a9b8a554204f834ed4816bda813aefda31cf873bb099deee3c9a99/mypy-1.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0ab5eca37b50188163fa7c1b73c685ac66c4e9bdee4a85c9adac0e91d8895e15", size = 12722980, upload_time = "2025-06-16T16:37:40.929Z" }, - { url = "https://files.pythonhosted.org/packages/df/f0/2bd41e174b5fd93bc9de9a28e4fb673113633b8a7f3a607fa4a73595e468/mypy-1.16.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb6229b2c9086247e21a83c309754b9058b438704ad2f6807f0d8227f6ebdd", size = 12903328, upload_time = "2025-06-16T16:34:35.099Z" }, - { url = "https://files.pythonhosted.org/packages/61/81/5572108a7bec2c46b8aff7e9b524f371fe6ab5efb534d38d6b37b5490da8/mypy-1.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:1f0435cf920e287ff68af3d10a118a73f212deb2ce087619eb4e648116d1fe9b", size = 9562321, upload_time = "2025-06-16T16:48:58.823Z" }, - { url = "https://files.pythonhosted.org/packages/28/e3/96964af4a75a949e67df4b95318fe2b7427ac8189bbc3ef28f92a1c5bc56/mypy-1.16.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ddc91eb318c8751c69ddb200a5937f1232ee8efb4e64e9f4bc475a33719de438", size = 11063480, upload_time = "2025-06-16T16:47:56.205Z" }, - { url = "https://files.pythonhosted.org/packages/f5/4d/cd1a42b8e5be278fab7010fb289d9307a63e07153f0ae1510a3d7b703193/mypy-1.16.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:87ff2c13d58bdc4bbe7dc0dedfe622c0f04e2cb2a492269f3b418df2de05c536", size = 10090538, upload_time = "2025-06-16T16:46:43.92Z" }, - { url = "https://files.pythonhosted.org/packages/c9/4f/c3c6b4b66374b5f68bab07c8cabd63a049ff69796b844bc759a0ca99bb2a/mypy-1.16.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0a7cfb0fe29fe5a9841b7c8ee6dffb52382c45acdf68f032145b75620acfbd6f", size = 11836839, upload_time = "2025-06-16T16:36:28.039Z" }, - { url = "https://files.pythonhosted.org/packages/b4/7e/81ca3b074021ad9775e5cb97ebe0089c0f13684b066a750b7dc208438403/mypy-1.16.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:051e1677689c9d9578b9c7f4d206d763f9bbd95723cd1416fad50db49d52f359", size = 12715634, upload_time = "2025-06-16T16:50:34.441Z" }, - { url = "https://files.pythonhosted.org/packages/e9/95/bdd40c8be346fa4c70edb4081d727a54d0a05382d84966869738cfa8a497/mypy-1.16.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:d5d2309511cc56c021b4b4e462907c2b12f669b2dbeb68300110ec27723971be", size = 12895584, upload_time = "2025-06-16T16:34:54.857Z" }, - { url = "https://files.pythonhosted.org/packages/5a/fd/d486a0827a1c597b3b48b1bdef47228a6e9ee8102ab8c28f944cb83b65dc/mypy-1.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:4f58ac32771341e38a853c5d0ec0dfe27e18e27da9cdb8bbc882d2249c71a3ee", size = 9573886, upload_time = "2025-06-16T16:36:43.589Z" }, - { url = "https://files.pythonhosted.org/packages/cf/d3/53e684e78e07c1a2bf7105715e5edd09ce951fc3f47cf9ed095ec1b7a037/mypy-1.16.1-py3-none-any.whl", hash = "sha256:5fc2ac4027d0ef28d6ba69a0343737a23c4d1b83672bf38d1fe237bdc0643b37", size = 2265923, upload_time = "2025-06-16T16:48:02.366Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/c0/77/8f0d0001ffad290cef2f7f216f96c814866248a0b92a722365ed54648e7e/mypy-1.18.2.tar.gz", hash = "sha256:06a398102a5f203d7477b2923dda3634c36727fa5c237d8f859ef90c42a9924b", size = 3448846 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/06/dfdd2bc60c66611dd8335f463818514733bc763e4760dee289dcc33df709/mypy-1.18.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33eca32dd124b29400c31d7cf784e795b050ace0e1f91b8dc035672725617e34", size = 12908273 }, + { url = "https://files.pythonhosted.org/packages/81/14/6a9de6d13a122d5608e1a04130724caf9170333ac5a924e10f670687d3eb/mypy-1.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3c47adf30d65e89b2dcd2fa32f3aeb5e94ca970d2c15fcb25e297871c8e4764", size = 11920910 }, + { url = "https://files.pythonhosted.org/packages/5f/a9/b29de53e42f18e8cc547e38daa9dfa132ffdc64f7250e353f5c8cdd44bee/mypy-1.18.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d6c838e831a062f5f29d11c9057c6009f60cb294fea33a98422688181fe2893", size = 12465585 }, + { url = "https://files.pythonhosted.org/packages/77/ae/6c3d2c7c61ff21f2bee938c917616c92ebf852f015fb55917fd6e2811db2/mypy-1.18.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01199871b6110a2ce984bde85acd481232d17413868c9807e95c1b0739a58914", size = 13348562 }, + { url = "https://files.pythonhosted.org/packages/4d/31/aec68ab3b4aebdf8f36d191b0685d99faa899ab990753ca0fee60fb99511/mypy-1.18.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a2afc0fa0b0e91b4599ddfe0f91e2c26c2b5a5ab263737e998d6817874c5f7c8", size = 13533296 }, + { url = "https://files.pythonhosted.org/packages/9f/83/abcb3ad9478fca3ebeb6a5358bb0b22c95ea42b43b7789c7fb1297ca44f4/mypy-1.18.2-cp312-cp312-win_amd64.whl", hash = "sha256:d8068d0afe682c7c4897c0f7ce84ea77f6de953262b12d07038f4d296d547074", size = 9828828 }, + { url = "https://files.pythonhosted.org/packages/5f/04/7f462e6fbba87a72bc8097b93f6842499c428a6ff0c81dd46948d175afe8/mypy-1.18.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:07b8b0f580ca6d289e69209ec9d3911b4a26e5abfde32228a288eb79df129fcc", size = 12898728 }, + { url = "https://files.pythonhosted.org/packages/99/5b/61ed4efb64f1871b41fd0b82d29a64640f3516078f6c7905b68ab1ad8b13/mypy-1.18.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ed4482847168439651d3feee5833ccedbf6657e964572706a2adb1f7fa4dfe2e", size = 11910758 }, + { url = "https://files.pythonhosted.org/packages/3c/46/d297d4b683cc89a6e4108c4250a6a6b717f5fa96e1a30a7944a6da44da35/mypy-1.18.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3ad2afadd1e9fea5cf99a45a822346971ede8685cc581ed9cd4d42eaf940986", size = 12475342 }, + { url = "https://files.pythonhosted.org/packages/83/45/4798f4d00df13eae3bfdf726c9244bcb495ab5bd588c0eed93a2f2dd67f3/mypy-1.18.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a431a6f1ef14cf8c144c6b14793a23ec4eae3db28277c358136e79d7d062f62d", size = 13338709 }, + { url = "https://files.pythonhosted.org/packages/d7/09/479f7358d9625172521a87a9271ddd2441e1dab16a09708f056e97007207/mypy-1.18.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7ab28cc197f1dd77a67e1c6f35cd1f8e8b73ed2217e4fc005f9e6a504e46e7ba", size = 13529806 }, + { url = "https://files.pythonhosted.org/packages/71/cf/ac0f2c7e9d0ea3c75cd99dff7aec1c9df4a1376537cb90e4c882267ee7e9/mypy-1.18.2-cp313-cp313-win_amd64.whl", hash = "sha256:0e2785a84b34a72ba55fb5daf079a1003a34c05b22238da94fcae2bbe46f3544", size = 9833262 }, + { url = "https://files.pythonhosted.org/packages/5a/0c/7d5300883da16f0063ae53996358758b2a2df2a09c72a5061fa79a1f5006/mypy-1.18.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:62f0e1e988ad41c2a110edde6c398383a889d95b36b3e60bcf155f5164c4fdce", size = 12893775 }, + { url = "https://files.pythonhosted.org/packages/50/df/2cffbf25737bdb236f60c973edf62e3e7b4ee1c25b6878629e88e2cde967/mypy-1.18.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8795a039bab805ff0c1dfdb8cd3344642c2b99b8e439d057aba30850b8d3423d", size = 11936852 }, + { url = "https://files.pythonhosted.org/packages/be/50/34059de13dd269227fb4a03be1faee6e2a4b04a2051c82ac0a0b5a773c9a/mypy-1.18.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ca1e64b24a700ab5ce10133f7ccd956a04715463d30498e64ea8715236f9c9c", size = 12480242 }, + { url = "https://files.pythonhosted.org/packages/5b/11/040983fad5132d85914c874a2836252bbc57832065548885b5bb5b0d4359/mypy-1.18.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d924eef3795cc89fecf6bedc6ed32b33ac13e8321344f6ddbf8ee89f706c05cb", size = 13326683 }, + { url = "https://files.pythonhosted.org/packages/e9/ba/89b2901dd77414dd7a8c8729985832a5735053be15b744c18e4586e506ef/mypy-1.18.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20c02215a080e3a2be3aa50506c67242df1c151eaba0dcbc1e4e557922a26075", size = 13514749 }, + { url = "https://files.pythonhosted.org/packages/25/bc/cc98767cffd6b2928ba680f3e5bc969c4152bf7c2d83f92f5a504b92b0eb/mypy-1.18.2-cp314-cp314-win_amd64.whl", hash = "sha256:749b5f83198f1ca64345603118a6f01a4e99ad4bf9d103ddc5a3200cc4614adf", size = 9982959 }, + { url = "https://files.pythonhosted.org/packages/87/e3/be76d87158ebafa0309946c4a73831974d4d6ab4f4ef40c3b53a385a66fd/mypy-1.18.2-py3-none-any.whl", hash = "sha256:22a1748707dd62b58d2ae53562ffc4d7f8bcc727e8ac7cbc69c053ddc874d47e", size = 2352367 }, ] [[package]] name = "mypy-extensions" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload_time = "2025-04-22T14:54:24.164Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload_time = "2025-04-22T14:54:22.983Z" }, + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 }, ] [[package]] @@ -1513,9 +1606,9 @@ dependencies = [ { name = "nbformat" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload_time = "2024-12-19T10:32:27.164Z" } +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424 } wheels = [ - { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload_time = "2024-12-19T10:32:24.139Z" }, + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434 }, ] [[package]] @@ -1538,9 +1631,9 @@ dependencies = [ { name = "pygments" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload_time = "2025-01-28T09:29:14.724Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload_time = "2025-01-28T09:29:12.551Z" }, + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525 }, ] [[package]] @@ -1553,77 +1646,99 @@ dependencies = [ { name = "jupyter-core" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload_time = "2024-04-04T11:20:37.371Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload_time = "2024-04-04T11:20:34.895Z" }, + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454 }, ] [[package]] name = "nest-asyncio" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload_time = "2024-01-21T14:25:19.227Z" } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload_time = "2024-01-21T14:25:17.223Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, ] [[package]] name = "networkx" version = "3.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065, upload_time = "2025-05-29T11:35:07.804Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065 } wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload_time = "2025-05-29T11:35:04.961Z" }, + { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406 }, ] [[package]] name = "nodeenv" version = "1.9.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload_time = "2024-06-04T18:44:11.171Z" } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload_time = "2024-06-04T18:44:08.352Z" }, + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, ] [[package]] name = "numpy" -version = "2.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2e/19/d7c972dfe90a353dbd3efbbe1d14a5951de80c99c9dc1b93cd998d51dc0f/numpy-2.3.1.tar.gz", hash = "sha256:1ec9ae20a4226da374362cca3c62cd753faf2f951440b0e3b98e93c235441d2b", size = 20390372, upload_time = "2025-06-21T12:28:33.469Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/56/71ad5022e2f63cfe0ca93559403d0edef14aea70a841d640bd13cdba578e/numpy-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2959d8f268f3d8ee402b04a9ec4bb7604555aeacf78b360dc4ec27f1d508177d", size = 20896664, upload_time = "2025-06-21T12:15:30.845Z" }, - { url = "https://files.pythonhosted.org/packages/25/65/2db52ba049813670f7f987cc5db6dac9be7cd95e923cc6832b3d32d87cef/numpy-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:762e0c0c6b56bdedfef9a8e1d4538556438288c4276901ea008ae44091954e29", size = 14131078, upload_time = "2025-06-21T12:15:52.23Z" }, - { url = "https://files.pythonhosted.org/packages/57/dd/28fa3c17b0e751047ac928c1e1b6990238faad76e9b147e585b573d9d1bd/numpy-2.3.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:867ef172a0976aaa1f1d1b63cf2090de8b636a7674607d514505fb7276ab08fc", size = 5112554, upload_time = "2025-06-21T12:16:01.434Z" }, - { url = "https://files.pythonhosted.org/packages/c9/fc/84ea0cba8e760c4644b708b6819d91784c290288c27aca916115e3311d17/numpy-2.3.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:4e602e1b8682c2b833af89ba641ad4176053aaa50f5cacda1a27004352dde943", size = 6646560, upload_time = "2025-06-21T12:16:11.895Z" }, - { url = "https://files.pythonhosted.org/packages/61/b2/512b0c2ddec985ad1e496b0bd853eeb572315c0f07cd6997473ced8f15e2/numpy-2.3.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:8e333040d069eba1652fb08962ec5b76af7f2c7bce1df7e1418c8055cf776f25", size = 14260638, upload_time = "2025-06-21T12:16:32.611Z" }, - { url = "https://files.pythonhosted.org/packages/6e/45/c51cb248e679a6c6ab14b7a8e3ead3f4a3fe7425fc7a6f98b3f147bec532/numpy-2.3.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:e7cbf5a5eafd8d230a3ce356d892512185230e4781a361229bd902ff403bc660", size = 16632729, upload_time = "2025-06-21T12:16:57.439Z" }, - { url = "https://files.pythonhosted.org/packages/e4/ff/feb4be2e5c09a3da161b412019caf47183099cbea1132fd98061808c2df2/numpy-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5f1b8f26d1086835f442286c1d9b64bb3974b0b1e41bb105358fd07d20872952", size = 15565330, upload_time = "2025-06-21T12:17:20.638Z" }, - { url = "https://files.pythonhosted.org/packages/bc/6d/ceafe87587101e9ab0d370e4f6e5f3f3a85b9a697f2318738e5e7e176ce3/numpy-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ee8340cb48c9b7a5899d1149eece41ca535513a9698098edbade2a8e7a84da77", size = 18361734, upload_time = "2025-06-21T12:17:47.938Z" }, - { url = "https://files.pythonhosted.org/packages/2b/19/0fb49a3ea088be691f040c9bf1817e4669a339d6e98579f91859b902c636/numpy-2.3.1-cp312-cp312-win32.whl", hash = "sha256:e772dda20a6002ef7061713dc1e2585bc1b534e7909b2030b5a46dae8ff077ab", size = 6320411, upload_time = "2025-06-21T12:17:58.475Z" }, - { url = "https://files.pythonhosted.org/packages/b1/3e/e28f4c1dd9e042eb57a3eb652f200225e311b608632bc727ae378623d4f8/numpy-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:cfecc7822543abdea6de08758091da655ea2210b8ffa1faf116b940693d3df76", size = 12734973, upload_time = "2025-06-21T12:18:17.601Z" }, - { url = "https://files.pythonhosted.org/packages/04/a8/8a5e9079dc722acf53522b8f8842e79541ea81835e9b5483388701421073/numpy-2.3.1-cp312-cp312-win_arm64.whl", hash = "sha256:7be91b2239af2658653c5bb6f1b8bccafaf08226a258caf78ce44710a0160d30", size = 10191491, upload_time = "2025-06-21T12:18:33.585Z" }, - { url = "https://files.pythonhosted.org/packages/d4/bd/35ad97006d8abff8631293f8ea6adf07b0108ce6fec68da3c3fcca1197f2/numpy-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:25a1992b0a3fdcdaec9f552ef10d8103186f5397ab45e2d25f8ac51b1a6b97e8", size = 20889381, upload_time = "2025-06-21T12:19:04.103Z" }, - { url = "https://files.pythonhosted.org/packages/f1/4f/df5923874d8095b6062495b39729178eef4a922119cee32a12ee1bd4664c/numpy-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7dea630156d39b02a63c18f508f85010230409db5b2927ba59c8ba4ab3e8272e", size = 14152726, upload_time = "2025-06-21T12:19:25.599Z" }, - { url = "https://files.pythonhosted.org/packages/8c/0f/a1f269b125806212a876f7efb049b06c6f8772cf0121139f97774cd95626/numpy-2.3.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:bada6058dd886061f10ea15f230ccf7dfff40572e99fef440a4a857c8728c9c0", size = 5105145, upload_time = "2025-06-21T12:19:34.782Z" }, - { url = "https://files.pythonhosted.org/packages/6d/63/a7f7fd5f375b0361682f6ffbf686787e82b7bbd561268e4f30afad2bb3c0/numpy-2.3.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:a894f3816eb17b29e4783e5873f92faf55b710c2519e5c351767c51f79d8526d", size = 6639409, upload_time = "2025-06-21T12:19:45.228Z" }, - { url = "https://files.pythonhosted.org/packages/bf/0d/1854a4121af895aab383f4aa233748f1df4671ef331d898e32426756a8a6/numpy-2.3.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:18703df6c4a4fee55fd3d6e5a253d01c5d33a295409b03fda0c86b3ca2ff41a1", size = 14257630, upload_time = "2025-06-21T12:20:06.544Z" }, - { url = "https://files.pythonhosted.org/packages/50/30/af1b277b443f2fb08acf1c55ce9d68ee540043f158630d62cef012750f9f/numpy-2.3.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:5902660491bd7a48b2ec16c23ccb9124b8abfd9583c5fdfa123fe6b421e03de1", size = 16627546, upload_time = "2025-06-21T12:20:31.002Z" }, - { url = "https://files.pythonhosted.org/packages/6e/ec/3b68220c277e463095342d254c61be8144c31208db18d3fd8ef02712bcd6/numpy-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:36890eb9e9d2081137bd78d29050ba63b8dab95dff7912eadf1185e80074b2a0", size = 15562538, upload_time = "2025-06-21T12:20:54.322Z" }, - { url = "https://files.pythonhosted.org/packages/77/2b/4014f2bcc4404484021c74d4c5ee8eb3de7e3f7ac75f06672f8dcf85140a/numpy-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a780033466159c2270531e2b8ac063704592a0bc62ec4a1b991c7c40705eb0e8", size = 18360327, upload_time = "2025-06-21T12:21:21.053Z" }, - { url = "https://files.pythonhosted.org/packages/40/8d/2ddd6c9b30fcf920837b8672f6c65590c7d92e43084c25fc65edc22e93ca/numpy-2.3.1-cp313-cp313-win32.whl", hash = "sha256:39bff12c076812595c3a306f22bfe49919c5513aa1e0e70fac756a0be7c2a2b8", size = 6312330, upload_time = "2025-06-21T12:25:07.447Z" }, - { url = "https://files.pythonhosted.org/packages/dd/c8/beaba449925988d415efccb45bf977ff8327a02f655090627318f6398c7b/numpy-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:8d5ee6eec45f08ce507a6570e06f2f879b374a552087a4179ea7838edbcbfa42", size = 12731565, upload_time = "2025-06-21T12:25:26.444Z" }, - { url = "https://files.pythonhosted.org/packages/0b/c3/5c0c575d7ec78c1126998071f58facfc124006635da75b090805e642c62e/numpy-2.3.1-cp313-cp313-win_arm64.whl", hash = "sha256:0c4d9e0a8368db90f93bd192bfa771ace63137c3488d198ee21dfb8e7771916e", size = 10190262, upload_time = "2025-06-21T12:25:42.196Z" }, - { url = "https://files.pythonhosted.org/packages/ea/19/a029cd335cf72f79d2644dcfc22d90f09caa86265cbbde3b5702ccef6890/numpy-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:b0b5397374f32ec0649dd98c652a1798192042e715df918c20672c62fb52d4b8", size = 20987593, upload_time = "2025-06-21T12:21:51.664Z" }, - { url = "https://files.pythonhosted.org/packages/25/91/8ea8894406209107d9ce19b66314194675d31761fe2cb3c84fe2eeae2f37/numpy-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c5bdf2015ccfcee8253fb8be695516ac4457c743473a43290fd36eba6a1777eb", size = 14300523, upload_time = "2025-06-21T12:22:13.583Z" }, - { url = "https://files.pythonhosted.org/packages/a6/7f/06187b0066eefc9e7ce77d5f2ddb4e314a55220ad62dd0bfc9f2c44bac14/numpy-2.3.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:d70f20df7f08b90a2062c1f07737dd340adccf2068d0f1b9b3d56e2038979fee", size = 5227993, upload_time = "2025-06-21T12:22:22.53Z" }, - { url = "https://files.pythonhosted.org/packages/e8/ec/a926c293c605fa75e9cfb09f1e4840098ed46d2edaa6e2152ee35dc01ed3/numpy-2.3.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:2fb86b7e58f9ac50e1e9dd1290154107e47d1eef23a0ae9145ded06ea606f992", size = 6736652, upload_time = "2025-06-21T12:22:33.629Z" }, - { url = "https://files.pythonhosted.org/packages/e3/62/d68e52fb6fde5586650d4c0ce0b05ff3a48ad4df4ffd1b8866479d1d671d/numpy-2.3.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:23ab05b2d241f76cb883ce8b9a93a680752fbfcbd51c50eff0b88b979e471d8c", size = 14331561, upload_time = "2025-06-21T12:22:55.056Z" }, - { url = "https://files.pythonhosted.org/packages/fc/ec/b74d3f2430960044bdad6900d9f5edc2dc0fb8bf5a0be0f65287bf2cbe27/numpy-2.3.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:ce2ce9e5de4703a673e705183f64fd5da5bf36e7beddcb63a25ee2286e71ca48", size = 16693349, upload_time = "2025-06-21T12:23:20.53Z" }, - { url = "https://files.pythonhosted.org/packages/0d/15/def96774b9d7eb198ddadfcbd20281b20ebb510580419197e225f5c55c3e/numpy-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c4913079974eeb5c16ccfd2b1f09354b8fed7e0d6f2cab933104a09a6419b1ee", size = 15642053, upload_time = "2025-06-21T12:23:43.697Z" }, - { url = "https://files.pythonhosted.org/packages/2b/57/c3203974762a759540c6ae71d0ea2341c1fa41d84e4971a8e76d7141678a/numpy-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:010ce9b4f00d5c036053ca684c77441f2f2c934fd23bee058b4d6f196efd8280", size = 18434184, upload_time = "2025-06-21T12:24:10.708Z" }, - { url = "https://files.pythonhosted.org/packages/22/8a/ccdf201457ed8ac6245187850aff4ca56a79edbea4829f4e9f14d46fa9a5/numpy-2.3.1-cp313-cp313t-win32.whl", hash = "sha256:6269b9edfe32912584ec496d91b00b6d34282ca1d07eb10e82dfc780907d6c2e", size = 6440678, upload_time = "2025-06-21T12:24:21.596Z" }, - { url = "https://files.pythonhosted.org/packages/f1/7e/7f431d8bd8eb7e03d79294aed238b1b0b174b3148570d03a8a8a8f6a0da9/numpy-2.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:2a809637460e88a113e186e87f228d74ae2852a2e0c44de275263376f17b5bdc", size = 12870697, upload_time = "2025-06-21T12:24:40.644Z" }, - { url = "https://files.pythonhosted.org/packages/d4/ca/af82bf0fad4c3e573c6930ed743b5308492ff19917c7caaf2f9b6f9e2e98/numpy-2.3.1-cp313-cp313t-win_arm64.whl", hash = "sha256:eccb9a159db9aed60800187bc47a6d3451553f0e1b08b068d8b277ddfbb9b244", size = 10260376, upload_time = "2025-06-21T12:24:56.884Z" }, +version = "2.3.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d0/19/95b3d357407220ed24c139018d2518fab0a61a948e68286a25f1a4d049ff/numpy-2.3.3.tar.gz", hash = "sha256:ddc7c39727ba62b80dfdbedf400d1c10ddfa8eefbd7ec8dcb118be8b56d31029", size = 20576648 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/5d/bb7fc075b762c96329147799e1bcc9176ab07ca6375ea976c475482ad5b3/numpy-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cfdd09f9c84a1a934cde1eec2267f0a43a7cd44b2cca4ff95b7c0d14d144b0bf", size = 20957014 }, + { url = "https://files.pythonhosted.org/packages/6b/0e/c6211bb92af26517acd52125a237a92afe9c3124c6a68d3b9f81b62a0568/numpy-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb32e3cf0f762aee47ad1ddc6672988f7f27045b0783c887190545baba73aa25", size = 14185220 }, + { url = "https://files.pythonhosted.org/packages/22/f2/07bb754eb2ede9073f4054f7c0286b0d9d2e23982e090a80d478b26d35ca/numpy-2.3.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396b254daeb0a57b1fe0ecb5e3cff6fa79a380fa97c8f7781a6d08cd429418fe", size = 5113918 }, + { url = "https://files.pythonhosted.org/packages/81/0a/afa51697e9fb74642f231ea36aca80fa17c8fb89f7a82abd5174023c3960/numpy-2.3.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:067e3d7159a5d8f8a0b46ee11148fc35ca9b21f61e3c49fbd0a027450e65a33b", size = 6647922 }, + { url = "https://files.pythonhosted.org/packages/5d/f5/122d9cdb3f51c520d150fef6e87df9279e33d19a9611a87c0d2cf78a89f4/numpy-2.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c02d0629d25d426585fb2e45a66154081b9fa677bc92a881ff1d216bc9919a8", size = 14281991 }, + { url = "https://files.pythonhosted.org/packages/51/64/7de3c91e821a2debf77c92962ea3fe6ac2bc45d0778c1cbe15d4fce2fd94/numpy-2.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9192da52b9745f7f0766531dcfa978b7763916f158bb63bdb8a1eca0068ab20", size = 16641643 }, + { url = "https://files.pythonhosted.org/packages/30/e4/961a5fa681502cd0d68907818b69f67542695b74e3ceaa513918103b7e80/numpy-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cd7de500a5b66319db419dc3c345244404a164beae0d0937283b907d8152e6ea", size = 16056787 }, + { url = "https://files.pythonhosted.org/packages/99/26/92c912b966e47fbbdf2ad556cb17e3a3088e2e1292b9833be1dfa5361a1a/numpy-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:93d4962d8f82af58f0b2eb85daaf1b3ca23fe0a85d0be8f1f2b7bb46034e56d7", size = 18579598 }, + { url = "https://files.pythonhosted.org/packages/17/b6/fc8f82cb3520768718834f310c37d96380d9dc61bfdaf05fe5c0b7653e01/numpy-2.3.3-cp312-cp312-win32.whl", hash = "sha256:5534ed6b92f9b7dca6c0a19d6df12d41c68b991cef051d108f6dbff3babc4ebf", size = 6320800 }, + { url = "https://files.pythonhosted.org/packages/32/ee/de999f2625b80d043d6d2d628c07d0d5555a677a3cf78fdf868d409b8766/numpy-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:497d7cad08e7092dba36e3d296fe4c97708c93daf26643a1ae4b03f6294d30eb", size = 12786615 }, + { url = "https://files.pythonhosted.org/packages/49/6e/b479032f8a43559c383acb20816644f5f91c88f633d9271ee84f3b3a996c/numpy-2.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:ca0309a18d4dfea6fc6262a66d06c26cfe4640c3926ceec90e57791a82b6eee5", size = 10195936 }, + { url = "https://files.pythonhosted.org/packages/7d/b9/984c2b1ee61a8b803bf63582b4ac4242cf76e2dbd663efeafcb620cc0ccb/numpy-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f5415fb78995644253370985342cd03572ef8620b934da27d77377a2285955bf", size = 20949588 }, + { url = "https://files.pythonhosted.org/packages/a6/e4/07970e3bed0b1384d22af1e9912527ecbeb47d3b26e9b6a3bced068b3bea/numpy-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d00de139a3324e26ed5b95870ce63be7ec7352171bc69a4cf1f157a48e3eb6b7", size = 14177802 }, + { url = "https://files.pythonhosted.org/packages/35/c7/477a83887f9de61f1203bad89cf208b7c19cc9fef0cebef65d5a1a0619f2/numpy-2.3.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9dc13c6a5829610cc07422bc74d3ac083bd8323f14e2827d992f9e52e22cd6a6", size = 5106537 }, + { url = "https://files.pythonhosted.org/packages/52/47/93b953bd5866a6f6986344d045a207d3f1cfbad99db29f534ea9cee5108c/numpy-2.3.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:d79715d95f1894771eb4e60fb23f065663b2298f7d22945d66877aadf33d00c7", size = 6640743 }, + { url = "https://files.pythonhosted.org/packages/23/83/377f84aaeb800b64c0ef4de58b08769e782edcefa4fea712910b6f0afd3c/numpy-2.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:952cfd0748514ea7c3afc729a0fc639e61655ce4c55ab9acfab14bda4f402b4c", size = 14278881 }, + { url = "https://files.pythonhosted.org/packages/9a/a5/bf3db6e66c4b160d6ea10b534c381a1955dfab34cb1017ea93aa33c70ed3/numpy-2.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b83648633d46f77039c29078751f80da65aa64d5622a3cd62aaef9d835b6c93", size = 16636301 }, + { url = "https://files.pythonhosted.org/packages/a2/59/1287924242eb4fa3f9b3a2c30400f2e17eb2707020d1c5e3086fe7330717/numpy-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b001bae8cea1c7dfdb2ae2b017ed0a6f2102d7a70059df1e338e307a4c78a8ae", size = 16053645 }, + { url = "https://files.pythonhosted.org/packages/e6/93/b3d47ed882027c35e94ac2320c37e452a549f582a5e801f2d34b56973c97/numpy-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e9aced64054739037d42fb84c54dd38b81ee238816c948c8f3ed134665dcd86", size = 18578179 }, + { url = "https://files.pythonhosted.org/packages/20/d9/487a2bccbf7cc9d4bfc5f0f197761a5ef27ba870f1e3bbb9afc4bbe3fcc2/numpy-2.3.3-cp313-cp313-win32.whl", hash = "sha256:9591e1221db3f37751e6442850429b3aabf7026d3b05542d102944ca7f00c8a8", size = 6312250 }, + { url = "https://files.pythonhosted.org/packages/1b/b5/263ebbbbcede85028f30047eab3d58028d7ebe389d6493fc95ae66c636ab/numpy-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f0dadeb302887f07431910f67a14d57209ed91130be0adea2f9793f1a4f817cf", size = 12783269 }, + { url = "https://files.pythonhosted.org/packages/fa/75/67b8ca554bbeaaeb3fac2e8bce46967a5a06544c9108ec0cf5cece559b6c/numpy-2.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:3c7cf302ac6e0b76a64c4aecf1a09e51abd9b01fc7feee80f6c43e3ab1b1dbc5", size = 10195314 }, + { url = "https://files.pythonhosted.org/packages/11/d0/0d1ddec56b162042ddfafeeb293bac672de9b0cfd688383590090963720a/numpy-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:eda59e44957d272846bb407aad19f89dc6f58fecf3504bd144f4c5cf81a7eacc", size = 21048025 }, + { url = "https://files.pythonhosted.org/packages/36/9e/1996ca6b6d00415b6acbdd3c42f7f03ea256e2c3f158f80bd7436a8a19f3/numpy-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:823d04112bc85ef5c4fda73ba24e6096c8f869931405a80aa8b0e604510a26bc", size = 14301053 }, + { url = "https://files.pythonhosted.org/packages/05/24/43da09aa764c68694b76e84b3d3f0c44cb7c18cdc1ba80e48b0ac1d2cd39/numpy-2.3.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:40051003e03db4041aa325da2a0971ba41cf65714e65d296397cc0e32de6018b", size = 5229444 }, + { url = "https://files.pythonhosted.org/packages/bc/14/50ffb0f22f7218ef8af28dd089f79f68289a7a05a208db9a2c5dcbe123c1/numpy-2.3.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ee9086235dd6ab7ae75aba5662f582a81ced49f0f1c6de4260a78d8f2d91a19", size = 6738039 }, + { url = "https://files.pythonhosted.org/packages/55/52/af46ac0795e09657d45a7f4db961917314377edecf66db0e39fa7ab5c3d3/numpy-2.3.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94fcaa68757c3e2e668ddadeaa86ab05499a70725811e582b6a9858dd472fb30", size = 14352314 }, + { url = "https://files.pythonhosted.org/packages/a7/b1/dc226b4c90eb9f07a3fff95c2f0db3268e2e54e5cce97c4ac91518aee71b/numpy-2.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da1a74b90e7483d6ce5244053399a614b1d6b7bc30a60d2f570e5071f8959d3e", size = 16701722 }, + { url = "https://files.pythonhosted.org/packages/9d/9d/9d8d358f2eb5eced14dba99f110d83b5cd9a4460895230f3b396ad19a323/numpy-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2990adf06d1ecee3b3dcbb4977dfab6e9f09807598d647f04d385d29e7a3c3d3", size = 16132755 }, + { url = "https://files.pythonhosted.org/packages/b6/27/b3922660c45513f9377b3fb42240bec63f203c71416093476ec9aa0719dc/numpy-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ed635ff692483b8e3f0fcaa8e7eb8a75ee71aa6d975388224f70821421800cea", size = 18651560 }, + { url = "https://files.pythonhosted.org/packages/5b/8e/3ab61a730bdbbc201bb245a71102aa609f0008b9ed15255500a99cd7f780/numpy-2.3.3-cp313-cp313t-win32.whl", hash = "sha256:a333b4ed33d8dc2b373cc955ca57babc00cd6f9009991d9edc5ddbc1bac36bcd", size = 6442776 }, + { url = "https://files.pythonhosted.org/packages/1c/3a/e22b766b11f6030dc2decdeff5c2fb1610768055603f9f3be88b6d192fb2/numpy-2.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4384a169c4d8f97195980815d6fcad04933a7e1ab3b530921c3fef7a1c63426d", size = 12927281 }, + { url = "https://files.pythonhosted.org/packages/7b/42/c2e2bc48c5e9b2a83423f99733950fbefd86f165b468a3d85d52b30bf782/numpy-2.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:75370986cc0bc66f4ce5110ad35aae6d182cc4ce6433c40ad151f53690130bf1", size = 10265275 }, + { url = "https://files.pythonhosted.org/packages/6b/01/342ad585ad82419b99bcf7cebe99e61da6bedb89e213c5fd71acc467faee/numpy-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cd052f1fa6a78dee696b58a914b7229ecfa41f0a6d96dc663c1220a55e137593", size = 20951527 }, + { url = "https://files.pythonhosted.org/packages/ef/d8/204e0d73fc1b7a9ee80ab1fe1983dd33a4d64a4e30a05364b0208e9a241a/numpy-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:414a97499480067d305fcac9716c29cf4d0d76db6ebf0bf3cbce666677f12652", size = 14186159 }, + { url = "https://files.pythonhosted.org/packages/22/af/f11c916d08f3a18fb8ba81ab72b5b74a6e42ead4c2846d270eb19845bf74/numpy-2.3.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:50a5fe69f135f88a2be9b6ca0481a68a136f6febe1916e4920e12f1a34e708a7", size = 5114624 }, + { url = "https://files.pythonhosted.org/packages/fb/11/0ed919c8381ac9d2ffacd63fd1f0c34d27e99cab650f0eb6f110e6ae4858/numpy-2.3.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:b912f2ed2b67a129e6a601e9d93d4fa37bef67e54cac442a2f588a54afe5c67a", size = 6642627 }, + { url = "https://files.pythonhosted.org/packages/ee/83/deb5f77cb0f7ba6cb52b91ed388b47f8f3c2e9930d4665c600408d9b90b9/numpy-2.3.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9e318ee0596d76d4cb3d78535dc005fa60e5ea348cd131a51e99d0bdbe0b54fe", size = 14296926 }, + { url = "https://files.pythonhosted.org/packages/77/cc/70e59dcb84f2b005d4f306310ff0a892518cc0c8000a33d0e6faf7ca8d80/numpy-2.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce020080e4a52426202bdb6f7691c65bb55e49f261f31a8f506c9f6bc7450421", size = 16638958 }, + { url = "https://files.pythonhosted.org/packages/b6/5a/b2ab6c18b4257e099587d5b7f903317bd7115333ad8d4ec4874278eafa61/numpy-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e6687dc183aa55dae4a705b35f9c0f8cb178bcaa2f029b241ac5356221d5c021", size = 16071920 }, + { url = "https://files.pythonhosted.org/packages/b8/f1/8b3fdc44324a259298520dd82147ff648979bed085feeacc1250ef1656c0/numpy-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d8f3b1080782469fdc1718c4ed1d22549b5fb12af0d57d35e992158a772a37cf", size = 18577076 }, + { url = "https://files.pythonhosted.org/packages/f0/a1/b87a284fb15a42e9274e7fcea0dad259d12ddbf07c1595b26883151ca3b4/numpy-2.3.3-cp314-cp314-win32.whl", hash = "sha256:cb248499b0bc3be66ebd6578b83e5acacf1d6cb2a77f2248ce0e40fbec5a76d0", size = 6366952 }, + { url = "https://files.pythonhosted.org/packages/70/5f/1816f4d08f3b8f66576d8433a66f8fa35a5acfb3bbd0bf6c31183b003f3d/numpy-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:691808c2b26b0f002a032c73255d0bd89751425f379f7bcd22d140db593a96e8", size = 12919322 }, + { url = "https://files.pythonhosted.org/packages/8c/de/072420342e46a8ea41c324a555fa90fcc11637583fb8df722936aed1736d/numpy-2.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:9ad12e976ca7b10f1774b03615a2a4bab8addce37ecc77394d8e986927dc0dfe", size = 10478630 }, + { url = "https://files.pythonhosted.org/packages/d5/df/ee2f1c0a9de7347f14da5dd3cd3c3b034d1b8607ccb6883d7dd5c035d631/numpy-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9cc48e09feb11e1db00b320e9d30a4151f7369afb96bd0e48d942d09da3a0d00", size = 21047987 }, + { url = "https://files.pythonhosted.org/packages/d6/92/9453bdc5a4e9e69cf4358463f25e8260e2ffc126d52e10038b9077815989/numpy-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:901bf6123879b7f251d3631967fd574690734236075082078e0571977c6a8e6a", size = 14301076 }, + { url = "https://files.pythonhosted.org/packages/13/77/1447b9eb500f028bb44253105bd67534af60499588a5149a94f18f2ca917/numpy-2.3.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f025652034199c301049296b59fa7d52c7e625017cae4c75d8662e377bf487d", size = 5229491 }, + { url = "https://files.pythonhosted.org/packages/3d/f9/d72221b6ca205f9736cb4b2ce3b002f6e45cd67cd6a6d1c8af11a2f0b649/numpy-2.3.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:533ca5f6d325c80b6007d4d7fb1984c303553534191024ec6a524a4c92a5935a", size = 6737913 }, + { url = "https://files.pythonhosted.org/packages/3c/5f/d12834711962ad9c46af72f79bb31e73e416ee49d17f4c797f72c96b6ca5/numpy-2.3.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0edd58682a399824633b66885d699d7de982800053acf20be1eaa46d92009c54", size = 14352811 }, + { url = "https://files.pythonhosted.org/packages/a1/0d/fdbec6629d97fd1bebed56cd742884e4eead593611bbe1abc3eb40d304b2/numpy-2.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:367ad5d8fbec5d9296d18478804a530f1191e24ab4d75ab408346ae88045d25e", size = 16702689 }, + { url = "https://files.pythonhosted.org/packages/9b/09/0a35196dc5575adde1eb97ddfbc3e1687a814f905377621d18ca9bc2b7dd/numpy-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8f6ac61a217437946a1fa48d24c47c91a0c4f725237871117dea264982128097", size = 16133855 }, + { url = "https://files.pythonhosted.org/packages/7a/ca/c9de3ea397d576f1b6753eaa906d4cdef1bf97589a6d9825a349b4729cc2/numpy-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:179a42101b845a816d464b6fe9a845dfaf308fdfc7925387195570789bb2c970", size = 18652520 }, + { url = "https://files.pythonhosted.org/packages/fd/c2/e5ed830e08cd0196351db55db82f65bc0ab05da6ef2b72a836dcf1936d2f/numpy-2.3.3-cp314-cp314t-win32.whl", hash = "sha256:1250c5d3d2562ec4174bce2e3a1523041595f9b651065e4a4473f5f48a6bc8a5", size = 6515371 }, + { url = "https://files.pythonhosted.org/packages/47/c7/b0f6b5b67f6788a0725f744496badbb604d226bf233ba716683ebb47b570/numpy-2.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:b37a0b2e5935409daebe82c1e42274d30d9dd355852529eab91dab8dcca7419f", size = 13112576 }, + { url = "https://files.pythonhosted.org/packages/06/b9/33bba5ff6fb679aa0b1f8a07e853f002a6b04b9394db3069a1270a7784ca/numpy-2.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:78c9f6560dc7e6b3990e32df7ea1a50bbd0e2a111e05209963f5ddcab7073b0b", size = 10545953 }, ] [[package]] @@ -1637,9 +1752,9 @@ dependencies = [ { name = "pyarrow" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1a/d1/5c0bb2a714ebea7df131b8e87010eab39d0df75878f6785f2a214ff66bb2/oda_reader-1.2.2.tar.gz", hash = "sha256:55be081e1744e75184eca3d09e794fad71958201d08b48fb497aac97a95f3685", size = 35630, upload_time = "2025-06-16T16:15:05.49Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1a/d1/5c0bb2a714ebea7df131b8e87010eab39d0df75878f6785f2a214ff66bb2/oda_reader-1.2.2.tar.gz", hash = "sha256:55be081e1744e75184eca3d09e794fad71958201d08b48fb497aac97a95f3685", size = 35630 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d8/ec/59338ec9108848dc53f50e7381b9817595bf98f414f4a732100a06828a3b/oda_reader-1.2.2-py3-none-any.whl", hash = "sha256:7f7b854ab1e9bc2cf64b6c63bd56a2ac64cb90ec054518fd01b741fd518cf007", size = 45314, upload_time = "2025-06-16T16:15:04.328Z" }, + { url = "https://files.pythonhosted.org/packages/d8/ec/59338ec9108848dc53f50e7381b9817595bf98f414f4a732100a06828a3b/oda_reader-1.2.2-py3-none-any.whl", hash = "sha256:7f7b854ab1e9bc2cf64b6c63bd56a2ac64cb90ec054518fd01b741fd518cf007", size = 45314 }, ] [[package]] @@ -1649,32 +1764,32 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "et-xmlfile" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload_time = "2024-06-28T14:03:44.161Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload_time = "2024-06-28T14:03:41.161Z" }, + { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910 }, ] [[package]] name = "packaging" version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload_time = "2025-04-19T11:48:59.673Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload_time = "2025-04-19T11:48:57.875Z" }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, ] [[package]] name = "paginate" version = "0.5.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload_time = "2024-08-25T14:17:24.139Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload_time = "2024-08-25T14:17:22.55Z" }, + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, ] [[package]] name = "pandas" -version = "2.3.1" +version = "2.3.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, @@ -1682,62 +1797,65 @@ dependencies = [ { name = "pytz" }, { name = "tzdata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d1/6f/75aa71f8a14267117adeeed5d21b204770189c0a0025acbdc03c337b28fc/pandas-2.3.1.tar.gz", hash = "sha256:0a95b9ac964fe83ce317827f80304d37388ea77616b1425f0ae41c9d2d0d7bb2", size = 4487493, upload_time = "2025-07-07T19:20:04.079Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/de/b8445e0f5d217a99fe0eeb2f4988070908979bec3587c0633e5428ab596c/pandas-2.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:689968e841136f9e542020698ee1c4fbe9caa2ed2213ae2388dc7b81721510d3", size = 11588172, upload_time = "2025-07-07T19:18:52.054Z" }, - { url = "https://files.pythonhosted.org/packages/1e/e0/801cdb3564e65a5ac041ab99ea6f1d802a6c325bb6e58c79c06a3f1cd010/pandas-2.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:025e92411c16cbe5bb2a4abc99732a6b132f439b8aab23a59fa593eb00704232", size = 10717365, upload_time = "2025-07-07T19:18:54.785Z" }, - { url = "https://files.pythonhosted.org/packages/51/a5/c76a8311833c24ae61a376dbf360eb1b1c9247a5d9c1e8b356563b31b80c/pandas-2.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9b7ff55f31c4fcb3e316e8f7fa194566b286d6ac430afec0d461163312c5841e", size = 11280411, upload_time = "2025-07-07T19:18:57.045Z" }, - { url = "https://files.pythonhosted.org/packages/da/01/e383018feba0a1ead6cf5fe8728e5d767fee02f06a3d800e82c489e5daaf/pandas-2.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7dcb79bf373a47d2a40cf7232928eb7540155abbc460925c2c96d2d30b006eb4", size = 11988013, upload_time = "2025-07-07T19:18:59.771Z" }, - { url = "https://files.pythonhosted.org/packages/5b/14/cec7760d7c9507f11c97d64f29022e12a6cc4fc03ac694535e89f88ad2ec/pandas-2.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:56a342b231e8862c96bdb6ab97170e203ce511f4d0429589c8ede1ee8ece48b8", size = 12767210, upload_time = "2025-07-07T19:19:02.944Z" }, - { url = "https://files.pythonhosted.org/packages/50/b9/6e2d2c6728ed29fb3d4d4d302504fb66f1a543e37eb2e43f352a86365cdf/pandas-2.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ca7ed14832bce68baef331f4d7f294411bed8efd032f8109d690df45e00c4679", size = 13440571, upload_time = "2025-07-07T19:19:06.82Z" }, - { url = "https://files.pythonhosted.org/packages/80/a5/3a92893e7399a691bad7664d977cb5e7c81cf666c81f89ea76ba2bff483d/pandas-2.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:ac942bfd0aca577bef61f2bc8da8147c4ef6879965ef883d8e8d5d2dc3e744b8", size = 10987601, upload_time = "2025-07-07T19:19:09.589Z" }, - { url = "https://files.pythonhosted.org/packages/32/ed/ff0a67a2c5505e1854e6715586ac6693dd860fbf52ef9f81edee200266e7/pandas-2.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:9026bd4a80108fac2239294a15ef9003c4ee191a0f64b90f170b40cfb7cf2d22", size = 11531393, upload_time = "2025-07-07T19:19:12.245Z" }, - { url = "https://files.pythonhosted.org/packages/c7/db/d8f24a7cc9fb0972adab0cc80b6817e8bef888cfd0024eeb5a21c0bb5c4a/pandas-2.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6de8547d4fdb12421e2d047a2c446c623ff4c11f47fddb6b9169eb98ffba485a", size = 10668750, upload_time = "2025-07-07T19:19:14.612Z" }, - { url = "https://files.pythonhosted.org/packages/0f/b0/80f6ec783313f1e2356b28b4fd8d2148c378370045da918c73145e6aab50/pandas-2.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:782647ddc63c83133b2506912cc6b108140a38a37292102aaa19c81c83db2928", size = 11342004, upload_time = "2025-07-07T19:19:16.857Z" }, - { url = "https://files.pythonhosted.org/packages/e9/e2/20a317688435470872885e7fc8f95109ae9683dec7c50be29b56911515a5/pandas-2.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba6aff74075311fc88504b1db890187a3cd0f887a5b10f5525f8e2ef55bfdb9", size = 12050869, upload_time = "2025-07-07T19:19:19.265Z" }, - { url = "https://files.pythonhosted.org/packages/55/79/20d746b0a96c67203a5bee5fb4e00ac49c3e8009a39e1f78de264ecc5729/pandas-2.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e5635178b387bd2ba4ac040f82bc2ef6e6b500483975c4ebacd34bec945fda12", size = 12750218, upload_time = "2025-07-07T19:19:21.547Z" }, - { url = "https://files.pythonhosted.org/packages/7c/0f/145c8b41e48dbf03dd18fdd7f24f8ba95b8254a97a3379048378f33e7838/pandas-2.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6f3bf5ec947526106399a9e1d26d40ee2b259c66422efdf4de63c848492d91bb", size = 13416763, upload_time = "2025-07-07T19:19:23.939Z" }, - { url = "https://files.pythonhosted.org/packages/b2/c0/54415af59db5cdd86a3d3bf79863e8cc3fa9ed265f0745254061ac09d5f2/pandas-2.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:1c78cf43c8fde236342a1cb2c34bcff89564a7bfed7e474ed2fffa6aed03a956", size = 10987482, upload_time = "2025-07-07T19:19:42.699Z" }, - { url = "https://files.pythonhosted.org/packages/48/64/2fd2e400073a1230e13b8cd604c9bc95d9e3b962e5d44088ead2e8f0cfec/pandas-2.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8dfc17328e8da77be3cf9f47509e5637ba8f137148ed0e9b5241e1baf526e20a", size = 12029159, upload_time = "2025-07-07T19:19:26.362Z" }, - { url = "https://files.pythonhosted.org/packages/d8/0a/d84fd79b0293b7ef88c760d7dca69828d867c89b6d9bc52d6a27e4d87316/pandas-2.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:ec6c851509364c59a5344458ab935e6451b31b818be467eb24b0fe89bd05b6b9", size = 11393287, upload_time = "2025-07-07T19:19:29.157Z" }, - { url = "https://files.pythonhosted.org/packages/50/ae/ff885d2b6e88f3c7520bb74ba319268b42f05d7e583b5dded9837da2723f/pandas-2.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:911580460fc4884d9b05254b38a6bfadddfcc6aaef856fb5859e7ca202e45275", size = 11309381, upload_time = "2025-07-07T19:19:31.436Z" }, - { url = "https://files.pythonhosted.org/packages/85/86/1fa345fc17caf5d7780d2699985c03dbe186c68fee00b526813939062bb0/pandas-2.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2f4d6feeba91744872a600e6edbbd5b033005b431d5ae8379abee5bcfa479fab", size = 11883998, upload_time = "2025-07-07T19:19:34.267Z" }, - { url = "https://files.pythonhosted.org/packages/81/aa/e58541a49b5e6310d89474333e994ee57fea97c8aaa8fc7f00b873059bbf/pandas-2.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fe37e757f462d31a9cd7580236a82f353f5713a80e059a29753cf938c6775d96", size = 12704705, upload_time = "2025-07-07T19:19:36.856Z" }, - { url = "https://files.pythonhosted.org/packages/d5/f9/07086f5b0f2a19872554abeea7658200824f5835c58a106fa8f2ae96a46c/pandas-2.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5db9637dbc24b631ff3707269ae4559bce4b7fd75c1c4d7e13f40edc42df4444", size = 13189044, upload_time = "2025-07-07T19:19:39.999Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/79/8e/0e90233ac205ad182bd6b422532695d2b9414944a280488105d598c70023/pandas-2.3.2.tar.gz", hash = "sha256:ab7b58f8f82706890924ccdfb5f48002b83d2b5a3845976a9fb705d36c34dcdb", size = 4488684 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/db/614c20fb7a85a14828edd23f1c02db58a30abf3ce76f38806155d160313c/pandas-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fbb977f802156e7a3f829e9d1d5398f6192375a3e2d1a9ee0803e35fe70a2b9", size = 11587652 }, + { url = "https://files.pythonhosted.org/packages/99/b0/756e52f6582cade5e746f19bad0517ff27ba9c73404607c0306585c201b3/pandas-2.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b9b52693123dd234b7c985c68b709b0b009f4521000d0525f2b95c22f15944b", size = 10717686 }, + { url = "https://files.pythonhosted.org/packages/37/4c/dd5ccc1e357abfeee8353123282de17997f90ff67855f86154e5a13b81e5/pandas-2.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bd281310d4f412733f319a5bc552f86d62cddc5f51d2e392c8787335c994175", size = 11278722 }, + { url = "https://files.pythonhosted.org/packages/d3/a4/f7edcfa47e0a88cda0be8b068a5bae710bf264f867edfdf7b71584ace362/pandas-2.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96d31a6b4354e3b9b8a2c848af75d31da390657e3ac6f30c05c82068b9ed79b9", size = 11987803 }, + { url = "https://files.pythonhosted.org/packages/f6/61/1bce4129f93ab66f1c68b7ed1c12bac6a70b1b56c5dab359c6bbcd480b52/pandas-2.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:df4df0b9d02bb873a106971bb85d448378ef14b86ba96f035f50bbd3688456b4", size = 12766345 }, + { url = "https://files.pythonhosted.org/packages/8e/46/80d53de70fee835531da3a1dae827a1e76e77a43ad22a8cd0f8142b61587/pandas-2.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:213a5adf93d020b74327cb2c1b842884dbdd37f895f42dcc2f09d451d949f811", size = 13439314 }, + { url = "https://files.pythonhosted.org/packages/28/30/8114832daff7489f179971dbc1d854109b7f4365a546e3ea75b6516cea95/pandas-2.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c13b81a9347eb8c7548f53fd9a4f08d4dfe996836543f805c987bafa03317ae", size = 10983326 }, + { url = "https://files.pythonhosted.org/packages/27/64/a2f7bf678af502e16b472527735d168b22b7824e45a4d7e96a4fbb634b59/pandas-2.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0c6ecbac99a354a051ef21c5307601093cb9e0f4b1855984a084bfec9302699e", size = 11531061 }, + { url = "https://files.pythonhosted.org/packages/54/4c/c3d21b2b7769ef2f4c2b9299fcadd601efa6729f1357a8dbce8dd949ed70/pandas-2.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c6f048aa0fd080d6a06cc7e7537c09b53be6642d330ac6f54a600c3ace857ee9", size = 10668666 }, + { url = "https://files.pythonhosted.org/packages/50/e2/f775ba76ecfb3424d7f5862620841cf0edb592e9abd2d2a5387d305fe7a8/pandas-2.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0064187b80a5be6f2f9c9d6bdde29372468751dfa89f4211a3c5871854cfbf7a", size = 11332835 }, + { url = "https://files.pythonhosted.org/packages/8f/52/0634adaace9be2d8cac9ef78f05c47f3a675882e068438b9d7ec7ef0c13f/pandas-2.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ac8c320bded4718b298281339c1a50fb00a6ba78cb2a63521c39bec95b0209b", size = 12057211 }, + { url = "https://files.pythonhosted.org/packages/0b/9d/2df913f14b2deb9c748975fdb2491da1a78773debb25abbc7cbc67c6b549/pandas-2.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:114c2fe4f4328cf98ce5716d1532f3ab79c5919f95a9cfee81d9140064a2e4d6", size = 12749277 }, + { url = "https://files.pythonhosted.org/packages/87/af/da1a2417026bd14d98c236dba88e39837182459d29dcfcea510b2ac9e8a1/pandas-2.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:48fa91c4dfb3b2b9bfdb5c24cd3567575f4e13f9636810462ffed8925352be5a", size = 13415256 }, + { url = "https://files.pythonhosted.org/packages/22/3c/f2af1ce8840ef648584a6156489636b5692c162771918aa95707c165ad2b/pandas-2.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:12d039facec710f7ba305786837d0225a3444af7bbd9c15c32ca2d40d157ed8b", size = 10982579 }, + { url = "https://files.pythonhosted.org/packages/f3/98/8df69c4097a6719e357dc249bf437b8efbde808038268e584421696cbddf/pandas-2.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c624b615ce97864eb588779ed4046186f967374185c047070545253a52ab2d57", size = 12028163 }, + { url = "https://files.pythonhosted.org/packages/0e/23/f95cbcbea319f349e10ff90db488b905c6883f03cbabd34f6b03cbc3c044/pandas-2.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0cee69d583b9b128823d9514171cabb6861e09409af805b54459bd0c821a35c2", size = 11391860 }, + { url = "https://files.pythonhosted.org/packages/ad/1b/6a984e98c4abee22058aa75bfb8eb90dce58cf8d7296f8bc56c14bc330b0/pandas-2.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2319656ed81124982900b4c37f0e0c58c015af9a7bbc62342ba5ad07ace82ba9", size = 11309830 }, + { url = "https://files.pythonhosted.org/packages/15/d5/f0486090eb18dd8710bf60afeaf638ba6817047c0c8ae5c6a25598665609/pandas-2.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b37205ad6f00d52f16b6d09f406434ba928c1a1966e2771006a9033c736d30d2", size = 11883216 }, + { url = "https://files.pythonhosted.org/packages/10/86/692050c119696da19e20245bbd650d8dfca6ceb577da027c3a73c62a047e/pandas-2.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:837248b4fc3a9b83b9c6214699a13f069dc13510a6a6d7f9ba33145d2841a012", size = 12699743 }, + { url = "https://files.pythonhosted.org/packages/cd/d7/612123674d7b17cf345aad0a10289b2a384bff404e0463a83c4a3a59d205/pandas-2.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d2c3554bd31b731cd6490d94a28f3abb8dd770634a9e06eb6d2911b9827db370", size = 13186141 }, ] [[package]] name = "pandocfilters" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload_time = "2024-01-18T20:08:13.726Z" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload_time = "2024-01-18T20:08:11.28Z" }, + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663 }, ] [[package]] name = "parso" -version = "0.8.4" +version = "0.8.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609, upload_time = "2024-04-05T09:43:55.897Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d4/de/53e0bcf53d13e005bd8c92e7855142494f41171b34c2536b86187474184d/parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", size = 401205 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650, upload_time = "2024-04-05T09:43:53.299Z" }, + { url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668 }, ] [[package]] name = "pathspec" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload_time = "2023-12-10T22:30:45Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload_time = "2023-12-10T22:30:43.14Z" }, + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, ] [[package]] name = "petl" -version = "1.7.16" +version = "1.7.17" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/99/28/ce7321fbd3b981fd9c212adf7455e0e4e42babebd83b92e24f8265d13dd3/petl-1.7.16.tar.gz", hash = "sha256:9c2fea64d859da45e120fd86d471e5387396cc45d5d4986efa79679f18eb8752", size = 420780, upload_time = "2025-04-04T23:54:50.921Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/07/16a40e30700f7c6975e62cba01c2f94afbb347dd8ed224a5918c686a47fe/petl-1.7.17.tar.gz", hash = "sha256:802696187c2ef35894c4acf3c0ff9fecff6035cb335944c194416b9a18e8390b", size = 424376 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/5c/ea831abc18dd3268046d7d9a0119f1f8ddc69642e0a5245f839602b8114d/petl-1.7.17-py3-none-any.whl", hash = "sha256:53785128bcdf46eb4472638ad572acc6d87cc83f80b567fed06ee4a947eea5d1", size = 233093 }, +] [[package]] name = "pexpect" @@ -1746,80 +1864,80 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ptyprocess" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload_time = "2023-11-25T09:07:26.339Z" } +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload_time = "2023-11-25T06:56:14.81Z" }, + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 }, ] [[package]] name = "pillow" version = "11.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload_time = "2025-07-01T09:16:30.666Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800, upload_time = "2025-07-01T09:14:17.648Z" }, - { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296, upload_time = "2025-07-01T09:14:19.828Z" }, - { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726, upload_time = "2025-07-03T13:10:04.448Z" }, - { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652, upload_time = "2025-07-03T13:10:10.391Z" }, - { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787, upload_time = "2025-07-01T09:14:21.63Z" }, - { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236, upload_time = "2025-07-01T09:14:23.321Z" }, - { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950, upload_time = "2025-07-01T09:14:25.237Z" }, - { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358, upload_time = "2025-07-01T09:14:27.053Z" }, - { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079, upload_time = "2025-07-01T09:14:30.104Z" }, - { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324, upload_time = "2025-07-01T09:14:31.899Z" }, - { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067, upload_time = "2025-07-01T09:14:33.709Z" }, - { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload_time = "2025-07-01T09:14:35.276Z" }, - { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload_time = "2025-07-01T09:14:37.203Z" }, - { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload_time = "2025-07-01T09:14:39.344Z" }, - { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload_time = "2025-07-01T09:14:41.843Z" }, - { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload_time = "2025-07-01T09:14:44.008Z" }, - { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload_time = "2025-07-03T13:10:15.628Z" }, - { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload_time = "2025-07-03T13:10:21.857Z" }, - { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload_time = "2025-07-01T09:14:45.698Z" }, - { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload_time = "2025-07-01T09:14:47.415Z" }, - { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload_time = "2025-07-01T09:14:49.636Z" }, - { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload_time = "2025-07-01T09:14:51.962Z" }, - { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload_time = "2025-07-01T09:14:54.142Z" }, - { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload_time = "2025-07-01T09:14:56.436Z" }, - { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload_time = "2025-07-01T09:14:58.072Z" }, - { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload_time = "2025-07-01T09:14:59.79Z" }, - { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload_time = "2025-07-01T09:15:01.648Z" }, - { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload_time = "2025-07-03T13:10:27.018Z" }, - { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload_time = "2025-07-03T13:10:33.01Z" }, - { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload_time = "2025-07-01T09:15:03.365Z" }, - { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload_time = "2025-07-01T09:15:05.655Z" }, - { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload_time = "2025-07-01T09:15:07.358Z" }, - { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload_time = "2025-07-01T09:15:09.317Z" }, - { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload_time = "2025-07-01T09:15:11.311Z" }, - { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload_time = "2025-07-01T09:15:13.164Z" }, - { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload_time = "2025-07-01T09:15:15.695Z" }, - { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload_time = "2025-07-01T09:15:17.429Z" }, - { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload_time = "2025-07-01T09:15:19.423Z" }, - { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload_time = "2025-07-03T13:10:38.404Z" }, - { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload_time = "2025-07-03T13:10:44.987Z" }, - { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload_time = "2025-07-01T09:15:21.237Z" }, - { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload_time = "2025-07-01T09:15:23.186Z" }, - { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload_time = "2025-07-01T09:15:25.1Z" }, - { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload_time = "2025-07-01T09:15:27.378Z" }, - { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload_time = "2025-07-01T09:15:29.294Z" }, - { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload_time = "2025-07-01T09:15:31.128Z" }, - { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload_time = "2025-07-01T09:15:33.328Z" }, - { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload_time = "2025-07-01T09:15:35.194Z" }, - { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload_time = "2025-07-01T09:15:37.114Z" }, - { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload_time = "2025-07-03T13:10:50.248Z" }, - { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload_time = "2025-07-03T13:10:56.432Z" }, - { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload_time = "2025-07-01T09:15:39.436Z" }, - { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload_time = "2025-07-01T09:15:41.269Z" }, - { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload_time = "2025-07-01T09:15:43.13Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload_time = "2025-07-01T09:15:44.937Z" }, - { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload_time = "2025-07-01T09:15:46.673Z" }, - { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload_time = "2025-07-01T09:15:48.512Z" }, - { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload_time = "2025-07-01T09:15:50.399Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800 }, + { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296 }, + { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726 }, + { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652 }, + { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787 }, + { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236 }, + { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950 }, + { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358 }, + { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079 }, + { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324 }, + { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067 }, + { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328 }, + { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652 }, + { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443 }, + { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474 }, + { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038 }, + { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407 }, + { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094 }, + { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503 }, + { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574 }, + { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060 }, + { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407 }, + { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841 }, + { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450 }, + { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055 }, + { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110 }, + { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547 }, + { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554 }, + { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132 }, + { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001 }, + { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814 }, + { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124 }, + { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186 }, + { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546 }, + { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102 }, + { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803 }, + { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520 }, + { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116 }, + { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597 }, + { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246 }, + { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336 }, + { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699 }, + { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789 }, + { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386 }, + { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911 }, + { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383 }, + { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385 }, + { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129 }, + { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580 }, + { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860 }, + { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694 }, + { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888 }, + { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330 }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089 }, + { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206 }, + { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370 }, + { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500 }, + { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835 }, ] [[package]] name = "pint" -version = "0.24.4" +version = "0.25" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "flexcache" }, @@ -1827,41 +1945,41 @@ dependencies = [ { name = "platformdirs" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/20/bb/52b15ddf7b7706ed591134a895dbf6e41c8348171fb635e655e0a4bbb0ea/pint-0.24.4.tar.gz", hash = "sha256:35275439b574837a6cd3020a5a4a73645eb125ce4152a73a2f126bf164b91b80", size = 342225, upload_time = "2024-11-07T16:29:46.061Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/cb/e6ffaf3d019e8501b1264dac529bf829ac2f1fe1d488cfcf67f1fccadacf/pint-0.25.tar.gz", hash = "sha256:22911a30d682ee0540d656571c19a7b1806ce00b2be88a16f67218108b7b8cc2", size = 253010 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/16/bd2f5904557265882108dc2e04f18abc05ab0c2b7082ae9430091daf1d5c/Pint-0.24.4-py3-none-any.whl", hash = "sha256:aa54926c8772159fcf65f82cc0d34de6768c151b32ad1deb0331291c38fe7659", size = 302029, upload_time = "2024-11-07T16:29:43.976Z" }, + { url = "https://files.pythonhosted.org/packages/76/cc/c528311d798e22ec884b816e8aa2989e0f1f28cdc8e5969e2be5f10bce85/pint-0.25-py3-none-any.whl", hash = "sha256:cc20ae3dff010b9bbea41fb80c2de008f683cc83512cea73633d55aead80aa1e", size = 305462 }, ] [[package]] name = "platformdirs" -version = "4.3.8" +version = "4.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload_time = "2025-05-07T22:47:42.121Z" } +sdist = { url = "https://files.pythonhosted.org/packages/23/e8/21db9c9987b0e728855bd57bff6984f67952bea55d6f75e055c46b5383e8/platformdirs-4.4.0.tar.gz", hash = "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf", size = 21634 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload_time = "2025-05-07T22:47:40.376Z" }, + { url = "https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85", size = 18654 }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload_time = "2025-05-15T12:30:07.975Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload_time = "2025-05-15T12:30:06.134Z" }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, ] [[package]] name = "ply" version = "3.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130, upload_time = "2018-02-15T19:01:31.097Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567, upload_time = "2018-02-15T19:01:27.172Z" }, + { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567 }, ] [[package]] name = "pre-commit" -version = "4.2.0" +version = "4.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cfgv" }, @@ -1870,103 +1988,98 @@ dependencies = [ { name = "pyyaml" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload_time = "2025-03-18T21:35:20.987Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/29/7cf5bbc236333876e4b41f56e06857a87937ce4bf91e117a6991a2dbb02a/pre_commit-4.3.0.tar.gz", hash = "sha256:499fe450cc9d42e9d58e606262795ecb64dd05438943c62b66f6a8673da30b16", size = 193792 } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload_time = "2025-03-18T21:35:19.343Z" }, + { url = "https://files.pythonhosted.org/packages/5b/a5/987a405322d78a73b66e39e4a90e4ef156fd7141bf71df987e50717c321b/pre_commit-4.3.0-py2.py3-none-any.whl", hash = "sha256:2b0747ad7e6e967169136edffee14c16e148a778a54e4f967921aa1ebf2308d8", size = 220965 }, ] [[package]] name = "prompt-toolkit" -version = "3.0.51" +version = "3.0.52" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wcwidth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload_time = "2025-04-15T09:18:47.731Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload_time = "2025-04-15T09:18:44.753Z" }, + { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431 }, ] [[package]] name = "psutil" -version = "7.0.0" +version = "7.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload_time = "2025-02-13T21:54:07.946Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/31/4723d756b59344b643542936e37a31d1d3204bcdc42a7daa8ee9eb06fb50/psutil-7.1.0.tar.gz", hash = "sha256:655708b3c069387c8b77b072fc429a57d0e214221d01c0a772df7dfedcb3bcd2", size = 497660 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload_time = "2025-02-13T21:54:12.36Z" }, - { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload_time = "2025-02-13T21:54:16.07Z" }, - { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload_time = "2025-02-13T21:54:18.662Z" }, - { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload_time = "2025-02-13T21:54:21.811Z" }, - { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload_time = "2025-02-13T21:54:24.68Z" }, - { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload_time = "2025-02-13T21:54:34.31Z" }, - { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload_time = "2025-02-13T21:54:37.486Z" }, + { url = "https://files.pythonhosted.org/packages/46/62/ce4051019ee20ce0ed74432dd73a5bb087a6704284a470bb8adff69a0932/psutil-7.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:76168cef4397494250e9f4e73eb3752b146de1dd950040b29186d0cce1d5ca13", size = 245242 }, + { url = "https://files.pythonhosted.org/packages/38/61/f76959fba841bf5b61123fbf4b650886dc4094c6858008b5bf73d9057216/psutil-7.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:5d007560c8c372efdff9e4579c2846d71de737e4605f611437255e81efcca2c5", size = 246682 }, + { url = "https://files.pythonhosted.org/packages/88/7a/37c99d2e77ec30d63398ffa6a660450b8a62517cabe44b3e9bae97696e8d/psutil-7.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22e4454970b32472ce7deaa45d045b34d3648ce478e26a04c7e858a0a6e75ff3", size = 287994 }, + { url = "https://files.pythonhosted.org/packages/9d/de/04c8c61232f7244aa0a4b9a9fbd63a89d5aeaf94b2fc9d1d16e2faa5cbb0/psutil-7.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c70e113920d51e89f212dd7be06219a9b88014e63a4cec69b684c327bc474e3", size = 291163 }, + { url = "https://files.pythonhosted.org/packages/f4/58/c4f976234bf6d4737bc8c02a81192f045c307b72cf39c9e5c5a2d78927f6/psutil-7.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d4a113425c037300de3ac8b331637293da9be9713855c4fc9d2d97436d7259d", size = 293625 }, + { url = "https://files.pythonhosted.org/packages/79/87/157c8e7959ec39ced1b11cc93c730c4fb7f9d408569a6c59dbd92ceb35db/psutil-7.1.0-cp37-abi3-win32.whl", hash = "sha256:09ad740870c8d219ed8daae0ad3b726d3bf9a028a198e7f3080f6a1888b99bca", size = 244812 }, + { url = "https://files.pythonhosted.org/packages/bf/e9/b44c4f697276a7a95b8e94d0e320a7bf7f3318521b23de69035540b39838/psutil-7.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:57f5e987c36d3146c0dd2528cd42151cf96cd359b9d67cfff836995cc5df9a3d", size = 247965 }, + { url = "https://files.pythonhosted.org/packages/26/65/1070a6e3c036f39142c2820c4b52e9243246fcfc3f96239ac84472ba361e/psutil-7.1.0-cp37-abi3-win_arm64.whl", hash = "sha256:6937cb68133e7c97b6cc9649a570c9a18ba0efebed46d8c5dae4c07fa1b67a07", size = 244971 }, ] [[package]] name = "ptyprocess" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload_time = "2020-12-28T15:15:30.155Z" } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762 } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload_time = "2020-12-28T15:15:28.35Z" }, + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993 }, ] [[package]] name = "pure-eval" version = "0.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload_time = "2024-07-21T12:58:21.801Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload_time = "2024-07-21T12:58:20.04Z" }, + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842 }, ] [[package]] name = "pyarrow" -version = "20.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187, upload_time = "2025-04-27T12:34:23.264Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067, upload_time = "2025-04-27T12:29:44.384Z" }, - { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128, upload_time = "2025-04-27T12:29:52.038Z" }, - { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890, upload_time = "2025-04-27T12:29:59.452Z" }, - { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775, upload_time = "2025-04-27T12:30:06.875Z" }, - { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231, upload_time = "2025-04-27T12:30:13.954Z" }, - { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639, upload_time = "2025-04-27T12:30:21.949Z" }, - { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549, upload_time = "2025-04-27T12:30:29.551Z" }, - { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216, upload_time = "2025-04-27T12:30:36.977Z" }, - { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496, upload_time = "2025-04-27T12:30:42.809Z" }, - { url = "https://files.pythonhosted.org/packages/9b/aa/daa413b81446d20d4dad2944110dcf4cf4f4179ef7f685dd5a6d7570dc8e/pyarrow-20.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a15532e77b94c61efadde86d10957950392999503b3616b2ffcef7621a002893", size = 30798501, upload_time = "2025-04-27T12:30:48.351Z" }, - { url = "https://files.pythonhosted.org/packages/ff/75/2303d1caa410925de902d32ac215dc80a7ce7dd8dfe95358c165f2adf107/pyarrow-20.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:dd43f58037443af715f34f1322c782ec463a3c8a94a85fdb2d987ceb5658e061", size = 32277895, upload_time = "2025-04-27T12:30:55.238Z" }, - { url = "https://files.pythonhosted.org/packages/92/41/fe18c7c0b38b20811b73d1bdd54b1fccba0dab0e51d2048878042d84afa8/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa0d288143a8585806e3cc7c39566407aab646fb9ece164609dac1cfff45f6ae", size = 41327322, upload_time = "2025-04-27T12:31:05.587Z" }, - { url = "https://files.pythonhosted.org/packages/da/ab/7dbf3d11db67c72dbf36ae63dcbc9f30b866c153b3a22ef728523943eee6/pyarrow-20.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b6953f0114f8d6f3d905d98e987d0924dabce59c3cda380bdfaa25a6201563b4", size = 42411441, upload_time = "2025-04-27T12:31:15.675Z" }, - { url = "https://files.pythonhosted.org/packages/90/c3/0c7da7b6dac863af75b64e2f827e4742161128c350bfe7955b426484e226/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:991f85b48a8a5e839b2128590ce07611fae48a904cae6cab1f089c5955b57eb5", size = 40677027, upload_time = "2025-04-27T12:31:24.631Z" }, - { url = "https://files.pythonhosted.org/packages/be/27/43a47fa0ff9053ab5203bb3faeec435d43c0d8bfa40179bfd076cdbd4e1c/pyarrow-20.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:97c8dc984ed09cb07d618d57d8d4b67a5100a30c3818c2fb0b04599f0da2de7b", size = 42281473, upload_time = "2025-04-27T12:31:31.311Z" }, - { url = "https://files.pythonhosted.org/packages/bc/0b/d56c63b078876da81bbb9ba695a596eabee9b085555ed12bf6eb3b7cab0e/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9b71daf534f4745818f96c214dbc1e6124d7daf059167330b610fc69b6f3d3e3", size = 42893897, upload_time = "2025-04-27T12:31:39.406Z" }, - { url = "https://files.pythonhosted.org/packages/92/ac/7d4bd020ba9145f354012838692d48300c1b8fe5634bfda886abcada67ed/pyarrow-20.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e8b88758f9303fa5a83d6c90e176714b2fd3852e776fc2d7e42a22dd6c2fb368", size = 44543847, upload_time = "2025-04-27T12:31:45.997Z" }, - { url = "https://files.pythonhosted.org/packages/9d/07/290f4abf9ca702c5df7b47739c1b2c83588641ddfa2cc75e34a301d42e55/pyarrow-20.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:30b3051b7975801c1e1d387e17c588d8ab05ced9b1e14eec57915f79869b5031", size = 25653219, upload_time = "2025-04-27T12:31:54.11Z" }, - { url = "https://files.pythonhosted.org/packages/95/df/720bb17704b10bd69dde086e1400b8eefb8f58df3f8ac9cff6c425bf57f1/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:ca151afa4f9b7bc45bcc791eb9a89e90a9eb2772767d0b1e5389609c7d03db63", size = 30853957, upload_time = "2025-04-27T12:31:59.215Z" }, - { url = "https://files.pythonhosted.org/packages/d9/72/0d5f875efc31baef742ba55a00a25213a19ea64d7176e0fe001c5d8b6e9a/pyarrow-20.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:4680f01ecd86e0dd63e39eb5cd59ef9ff24a9d166db328679e36c108dc993d4c", size = 32247972, upload_time = "2025-04-27T12:32:05.369Z" }, - { url = "https://files.pythonhosted.org/packages/d5/bc/e48b4fa544d2eea72f7844180eb77f83f2030b84c8dad860f199f94307ed/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7f4c8534e2ff059765647aa69b75d6543f9fef59e2cd4c6d18015192565d2b70", size = 41256434, upload_time = "2025-04-27T12:32:11.814Z" }, - { url = "https://files.pythonhosted.org/packages/c3/01/974043a29874aa2cf4f87fb07fd108828fc7362300265a2a64a94965e35b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3e1f8a47f4b4ae4c69c4d702cfbdfe4d41e18e5c7ef6f1bb1c50918c1e81c57b", size = 42353648, upload_time = "2025-04-27T12:32:20.766Z" }, - { url = "https://files.pythonhosted.org/packages/68/95/cc0d3634cde9ca69b0e51cbe830d8915ea32dda2157560dda27ff3b3337b/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:a1f60dc14658efaa927f8214734f6a01a806d7690be4b3232ba526836d216122", size = 40619853, upload_time = "2025-04-27T12:32:28.1Z" }, - { url = "https://files.pythonhosted.org/packages/29/c2/3ad40e07e96a3e74e7ed7cc8285aadfa84eb848a798c98ec0ad009eb6bcc/pyarrow-20.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:204a846dca751428991346976b914d6d2a82ae5b8316a6ed99789ebf976551e6", size = 42241743, upload_time = "2025-04-27T12:32:35.792Z" }, - { url = "https://files.pythonhosted.org/packages/eb/cb/65fa110b483339add6a9bc7b6373614166b14e20375d4daa73483755f830/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f3b117b922af5e4c6b9a9115825726cac7d8b1421c37c2b5e24fbacc8930612c", size = 42839441, upload_time = "2025-04-27T12:32:46.64Z" }, - { url = "https://files.pythonhosted.org/packages/98/7b/f30b1954589243207d7a0fbc9997401044bf9a033eec78f6cb50da3f304a/pyarrow-20.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e724a3fd23ae5b9c010e7be857f4405ed5e679db5c93e66204db1a69f733936a", size = 44503279, upload_time = "2025-04-27T12:32:56.503Z" }, - { url = "https://files.pythonhosted.org/packages/37/40/ad395740cd641869a13bcf60851296c89624662575621968dcfafabaa7f6/pyarrow-20.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:82f1ee5133bd8f49d31be1299dc07f585136679666b502540db854968576faf9", size = 25944982, upload_time = "2025-04-27T12:33:04.72Z" }, +version = "21.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ef/c2/ea068b8f00905c06329a3dfcd40d0fcc2b7d0f2e355bdb25b65e0a0e4cd4/pyarrow-21.0.0.tar.gz", hash = "sha256:5051f2dccf0e283ff56335760cbc8622cf52264d67e359d5569541ac11b6d5bc", size = 1133487 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/d4/d4f817b21aacc30195cf6a46ba041dd1be827efa4a623cc8bf39a1c2a0c0/pyarrow-21.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:3a302f0e0963db37e0a24a70c56cf91a4faa0bca51c23812279ca2e23481fccd", size = 31160305 }, + { url = "https://files.pythonhosted.org/packages/a2/9c/dcd38ce6e4b4d9a19e1d36914cb8e2b1da4e6003dd075474c4cfcdfe0601/pyarrow-21.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:b6b27cf01e243871390474a211a7922bfbe3bda21e39bc9160daf0da3fe48876", size = 32684264 }, + { url = "https://files.pythonhosted.org/packages/4f/74/2a2d9f8d7a59b639523454bec12dba35ae3d0a07d8ab529dc0809f74b23c/pyarrow-21.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:e72a8ec6b868e258a2cd2672d91f2860ad532d590ce94cdf7d5e7ec674ccf03d", size = 41108099 }, + { url = "https://files.pythonhosted.org/packages/ad/90/2660332eeb31303c13b653ea566a9918484b6e4d6b9d2d46879a33ab0622/pyarrow-21.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b7ae0bbdc8c6674259b25bef5d2a1d6af5d39d7200c819cf99e07f7dfef1c51e", size = 42829529 }, + { url = "https://files.pythonhosted.org/packages/33/27/1a93a25c92717f6aa0fca06eb4700860577d016cd3ae51aad0e0488ac899/pyarrow-21.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:58c30a1729f82d201627c173d91bd431db88ea74dcaa3885855bc6203e433b82", size = 43367883 }, + { url = "https://files.pythonhosted.org/packages/05/d9/4d09d919f35d599bc05c6950095e358c3e15148ead26292dfca1fb659b0c/pyarrow-21.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:072116f65604b822a7f22945a7a6e581cfa28e3454fdcc6939d4ff6090126623", size = 45133802 }, + { url = "https://files.pythonhosted.org/packages/71/30/f3795b6e192c3ab881325ffe172e526499eb3780e306a15103a2764916a2/pyarrow-21.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf56ec8b0a5c8c9d7021d6fd754e688104f9ebebf1bf4449613c9531f5346a18", size = 26203175 }, + { url = "https://files.pythonhosted.org/packages/16/ca/c7eaa8e62db8fb37ce942b1ea0c6d7abfe3786ca193957afa25e71b81b66/pyarrow-21.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e99310a4ebd4479bcd1964dff9e14af33746300cb014aa4a3781738ac63baf4a", size = 31154306 }, + { url = "https://files.pythonhosted.org/packages/ce/e8/e87d9e3b2489302b3a1aea709aaca4b781c5252fcb812a17ab6275a9a484/pyarrow-21.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:d2fe8e7f3ce329a71b7ddd7498b3cfac0eeb200c2789bd840234f0dc271a8efe", size = 32680622 }, + { url = "https://files.pythonhosted.org/packages/84/52/79095d73a742aa0aba370c7942b1b655f598069489ab387fe47261a849e1/pyarrow-21.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:f522e5709379d72fb3da7785aa489ff0bb87448a9dc5a75f45763a795a089ebd", size = 41104094 }, + { url = "https://files.pythonhosted.org/packages/89/4b/7782438b551dbb0468892a276b8c789b8bbdb25ea5c5eb27faadd753e037/pyarrow-21.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:69cbbdf0631396e9925e048cfa5bce4e8c3d3b41562bbd70c685a8eb53a91e61", size = 42825576 }, + { url = "https://files.pythonhosted.org/packages/b3/62/0f29de6e0a1e33518dec92c65be0351d32d7ca351e51ec5f4f837a9aab91/pyarrow-21.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:731c7022587006b755d0bdb27626a1a3bb004bb56b11fb30d98b6c1b4718579d", size = 43368342 }, + { url = "https://files.pythonhosted.org/packages/90/c7/0fa1f3f29cf75f339768cc698c8ad4ddd2481c1742e9741459911c9ac477/pyarrow-21.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc56bc708f2d8ac71bd1dcb927e458c93cec10b98eb4120206a4091db7b67b99", size = 45131218 }, + { url = "https://files.pythonhosted.org/packages/01/63/581f2076465e67b23bc5a37d4a2abff8362d389d29d8105832e82c9c811c/pyarrow-21.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:186aa00bca62139f75b7de8420f745f2af12941595bbbfa7ed3870ff63e25636", size = 26087551 }, + { url = "https://files.pythonhosted.org/packages/c9/ab/357d0d9648bb8241ee7348e564f2479d206ebe6e1c47ac5027c2e31ecd39/pyarrow-21.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:a7a102574faa3f421141a64c10216e078df467ab9576684d5cd696952546e2da", size = 31290064 }, + { url = "https://files.pythonhosted.org/packages/3f/8a/5685d62a990e4cac2043fc76b4661bf38d06efed55cf45a334b455bd2759/pyarrow-21.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:1e005378c4a2c6db3ada3ad4c217b381f6c886f0a80d6a316fe586b90f77efd7", size = 32727837 }, + { url = "https://files.pythonhosted.org/packages/fc/de/c0828ee09525c2bafefd3e736a248ebe764d07d0fd762d4f0929dbc516c9/pyarrow-21.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:65f8e85f79031449ec8706b74504a316805217b35b6099155dd7e227eef0d4b6", size = 41014158 }, + { url = "https://files.pythonhosted.org/packages/6e/26/a2865c420c50b7a3748320b614f3484bfcde8347b2639b2b903b21ce6a72/pyarrow-21.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:3a81486adc665c7eb1a2bde0224cfca6ceaba344a82a971ef059678417880eb8", size = 42667885 }, + { url = "https://files.pythonhosted.org/packages/0a/f9/4ee798dc902533159250fb4321267730bc0a107d8c6889e07c3add4fe3a5/pyarrow-21.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fc0d2f88b81dcf3ccf9a6ae17f89183762c8a94a5bdcfa09e05cfe413acf0503", size = 43276625 }, + { url = "https://files.pythonhosted.org/packages/5a/da/e02544d6997037a4b0d22d8e5f66bc9315c3671371a8b18c79ade1cefe14/pyarrow-21.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6299449adf89df38537837487a4f8d3bd91ec94354fdd2a7d30bc11c48ef6e79", size = 44951890 }, + { url = "https://files.pythonhosted.org/packages/e5/4e/519c1bc1876625fe6b71e9a28287c43ec2f20f73c658b9ae1d485c0c206e/pyarrow-21.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:222c39e2c70113543982c6b34f3077962b44fca38c0bd9e68bb6781534425c10", size = 26371006 }, ] [[package]] name = "pycparser" -version = "2.22" +version = "2.23" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload_time = "2024-03-30T13:22:22.564Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734 } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload_time = "2024-03-30T13:22:20.476Z" }, + { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140 }, ] [[package]] name = "pydantic" -version = "2.11.7" +version = "2.11.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, @@ -1974,9 +2087,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/00/dd/4325abf92c39ba8623b5af936ddb36ffcfe0beae70405d456ab1fb2f5b8c/pydantic-2.11.7.tar.gz", hash = "sha256:d989c3c6cb79469287b1569f7447a17848c998458d49ebe294e975b9baf0f0db", size = 788350, upload_time = "2025-06-14T08:33:17.137Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/5d/09a551ba512d7ca404d785072700d3f6727a02f6f3c24ecfd081c7cf0aa8/pydantic-2.11.9.tar.gz", hash = "sha256:6b8ffda597a14812a7975c90b82a8a2e777d9257aba3453f973acd3c032a18e2", size = 788495 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/c0/ec2b1c8712ca690e5d61979dee872603e92b8a32f94cc1b72d53beab008a/pydantic-2.11.7-py3-none-any.whl", hash = "sha256:dde5df002701f6de26248661f6835bbe296a47bf73990135c7d07ce741b9623b", size = 444782, upload_time = "2025-06-14T08:33:14.905Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d3/108f2006987c58e76691d5ae5d200dd3e0f532cb4e5fa3560751c3a1feba/pydantic-2.11.9-py3-none-any.whl", hash = "sha256:c42dd626f5cfc1c6950ce6205ea58c93efa406da65f479dcb4029d5934857da2", size = 444855 }, ] [[package]] @@ -1986,39 +2099,39 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload_time = "2025-04-23T18:33:52.104Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload_time = "2025-04-23T18:31:25.863Z" }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload_time = "2025-04-23T18:31:27.341Z" }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload_time = "2025-04-23T18:31:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload_time = "2025-04-23T18:31:31.025Z" }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload_time = "2025-04-23T18:31:32.514Z" }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload_time = "2025-04-23T18:31:33.958Z" }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload_time = "2025-04-23T18:31:39.095Z" }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload_time = "2025-04-23T18:31:41.034Z" }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload_time = "2025-04-23T18:31:42.757Z" }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload_time = "2025-04-23T18:31:44.304Z" }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload_time = "2025-04-23T18:31:45.891Z" }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload_time = "2025-04-23T18:31:47.819Z" }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload_time = "2025-04-23T18:31:49.635Z" }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload_time = "2025-04-23T18:31:51.609Z" }, - { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload_time = "2025-04-23T18:31:53.175Z" }, - { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload_time = "2025-04-23T18:31:54.79Z" }, - { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload_time = "2025-04-23T18:31:57.393Z" }, - { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload_time = "2025-04-23T18:31:59.065Z" }, - { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload_time = "2025-04-23T18:32:00.78Z" }, - { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload_time = "2025-04-23T18:32:02.418Z" }, - { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload_time = "2025-04-23T18:32:04.152Z" }, - { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload_time = "2025-04-23T18:32:06.129Z" }, - { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload_time = "2025-04-23T18:32:08.178Z" }, - { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload_time = "2025-04-23T18:32:10.242Z" }, - { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload_time = "2025-04-23T18:32:12.382Z" }, - { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload_time = "2025-04-23T18:32:14.034Z" }, - { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload_time = "2025-04-23T18:32:15.783Z" }, - { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload_time = "2025-04-23T18:32:18.473Z" }, - { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload_time = "2025-04-23T18:32:20.188Z" }, - { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload_time = "2025-04-23T18:32:22.354Z" }, - { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload_time = "2025-04-23T18:32:25.088Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688 }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808 }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580 }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859 }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810 }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498 }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611 }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924 }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196 }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389 }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223 }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473 }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269 }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921 }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162 }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560 }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777 }, ] [[package]] @@ -2034,14 +2147,14 @@ dependencies = [ { name = "requests" }, { name = "wbgapi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/72/3e56d8166ca4b366a4e37c85711a706bba66768f70ba690bdb279f728d8d/pydeflate-2.1.3.tar.gz", hash = "sha256:48a2b74ad900dd8c50dfb1e4cdfcea8ca11cbd2d3a713bf9208f2028fea4cf4f", size = 26586, upload_time = "2025-06-03T09:38:12.25Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/72/3e56d8166ca4b366a4e37c85711a706bba66768f70ba690bdb279f728d8d/pydeflate-2.1.3.tar.gz", hash = "sha256:48a2b74ad900dd8c50dfb1e4cdfcea8ca11cbd2d3a713bf9208f2028fea4cf4f", size = 26586 } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/31/e703ab5bc311c58e4dc00759d7a48a850877b8bbcd64c9778e2315e06bd5/pydeflate-2.1.3-py3-none-any.whl", hash = "sha256:09ebdde04eb2fea1c4b6712889cb2a9d4c2dd22ce0204aaeae64f4335667354f", size = 32540, upload_time = "2025-06-03T09:38:10.858Z" }, + { url = "https://files.pythonhosted.org/packages/31/31/e703ab5bc311c58e4dc00759d7a48a850877b8bbcd64c9778e2315e06bd5/pydeflate-2.1.3-py3-none-any.whl", hash = "sha256:09ebdde04eb2fea1c4b6712889cb2a9d4c2dd22ce0204aaeae64f4335667354f", size = 32540 }, ] [[package]] name = "pygithub" -version = "2.7.0" +version = "2.8.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyjwt", extra = ["crypto"] }, @@ -2050,36 +2163,36 @@ dependencies = [ { name = "typing-extensions" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6a/a7/403e04aa96e2d94e1518d518d69718c2ba978c8d3ffa4ab3b101b94dbafa/pygithub-2.7.0.tar.gz", hash = "sha256:7cd6eafabb09b5369afba3586d86b1f1ad6f1326d2ff01bc47bb26615dce4cbb", size = 3707928, upload_time = "2025-07-31T11:52:53.714Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c1/74/e560bdeffea72ecb26cff27f0fad548bbff5ecc51d6a155311ea7f9e4c4c/pygithub-2.8.1.tar.gz", hash = "sha256:341b7c78521cb07324ff670afd1baa2bf5c286f8d9fd302c1798ba594a5400c9", size = 2246994 } wheels = [ - { url = "https://files.pythonhosted.org/packages/57/76/d768dd31322173b3956692b75471ac37bf3759c7abb603152f6a9b6594a8/pygithub-2.7.0-py3-none-any.whl", hash = "sha256:40ecbfe26dc55cc34ab4b0ffa1d455e6f816ef9a2bc8d6f5ad18ce572f163700", size = 416514, upload_time = "2025-07-31T11:52:51.909Z" }, + { url = "https://files.pythonhosted.org/packages/07/ba/7049ce39f653f6140aac4beb53a5aaf08b4407b6a3019aae394c1c5244ff/pygithub-2.8.1-py3-none-any.whl", hash = "sha256:23a0a5bca93baef082e03411bf0ce27204c32be8bfa7abc92fe4a3e132936df0", size = 432709 }, ] [[package]] name = "pygments" version = "2.19.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload_time = "2025-06-21T13:39:12.283Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload_time = "2025-06-21T13:39:07.939Z" }, + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217 }, ] [[package]] name = "pygtrie" version = "2.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b9/13/55deec25bf09383216fa7f1dfcdbfca40a04aa00b6d15a5cbf25af8fce5f/pygtrie-2.5.0.tar.gz", hash = "sha256:203514ad826eb403dab1d2e2ddd034e0d1534bbe4dbe0213bb0593f66beba4e2", size = 39266, upload_time = "2022-07-16T14:29:47.459Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/13/55deec25bf09383216fa7f1dfcdbfca40a04aa00b6d15a5cbf25af8fce5f/pygtrie-2.5.0.tar.gz", hash = "sha256:203514ad826eb403dab1d2e2ddd034e0d1534bbe4dbe0213bb0593f66beba4e2", size = 39266 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/cd/bd196b2cf014afb1009de8b0f05ecd54011d881944e62763f3c1b1e8ef37/pygtrie-2.5.0-py3-none-any.whl", hash = "sha256:8795cda8105493d5ae159a5bef313ff13156c5d4d72feddefacaad59f8c8ce16", size = 25099, upload_time = "2022-09-23T20:30:05.12Z" }, + { url = "https://files.pythonhosted.org/packages/ec/cd/bd196b2cf014afb1009de8b0f05ecd54011d881944e62763f3c1b1e8ef37/pygtrie-2.5.0-py3-none-any.whl", hash = "sha256:8795cda8105493d5ae159a5bef313ff13156c5d4d72feddefacaad59f8c8ce16", size = 25099 }, ] [[package]] name = "pyjwt" version = "2.10.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785, upload_time = "2024-11-28T03:43:29.933Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785 } wheels = [ - { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997, upload_time = "2024-11-28T03:43:27.893Z" }, + { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997 }, ] [package.optional-dependencies] @@ -2089,35 +2202,52 @@ crypto = [ [[package]] name = "pymdown-extensions" -version = "10.16" +version = "10.16.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1a/0a/c06b542ac108bfc73200677309cd9188a3a01b127a63f20cadc18d873d88/pymdown_extensions-10.16.tar.gz", hash = "sha256:71dac4fca63fabeffd3eb9038b756161a33ec6e8d230853d3cecf562155ab3de", size = 853197, upload_time = "2025-06-21T17:56:36.974Z" } +sdist = { url = "https://files.pythonhosted.org/packages/55/b3/6d2b3f149bc5413b0a29761c2c5832d8ce904a1d7f621e86616d96f505cc/pymdown_extensions-10.16.1.tar.gz", hash = "sha256:aace82bcccba3efc03e25d584e6a22d27a8e17caa3f4dd9f207e49b787aa9a91", size = 853277 } wheels = [ - { url = "https://files.pythonhosted.org/packages/98/d4/10bb14004d3c792811e05e21b5e5dcae805aacb739bd12a0540967b99592/pymdown_extensions-10.16-py3-none-any.whl", hash = "sha256:f5dd064a4db588cb2d95229fc4ee63a1b16cc8b4d0e6145c0899ed8723da1df2", size = 266143, upload_time = "2025-06-21T17:56:35.356Z" }, + { url = "https://files.pythonhosted.org/packages/e4/06/43084e6cbd4b3bc0e80f6be743b2e79fbc6eed8de9ad8c629939fa55d972/pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d", size = 266178 }, ] [[package]] name = "pynacl" -version = "1.5.0" +version = "1.6.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "cffi" }, + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba", size = 3392854, upload_time = "2022-01-07T22:05:41.134Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1", size = 349920, upload_time = "2022-01-07T22:05:49.156Z" }, - { url = "https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92", size = 601722, upload_time = "2022-01-07T22:05:50.989Z" }, - { url = "https://files.pythonhosted.org/packages/5d/70/87a065c37cca41a75f2ce113a5a2c2aa7533be648b184ade58971b5f7ccc/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394", size = 680087, upload_time = "2022-01-07T22:05:52.539Z" }, - { url = "https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d", size = 856678, upload_time = "2022-01-07T22:05:54.251Z" }, - { url = "https://files.pythonhosted.org/packages/66/28/ca86676b69bf9f90e710571b67450508484388bfce09acf8a46f0b8c785f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858", size = 1133660, upload_time = "2022-01-07T22:05:56.056Z" }, - { url = "https://files.pythonhosted.org/packages/3d/85/c262db650e86812585e2bc59e497a8f59948a005325a11bbbc9ecd3fe26b/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b", size = 663824, upload_time = "2022-01-07T22:05:57.434Z" }, - { url = "https://files.pythonhosted.org/packages/fd/1a/cc308a884bd299b651f1633acb978e8596c71c33ca85e9dc9fa33a5399b9/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff", size = 1117912, upload_time = "2022-01-07T22:05:58.665Z" }, - { url = "https://files.pythonhosted.org/packages/25/2d/b7df6ddb0c2a33afdb358f8af6ea3b8c4d1196ca45497dd37a56f0c122be/PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543", size = 204624, upload_time = "2022-01-07T22:06:00.085Z" }, - { url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93", size = 212141, upload_time = "2022-01-07T22:06:01.861Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/06/c6/a3124dee667a423f2c637cfd262a54d67d8ccf3e160f3c50f622a85b7723/pynacl-1.6.0.tar.gz", hash = "sha256:cb36deafe6e2bce3b286e5d1f3e1c246e0ccdb8808ddb4550bb2792f2df298f2", size = 3505641 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/24/1b639176401255605ba7c2b93a7b1eb1e379e0710eca62613633eb204201/pynacl-1.6.0-cp314-cp314t-macosx_10_10_universal2.whl", hash = "sha256:f46386c24a65383a9081d68e9c2de909b1834ec74ff3013271f1bca9c2d233eb", size = 384141 }, + { url = "https://files.pythonhosted.org/packages/5e/7b/874efdf57d6bf172db0df111b479a553c3d9e8bb4f1f69eb3ffff772d6e8/pynacl-1.6.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:dea103a1afcbc333bc0e992e64233d360d393d1e63d0bc88554f572365664348", size = 808132 }, + { url = "https://files.pythonhosted.org/packages/f3/61/9b53f5913f3b75ac3d53170cdb897101b2b98afc76f4d9d3c8de5aa3ac05/pynacl-1.6.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:04f20784083014e265ad58c1b2dd562c3e35864b5394a14ab54f5d150ee9e53e", size = 1407253 }, + { url = "https://files.pythonhosted.org/packages/7c/0a/b138916b22bbf03a1bdbafecec37d714e7489dd7bcaf80cd17852f8b67be/pynacl-1.6.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bbcc4452a1eb10cd5217318c822fde4be279c9de8567f78bad24c773c21254f8", size = 843719 }, + { url = "https://files.pythonhosted.org/packages/01/3b/17c368197dfb2c817ce033f94605a47d0cc27901542109e640cef263f0af/pynacl-1.6.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51fed9fe1bec9e7ff9af31cd0abba179d0e984a2960c77e8e5292c7e9b7f7b5d", size = 1445441 }, + { url = "https://files.pythonhosted.org/packages/35/3c/f79b185365ab9be80cd3cd01dacf30bf5895f9b7b001e683b369e0bb6d3d/pynacl-1.6.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:10d755cf2a455d8c0f8c767a43d68f24d163b8fe93ccfaabfa7bafd26be58d73", size = 825691 }, + { url = "https://files.pythonhosted.org/packages/f7/1f/8b37d25e95b8f2a434a19499a601d4d272b9839ab8c32f6b0fc1e40c383f/pynacl-1.6.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:536703b8f90e911294831a7fbcd0c062b837f3ccaa923d92a6254e11178aaf42", size = 1410726 }, + { url = "https://files.pythonhosted.org/packages/bd/93/5a4a4cf9913014f83d615ad6a2df9187330f764f606246b3a744c0788c03/pynacl-1.6.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:6b08eab48c9669d515a344fb0ef27e2cbde847721e34bba94a343baa0f33f1f4", size = 801035 }, + { url = "https://files.pythonhosted.org/packages/bf/60/40da6b0fe6a4d5fd88f608389eb1df06492ba2edca93fca0b3bebff9b948/pynacl-1.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5789f016e08e5606803161ba24de01b5a345d24590a80323379fc4408832d290", size = 1371854 }, + { url = "https://files.pythonhosted.org/packages/44/b2/37ac1d65008f824cba6b5bf68d18b76d97d0f62d7a032367ea69d4a187c8/pynacl-1.6.0-cp314-cp314t-win32.whl", hash = "sha256:4853c154dc16ea12f8f3ee4b7e763331876316cc3a9f06aeedf39bcdca8f9995", size = 230345 }, + { url = "https://files.pythonhosted.org/packages/f4/5a/9234b7b45af890d02ebee9aae41859b9b5f15fb4a5a56d88e3b4d1659834/pynacl-1.6.0-cp314-cp314t-win_amd64.whl", hash = "sha256:347dcddce0b4d83ed3f32fd00379c83c425abee5a9d2cd0a2c84871334eaff64", size = 243103 }, + { url = "https://files.pythonhosted.org/packages/c9/2c/c1a0f19d720ab0af3bc4241af2bdf4d813c3ecdcb96392b5e1ddf2d8f24f/pynacl-1.6.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2d6cd56ce4998cb66a6c112fda7b1fdce5266c9f05044fa72972613bef376d15", size = 187778 }, + { url = "https://files.pythonhosted.org/packages/63/37/87c72df19857c5b3b47ace6f211a26eb862ada495cc96daa372d96048fca/pynacl-1.6.0-cp38-abi3-macosx_10_10_universal2.whl", hash = "sha256:f4b3824920e206b4f52abd7de621ea7a44fd3cb5c8daceb7c3612345dfc54f2e", size = 382610 }, + { url = "https://files.pythonhosted.org/packages/0c/64/3ce958a5817fd3cc6df4ec14441c43fd9854405668d73babccf77f9597a3/pynacl-1.6.0-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:16dd347cdc8ae0b0f6187a2608c0af1c8b7ecbbe6b4a06bff8253c192f696990", size = 798744 }, + { url = "https://files.pythonhosted.org/packages/e4/8a/3f0dd297a0a33fa3739c255feebd0206bb1df0b44c52fbe2caf8e8bc4425/pynacl-1.6.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:16c60daceee88d04f8d41d0a4004a7ed8d9a5126b997efd2933e08e93a3bd850", size = 1397879 }, + { url = "https://files.pythonhosted.org/packages/41/94/028ff0434a69448f61348d50d2c147dda51aabdd4fbc93ec61343332174d/pynacl-1.6.0-cp38-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25720bad35dfac34a2bcdd61d9e08d6bfc6041bebc7751d9c9f2446cf1e77d64", size = 833907 }, + { url = "https://files.pythonhosted.org/packages/52/bc/a5cff7f8c30d5f4c26a07dfb0bcda1176ab8b2de86dda3106c00a02ad787/pynacl-1.6.0-cp38-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8bfaa0a28a1ab718bad6239979a5a57a8d1506d0caf2fba17e524dbb409441cf", size = 1436649 }, + { url = "https://files.pythonhosted.org/packages/7a/20/c397be374fd5d84295046e398de4ba5f0722dc14450f65db76a43c121471/pynacl-1.6.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ef214b90556bb46a485b7da8258e59204c244b1b5b576fb71848819b468c44a7", size = 817142 }, + { url = "https://files.pythonhosted.org/packages/12/30/5efcef3406940cda75296c6d884090b8a9aad2dcc0c304daebb5ae99fb4a/pynacl-1.6.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:49c336dd80ea54780bcff6a03ee1a476be1612423010472e60af83452aa0f442", size = 1401794 }, + { url = "https://files.pythonhosted.org/packages/be/e1/a8fe1248cc17ccb03b676d80fa90763760a6d1247da434844ea388d0816c/pynacl-1.6.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:f3482abf0f9815e7246d461fab597aa179b7524628a4bc36f86a7dc418d2608d", size = 772161 }, + { url = "https://files.pythonhosted.org/packages/a3/76/8a62702fb657d6d9104ce13449db221a345665d05e6a3fdefb5a7cafd2ad/pynacl-1.6.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:140373378e34a1f6977e573033d1dd1de88d2a5d90ec6958c9485b2fd9f3eb90", size = 1370720 }, + { url = "https://files.pythonhosted.org/packages/6d/38/9e9e9b777a1c4c8204053733e1a0269672c0bd40852908c9ad6b6eaba82c/pynacl-1.6.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6b393bc5e5a0eb86bb85b533deb2d2c815666665f840a09e0aa3362bb6088736", size = 791252 }, + { url = "https://files.pythonhosted.org/packages/63/ef/d972ce3d92ae05c9091363cf185e8646933f91c376e97b8be79ea6e96c22/pynacl-1.6.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4a25cfede801f01e54179b8ff9514bd7b5944da560b7040939732d1804d25419", size = 1362910 }, + { url = "https://files.pythonhosted.org/packages/35/2c/ee0b373a1861f66a7ca8bdb999331525615061320dd628527a50ba8e8a60/pynacl-1.6.0-cp38-abi3-win32.whl", hash = "sha256:dcdeb41c22ff3c66eef5e63049abf7639e0db4edee57ba70531fc1b6b133185d", size = 226461 }, + { url = "https://files.pythonhosted.org/packages/75/f7/41b6c0b9dd9970173b6acc026bab7b4c187e4e5beef2756d419ad65482da/pynacl-1.6.0-cp38-abi3-win_amd64.whl", hash = "sha256:cf831615cc16ba324240de79d925eacae8265b7691412ac6b24221db157f6bd1", size = 238802 }, + { url = "https://files.pythonhosted.org/packages/8e/0f/462326910c6172fa2c6ed07922b22ffc8e77432b3affffd9e18f444dbfbb/pynacl-1.6.0-cp38-abi3-win_arm64.whl", hash = "sha256:84709cea8f888e618c21ed9a0efdb1a59cc63141c403db8bf56c469b71ad56f2", size = 183846 }, ] [[package]] @@ -2127,17 +2257,17 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ply" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/91/d4/bbb4ab79bb3015e3bdd488435ef71f7806144cc6ae4146ee6c5f64ac53f2/pyomo-6.9.4.tar.gz", hash = "sha256:34ad22cd6bf9956de9c0d3842d01c1f92dee0515b25aa3e8f113b326549b1231", size = 3033231, upload_time = "2025-08-28T02:11:24.976Z" } +sdist = { url = "https://files.pythonhosted.org/packages/91/d4/bbb4ab79bb3015e3bdd488435ef71f7806144cc6ae4146ee6c5f64ac53f2/pyomo-6.9.4.tar.gz", hash = "sha256:34ad22cd6bf9956de9c0d3842d01c1f92dee0515b25aa3e8f113b326549b1231", size = 3033231 } wheels = [ - { url = "https://files.pythonhosted.org/packages/18/6b/80f40b4b72a3c6a207130ce431765f897c76133a15e7e38e66f9f40d36f3/pyomo-6.9.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cc3cd52c143991071821bbb9943d2a59512481b5d15adb7add32f92def4172ce", size = 4266926, upload_time = "2025-08-28T02:09:44.833Z" }, - { url = "https://files.pythonhosted.org/packages/48/30/f7ef1be3deb445694b63800de6a36dff31670014d5aa67d42e1716c04970/pyomo-6.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3a5e1dc79e1a2ec1f6247f0df59ac3572781e40218093a624f9213dd3ae6913f", size = 4255513, upload_time = "2025-08-28T02:09:49.197Z" }, - { url = "https://files.pythonhosted.org/packages/76/f4/9493daae82595d7d776ba6cd0d5d167951700670e363dec443415e753808/pyomo-6.9.4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:abea6ca55295b179c1c91184db4eece7589cfd6099869eff8e3e6aa8a06463d1", size = 4311852, upload_time = "2025-08-28T02:09:53.415Z" }, - { url = "https://files.pythonhosted.org/packages/83/d7/e39e605ab33c2729afb043bed94ce7ee382bd5b4bc708f6c90a1d2600456/pyomo-6.9.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddd48dec34b270ca2621863a216c4f3a6fcc409db86a7dc34c31eb788a44b8c6", size = 4343130, upload_time = "2025-08-28T02:09:57.397Z" }, - { url = "https://files.pythonhosted.org/packages/65/04/dc4d3d9369c4cb1b6e68ce18bbba066ea83284942322836e791dbf693bb2/pyomo-6.9.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1a768a178ae3f0391c66e2334da3d1618c9c85c9d879bc86de441efd143f491", size = 4267029, upload_time = "2025-08-28T02:10:02.066Z" }, - { url = "https://files.pythonhosted.org/packages/6b/52/824e9cea51ed0a25636b66e8c122dce5fcd22a197bf4646dd6c5f138fe36/pyomo-6.9.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:09cde10e5fe8414f453d1ed3bccef1b42fc048fc2da0a9c936e40b2f877201bf", size = 4255606, upload_time = "2025-08-28T02:10:06.383Z" }, - { url = "https://files.pythonhosted.org/packages/a2/dc/97005d683ca57e231a8f613921adaf480d3a82f40d280c6d0185855a92c6/pyomo-6.9.4-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df3e173d330666f881258deefa79f37373b941d4a5b00edc6aa5b10680720dc1", size = 4312670, upload_time = "2025-08-28T02:10:11.563Z" }, - { url = "https://files.pythonhosted.org/packages/64/73/47525078660eced084abb9a79e1e4c74098c992316c93ab6ead2dc7f8bda/pyomo-6.9.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a13baebcdb05deadeb0ec4b04ecedffa65f1e86179418fa67e603a4f8f1bf17", size = 4344540, upload_time = "2025-08-28T02:10:15.731Z" }, - { url = "https://files.pythonhosted.org/packages/d8/e3/56c20c3358e58206e7270a42ff666a267a6c01492213c8c47aad8676b487/pyomo-6.9.4-py3-none-any.whl", hash = "sha256:a274d74616c0b793279931f3b2175a31f9c63213f2d7b86c14d168c6c264f782", size = 3892640, upload_time = "2025-08-28T02:11:13.845Z" }, + { url = "https://files.pythonhosted.org/packages/18/6b/80f40b4b72a3c6a207130ce431765f897c76133a15e7e38e66f9f40d36f3/pyomo-6.9.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cc3cd52c143991071821bbb9943d2a59512481b5d15adb7add32f92def4172ce", size = 4266926 }, + { url = "https://files.pythonhosted.org/packages/48/30/f7ef1be3deb445694b63800de6a36dff31670014d5aa67d42e1716c04970/pyomo-6.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3a5e1dc79e1a2ec1f6247f0df59ac3572781e40218093a624f9213dd3ae6913f", size = 4255513 }, + { url = "https://files.pythonhosted.org/packages/76/f4/9493daae82595d7d776ba6cd0d5d167951700670e363dec443415e753808/pyomo-6.9.4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:abea6ca55295b179c1c91184db4eece7589cfd6099869eff8e3e6aa8a06463d1", size = 4311852 }, + { url = "https://files.pythonhosted.org/packages/83/d7/e39e605ab33c2729afb043bed94ce7ee382bd5b4bc708f6c90a1d2600456/pyomo-6.9.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddd48dec34b270ca2621863a216c4f3a6fcc409db86a7dc34c31eb788a44b8c6", size = 4343130 }, + { url = "https://files.pythonhosted.org/packages/65/04/dc4d3d9369c4cb1b6e68ce18bbba066ea83284942322836e791dbf693bb2/pyomo-6.9.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1a768a178ae3f0391c66e2334da3d1618c9c85c9d879bc86de441efd143f491", size = 4267029 }, + { url = "https://files.pythonhosted.org/packages/6b/52/824e9cea51ed0a25636b66e8c122dce5fcd22a197bf4646dd6c5f138fe36/pyomo-6.9.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:09cde10e5fe8414f453d1ed3bccef1b42fc048fc2da0a9c936e40b2f877201bf", size = 4255606 }, + { url = "https://files.pythonhosted.org/packages/a2/dc/97005d683ca57e231a8f613921adaf480d3a82f40d280c6d0185855a92c6/pyomo-6.9.4-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df3e173d330666f881258deefa79f37373b941d4a5b00edc6aa5b10680720dc1", size = 4312670 }, + { url = "https://files.pythonhosted.org/packages/64/73/47525078660eced084abb9a79e1e4c74098c992316c93ab6ead2dc7f8bda/pyomo-6.9.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a13baebcdb05deadeb0ec4b04ecedffa65f1e86179418fa67e603a4f8f1bf17", size = 4344540 }, + { url = "https://files.pythonhosted.org/packages/d8/e3/56c20c3358e58206e7270a42ff666a267a6c01492213c8c47aad8676b487/pyomo-6.9.4-py3-none-any.whl", hash = "sha256:a274d74616c0b793279931f3b2175a31f9c63213f2d7b86c14d168c6c264f782", size = 3892640 }, ] [[package]] @@ -2147,14 +2277,14 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "unidecode" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d6/7c/7c45a9e9bf6ddb57b67e66cf4e8076a7baf3a790a3411daac1a7a2df0c5b/pyphonetics-0.5.3.tar.gz", hash = "sha256:2d3c2e359fde91a3c57914f0b5468bba7a5daf38e7927fd999992ea68990fbe4", size = 10314, upload_time = "2020-02-25T12:08:31.049Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d6/7c/7c45a9e9bf6ddb57b67e66cf4e8076a7baf3a790a3411daac1a7a2df0c5b/pyphonetics-0.5.3.tar.gz", hash = "sha256:2d3c2e359fde91a3c57914f0b5468bba7a5daf38e7927fd999992ea68990fbe4", size = 10314 } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/dd/a7d0a860efd3d4335d538b4361b8e9af8311f2aba2e8c7e4c7a47d623b6e/pyphonetics-0.5.3-py2.py3-none-any.whl", hash = "sha256:e6b29671d0d624dda1cac59c0c5a8a7216d8db504bae4941bfc482e04a0621d1", size = 10729, upload_time = "2020-02-25T12:08:25.368Z" }, + { url = "https://files.pythonhosted.org/packages/bd/dd/a7d0a860efd3d4335d538b4361b8e9af8311f2aba2e8c7e4c7a47d623b6e/pyphonetics-0.5.3-py2.py3-none-any.whl", hash = "sha256:e6b29671d0d624dda1cac59c0c5a8a7216d8db504bae4941bfc482e04a0621d1", size = 10729 }, ] [[package]] name = "pytest" -version = "8.4.1" +version = "8.4.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, @@ -2163,23 +2293,23 @@ dependencies = [ { name = "pluggy" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/ba/45911d754e8eba3d5a841a5ce61a65a685ff1798421ac054f85aa8747dfb/pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c", size = 1517714, upload_time = "2025-06-18T05:48:06.109Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618 } wheels = [ - { url = "https://files.pythonhosted.org/packages/29/16/c8a903f4c4dffe7a12843191437d7cd8e32751d5de349d45d3fe69544e87/pytest-8.4.1-py3-none-any.whl", hash = "sha256:539c70ba6fcead8e78eebbf1115e8b589e7565830d7d006a8723f19ac8a0afb7", size = 365474, upload_time = "2025-06-18T05:48:03.955Z" }, + { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750 }, ] [[package]] name = "pytest-cov" -version = "6.2.1" +version = "7.0.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "coverage" }, { name = "pluggy" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/18/99/668cade231f434aaa59bbfbf49469068d2ddd945000621d3d165d2e7dd7b/pytest_cov-6.2.1.tar.gz", hash = "sha256:25cc6cc0a5358204b8108ecedc51a9b57b34cc6b8c967cc2c01a4e00d8a67da2", size = 69432, upload_time = "2025-06-12T10:47:47.684Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5e/f7/c933acc76f5208b3b00089573cf6a2bc26dc80a8aece8f52bb7d6b1855ca/pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1", size = 54328 } wheels = [ - { url = "https://files.pythonhosted.org/packages/bc/16/4ea354101abb1287856baa4af2732be351c7bee728065aed451b678153fd/pytest_cov-6.2.1-py3-none-any.whl", hash = "sha256:f5bc4c23f42f1cdd23c70b1dab1bbaef4fc505ba950d53e0081d0730dd7e86d5", size = 24644, upload_time = "2025-06-12T10:47:45.932Z" }, + { url = "https://files.pythonhosted.org/packages/ee/49/1377b49de7d0c1ce41292161ea0f721913fa8722c19fb9c1e3aa0367eecb/pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861", size = 22424 }, ] [[package]] @@ -2190,46 +2320,76 @@ dependencies = [ { name = "execnet" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/78/b4/439b179d1ff526791eb921115fca8e44e596a13efeda518b9d845a619450/pytest_xdist-3.8.0.tar.gz", hash = "sha256:7e578125ec9bc6050861aa93f2d59f1d8d085595d6551c2c90b6f4fad8d3a9f1", size = 88069, upload_time = "2025-07-01T13:30:59.346Z" } +sdist = { url = "https://files.pythonhosted.org/packages/78/b4/439b179d1ff526791eb921115fca8e44e596a13efeda518b9d845a619450/pytest_xdist-3.8.0.tar.gz", hash = "sha256:7e578125ec9bc6050861aa93f2d59f1d8d085595d6551c2c90b6f4fad8d3a9f1", size = 88069 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ca/31/d4e37e9e550c2b92a9cbc2e4d0b7420a27224968580b5a447f420847c975/pytest_xdist-3.8.0-py3-none-any.whl", hash = "sha256:202ca578cfeb7370784a8c33d6d05bc6e13b4f25b5053c30a152269fd10f0b88", size = 46396, upload_time = "2025-07-01T13:30:56.632Z" }, + { url = "https://files.pythonhosted.org/packages/ca/31/d4e37e9e550c2b92a9cbc2e4d0b7420a27224968580b5a447f420847c975/pytest_xdist-3.8.0-py3-none-any.whl", hash = "sha256:202ca578cfeb7370784a8c33d6d05bc6e13b4f25b5053c30a152269fd10f0b88", size = 46396 }, ] [[package]] name = "python-calamine" -version = "0.4.0" +version = "0.5.3" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cc/03/269f96535705b2f18c8977fa58e76763b4e4727a9b3ae277a9468c8ffe05/python_calamine-0.4.0.tar.gz", hash = "sha256:94afcbae3fec36d2d7475095a59d4dc6fae45829968c743cb799ebae269d7bbf", size = 127737, upload_time = "2025-07-04T06:05:28.626Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/63/60/f951513aaaa470b3a38a87d65eca45e0a02bc329b47864f5a17db563f746/python_calamine-0.4.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:74bca5d44a73acf3dcfa5370820797fcfd225c8c71abcddea987c5b4f5077e98", size = 826603, upload_time = "2025-07-04T06:03:51.245Z" }, - { url = "https://files.pythonhosted.org/packages/76/3f/789955bbc77831c639890758f945eb2b25d6358065edf00da6751226cf31/python_calamine-0.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cf80178f5d1b0ee2ccfffb8549c50855f6249e930664adc5807f4d0d6c2b269c", size = 805826, upload_time = "2025-07-04T06:03:52.482Z" }, - { url = "https://files.pythonhosted.org/packages/00/4c/f87d17d996f647030a40bfd124fe45fe893c002bee35ae6aca9910a923ae/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65cfef345386ae86f7720f1be93495a40fd7e7feabb8caa1df5025d7fbc58a1f", size = 874989, upload_time = "2025-07-04T06:03:53.794Z" }, - { url = "https://files.pythonhosted.org/packages/47/d2/3269367303f6c0488cf1bfebded3f9fe968d118a988222e04c9b2636bf2e/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f23e6214dbf9b29065a5dcfd6a6c674dd0e251407298c9138611c907d53423ff", size = 877504, upload_time = "2025-07-04T06:03:55.095Z" }, - { url = "https://files.pythonhosted.org/packages/f9/6d/c7ac35f5c7125e8bd07eb36773f300fda20dd2da635eae78a8cebb0b6ab7/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d792d304ee232ab01598e1d3ab22e074a32c2511476b5fb4f16f4222d9c2a265", size = 1014171, upload_time = "2025-07-04T06:03:56.777Z" }, - { url = "https://files.pythonhosted.org/packages/f0/81/5ea8792a2e9ab5e2a05872db3a4d3ed3538ad5af1861282c789e2f13a8cf/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf813425918fd68f3e991ef7c4b5015be0a1a95fc4a8ab7e73c016ef1b881bb4", size = 926737, upload_time = "2025-07-04T06:03:58.024Z" }, - { url = "https://files.pythonhosted.org/packages/cc/6e/989e56e6f073fc0981a74ba7a393881eb351bb143e5486aa629b5e5d6a8b/python_calamine-0.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbe2a0ccb4d003635888eea83a995ff56b0748c8c76fc71923544f5a4a7d4cd7", size = 887032, upload_time = "2025-07-04T06:03:59.298Z" }, - { url = "https://files.pythonhosted.org/packages/5d/92/2c9bd64277c6fe4be695d7d5a803b38d953ec8565037486be7506642c27c/python_calamine-0.4.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a7b3bb5f0d910b9b03c240987560f843256626fd443279759df4e91b717826d2", size = 929700, upload_time = "2025-07-04T06:04:01.388Z" }, - { url = "https://files.pythonhosted.org/packages/64/fa/fc758ca37701d354a6bc7d63118699f1c73788a1f2e1b44d720824992764/python_calamine-0.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:bd2c0fc2b5eabd08ceac8a2935bffa88dbc6116db971aa8c3f244bad3fd0f644", size = 1053971, upload_time = "2025-07-04T06:04:02.704Z" }, - { url = "https://files.pythonhosted.org/packages/65/52/40d7e08ae0ddba331cdc9f7fb3e92972f8f38d7afbd00228158ff6d1fceb/python_calamine-0.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:85b547cb1c5b692a0c2406678d666dbc1cec65a714046104683fe4f504a1721d", size = 1057057, upload_time = "2025-07-04T06:04:04.014Z" }, - { url = "https://files.pythonhosted.org/packages/16/de/e8a071c0adfda73285d891898a24f6e99338328c404f497ff5b0e6bc3d45/python_calamine-0.4.0-cp312-cp312-win32.whl", hash = "sha256:4c2a1e3a0db4d6de4587999a21cc35845648c84fba81c03dd6f3072c690888e4", size = 665540, upload_time = "2025-07-04T06:04:05.679Z" }, - { url = "https://files.pythonhosted.org/packages/5e/f2/7fdfada13f80db12356853cf08697ff4e38800a1809c2bdd26ee60962e7a/python_calamine-0.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:b193c89ffcc146019475cd121c552b23348411e19c04dedf5c766a20db64399a", size = 695366, upload_time = "2025-07-04T06:04:06.977Z" }, - { url = "https://files.pythonhosted.org/packages/20/66/d37412ad854480ce32f50d9f74f2a2f88b1b8a6fbc32f70aabf3211ae89e/python_calamine-0.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:43a0f15e0b60c75a71b21a012b911d5d6f5fa052afad2a8edbc728af43af0fcf", size = 670740, upload_time = "2025-07-04T06:04:08.656Z" }, - { url = "https://files.pythonhosted.org/packages/5a/10/f78218ccdc5bb5591a37d582c7e8723121d0fbe8196c5a4089110ec02f22/python_calamine-0.4.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:f8d6b2d2ae73acf91343f02756bdcb2fa6117db4eaf5cfab75ce50dfb54525ee", size = 826339, upload_time = "2025-07-04T06:04:10.254Z" }, - { url = "https://files.pythonhosted.org/packages/15/b1/d7d0dbbd0469db0fc628b1b9ee3a8f3b698391279f0d7aea96e2018a3863/python_calamine-0.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:aca7e019f42ca16806fef53e3028fa158005c0e68eabda577c3f3c2bea9735fd", size = 805473, upload_time = "2025-07-04T06:04:11.557Z" }, - { url = "https://files.pythonhosted.org/packages/46/52/033b902fb11f9b4bb59fa18621acbf5eaf4ecb0bce878d34fcb0020229df/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aca67cb447ba8dcefa4d5a1131d1cfdd1e0d0a0f0c6470655ce9ad37b7cfa228", size = 874275, upload_time = "2025-07-04T06:04:13.318Z" }, - { url = "https://files.pythonhosted.org/packages/56/12/e6b589293314a5d10b2c309411542424ebefb77430cc715d7601d80349ae/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e127d3b78d511d4f6fbdfed02fe666d83a722d73e27dd64d1718be9efafbabfe", size = 877061, upload_time = "2025-07-04T06:04:15.013Z" }, - { url = "https://files.pythonhosted.org/packages/64/24/0eeb583eb5d44f674ca9f7a846c665e33190431386d7c9f6d08ec9f09d3c/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e47891d9d62e3015448749ddb2ba60ab583a651d0fca9a3a1794936942ad7d5d", size = 1013946, upload_time = "2025-07-04T06:04:16.647Z" }, - { url = "https://files.pythonhosted.org/packages/c4/93/360cf58b8e24f760a3d4643423389dbc37bdca8b6fdda75ffc664ce622b5/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d4072bf9dcb8ec49f5b92688bd960b5d0e03e4826d227bbd66478a6f6b0aea06", size = 926462, upload_time = "2025-07-04T06:04:17.936Z" }, - { url = "https://files.pythonhosted.org/packages/5a/5d/3b8c46ccc62d020858bc52f2d792208910eb68682c6ebf8d6706593d7a88/python_calamine-0.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eabc9dc770f753c4227aacedd8390056937e67af0bf65d6696c584d3054f1287", size = 886319, upload_time = "2025-07-04T06:04:19.33Z" }, - { url = "https://files.pythonhosted.org/packages/66/cf/73241714800bddb277f827c4683f579b81915406bf7dc643dc185cef7eb2/python_calamine-0.4.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6a4bcf36dc77674892616b66cffba432f5fd62df3e0adb0487ec245036b50041", size = 929044, upload_time = "2025-07-04T06:04:20.689Z" }, - { url = "https://files.pythonhosted.org/packages/7c/6b/71e30ee568ce1ea6676be66f1a42c6397946859effc471cc102922fb4792/python_calamine-0.4.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:f81518d4b49c47054cb1861badf5bcef44b0a49959968fb2e9c9cb89645c76af", size = 1053084, upload_time = "2025-07-04T06:04:22.414Z" }, - { url = "https://files.pythonhosted.org/packages/75/19/87b42fe975f8952754562785a545f6d2eec17c353befdf33a8e16c046ce0/python_calamine-0.4.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:18375eb3ac1362fcbf3a9fcad0672d8dc054001247bc52f063e0054a3e01a8d1", size = 1056735, upload_time = "2025-07-04T06:04:23.903Z" }, - { url = "https://files.pythonhosted.org/packages/04/db/ecee6e5d6ed4f3725312580a83c4cb1758c9060aa08bf2d8512d3396cea1/python_calamine-0.4.0-cp313-cp313-win32.whl", hash = "sha256:c7e98c7e531bafdf719414d0c428f25f933a82640fb92e6e84864a85e758aecc", size = 665282, upload_time = "2025-07-04T06:04:25.274Z" }, - { url = "https://files.pythonhosted.org/packages/cb/0b/26337e0a0e2b335c1d6225bda8de259a21fea129a06009c1471deda28e1f/python_calamine-0.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:6ec081b874e78f4dbcbe70804644281366814289956755575a5871f725592d4e", size = 694982, upload_time = "2025-07-04T06:04:26.573Z" }, - { url = "https://files.pythonhosted.org/packages/90/26/f72c2b2fe70f2901abb41fcdf8249181133ddd72b9392cfb63d030393b3e/python_calamine-0.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:3f9bdf570023138ee4090a51b1e34786978d6e649852ccc3b83ac9729f125ca2", size = 670283, upload_time = "2025-07-04T06:04:28.434Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/f3/ca/295b37a97275d53f072c7307c9d0c4bfec565d3d74157e7fe336ea18de0a/python_calamine-0.5.3.tar.gz", hash = "sha256:b4529c955fa64444184630d5bc8c82c472d1cf6bfe631f0a7bfc5e4802d4e996", size = 130874 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/24/f6e3369be221baa6a50476b8a02f5100980ae487a630d80d4983b4c73879/python_calamine-0.5.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b9a78e471bc02d3f76c294bf996562a9d0fbf2ad0a49d628330ba247865190f1", size = 844280 }, + { url = "https://files.pythonhosted.org/packages/e7/32/f9b689fe40616376457d1a6fd5ab84834066db31fa5ffd10a5b02f996a44/python_calamine-0.5.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bcbd277a4d0a0108aa2f5126a89ca3f2bb18d0bec7ba7d614da02a4556d18ef2", size = 814054 }, + { url = "https://files.pythonhosted.org/packages/f7/26/a07bb6993ae0a524251060397edc710af413dbb175d56f1e1bbc7a2c39c9/python_calamine-0.5.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04e6b68b26346f559a086bb84c960d4e9ddc79be8c3499752c1ba96051fea98f", size = 889447 }, + { url = "https://files.pythonhosted.org/packages/d8/79/5902d00658e2dd4efe3a4062b710a7eaa6082001c199717468fbcd8cef69/python_calamine-0.5.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e60ebeafebf66889753bfad0055edaa38068663961bb9a18e9f89aef2c9cec50", size = 883540 }, + { url = "https://files.pythonhosted.org/packages/d0/85/6299c909fcbba0663b527b82c87d204372e6f469b4ed5602f7bc1f7f1103/python_calamine-0.5.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2d9da11edb40e9d2fb214fcf575be8004b44b1b407930eceb2458f1a84be634f", size = 1034891 }, + { url = "https://files.pythonhosted.org/packages/65/2c/d0cfd9161b3404528bfba9fe000093be19f2c83ede42c255da4ebfd4da17/python_calamine-0.5.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:44d22bc52fe26b72a6dc07ab8a167d5d97aeb28282957f52b930e92106a35e3c", size = 935055 }, + { url = "https://files.pythonhosted.org/packages/b8/69/420c382535d1aca9af6bc929c78ad6b9f8416312aa4955b7977f5f864082/python_calamine-0.5.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b9ace667e04ea6631a0ada0e43dbc796c56e0d021f04bd64cdacb44de4504da", size = 904143 }, + { url = "https://files.pythonhosted.org/packages/d8/2b/19cc87654f9c85fbb6265a7ebe92cf0f649c308f0cf8f262b5c3de754d19/python_calamine-0.5.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7ec0da29de7366258de2eb765a90b9e9fbe9f9865772f3609dacff302b894393", size = 948890 }, + { url = "https://files.pythonhosted.org/packages/18/e8/3547cb72d3a0f67c173ca07d9137046f2a6c87fdc31316b10e2d7d851f2a/python_calamine-0.5.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bba5adf123200503e6c07c667a8ce82c3b62ba02f9b3e99205be24fc73abc49", size = 1067802 }, + { url = "https://files.pythonhosted.org/packages/cb/69/31ab3e8010cbed814b5fcdb2ace43e5b76d6464f8abb1dfab9191416ca3d/python_calamine-0.5.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f4c49bc58f3cfd1e9595a05cab7e71aa94f6cff5bf3916de2b87cdaa9b4ce9a3", size = 1074607 }, + { url = "https://files.pythonhosted.org/packages/c4/40/112d113d974bee5fff564e355b01df5bd524dbd5820c913c9dae574fe80a/python_calamine-0.5.3-cp312-cp312-win32.whl", hash = "sha256:42315463e139f5e44f4dedb9444fa0971c51e82573e872428050914f0dec4194", size = 669578 }, + { url = "https://files.pythonhosted.org/packages/3e/87/0af1cf4ad01a2df273cfd3abb7efaba4fba50395b98f5e871cee016d4f09/python_calamine-0.5.3-cp312-cp312-win_amd64.whl", hash = "sha256:8a24bd4c72bd984311f5ebf2e17a8aa3ce4e5ae87eda517c61c3507db8c045de", size = 713021 }, + { url = "https://files.pythonhosted.org/packages/5d/4e/6ed2ed3bb4c4c479e85d3444742f101f7b3099db1819e422bf861cf9923b/python_calamine-0.5.3-cp312-cp312-win_arm64.whl", hash = "sha256:e4a713e56d3cca752d1a7d6a00dca81b224e2e1a0567d370bc0db537e042d6b0", size = 679615 }, + { url = "https://files.pythonhosted.org/packages/33/e7/14f2bec7b4bead0e71e78fa2549e22192c498a3204d931bd0e6522ec955d/python_calamine-0.5.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:90389cc459500644bbc1a1170b5e50a95160f34cedc8de7fe9a4bd1c08764039", size = 843906 }, + { url = "https://files.pythonhosted.org/packages/c2/6c/8c6e7a8c9b421e99ad1a637c3b96d94fef25abad6bf790a7ce35bfc5a48d/python_calamine-0.5.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:221b64c0e126a1263a14d575c61a60177cad852829dca61dfb4f5a8fb9603251", size = 813859 }, + { url = "https://files.pythonhosted.org/packages/c4/ee/f6745016a431f10620b4e803f306d95c57e828dea064e32fb944c0260559/python_calamine-0.5.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49f3aa50d532c6639be851a644875d5c9cd63892cf545ee614a5c0593dc50c3b", size = 889212 }, + { url = "https://files.pythonhosted.org/packages/b9/72/8de0af1823d587b2683eb25c6feef14c7ea917cfb975d094ad09f46245d0/python_calamine-0.5.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7d8bf3b3542c771795cfcfa8a77d1373273311735517cca599aa7f89c34f38ae", size = 883584 }, + { url = "https://files.pythonhosted.org/packages/5a/90/47b91cf573b6bd4e6dbaeef4f993caf26dc0d2b8117261bc965bd70b38ce/python_calamine-0.5.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d8e452fc1335ab1f7738c3d4d5144f11719b9c5585f3cb5102d47293355067a", size = 1034378 }, + { url = "https://files.pythonhosted.org/packages/48/f7/c75e5f0b0918f0f60b45fad4c313d159633615aa1c96a5170e3fe940862d/python_calamine-0.5.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4fc75ac97be47539465191a00de305c0e150465da8632c14fc1107a0b304f97", size = 934310 }, + { url = "https://files.pythonhosted.org/packages/cd/04/8b5806bdbfabdb51fd2816deac6870d031560f0bbd90d9729ac86b903579/python_calamine-0.5.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1258368551e0b235d5b46c105137294cbb5ca683b2c13f5851f3ebec7f2d42b", size = 903602 }, + { url = "https://files.pythonhosted.org/packages/75/4e/ec27837d5023b8db775db7798b3340eeb6bcb7f61ad64e892d4e1b14853e/python_calamine-0.5.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3a7c51270e5ea518cb02cb531d84a2eb2de68da3cf48b26adae622f031dc5284", size = 948410 }, + { url = "https://files.pythonhosted.org/packages/3d/ba/8b5193637bfa0f363284974ae998f96fa1c8561a0a4d90378b0f202ac317/python_calamine-0.5.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:e1d0df3d69b32da05e3e7648bb5802559d44979be721983f0d669b4128f920fa", size = 1067274 }, + { url = "https://files.pythonhosted.org/packages/da/1c/506791e4c7078f2fed1ee2d69703d62c0acfd5b671db157bb755f47cff42/python_calamine-0.5.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:6d674ae194744b6080f20a0b5a253a9976d632ee91dc00e13e539e968167cd35", size = 1073351 }, + { url = "https://files.pythonhosted.org/packages/dc/83/e30e21484b1ed55668f67a63578d8a6ba70597a4d7ee8da23d759d3e1b3f/python_calamine-0.5.3-cp313-cp313-win32.whl", hash = "sha256:7a42ff0dae44457a4a3e65ea49357ffdf92e44f8b022ef1fb32c6498097d6d57", size = 669416 }, + { url = "https://files.pythonhosted.org/packages/1d/8f/29c617e9548ed2704657ebaa7d79067cad06cbbf7dd432a6cacd4cc19d16/python_calamine-0.5.3-cp313-cp313-win_amd64.whl", hash = "sha256:054aee805c2cd5ab9848c2b8459822f2581cf22af45ff60251c9f45585cc06e0", size = 712760 }, + { url = "https://files.pythonhosted.org/packages/f8/35/d8117f99037100a28d17d9fbde121511c19d54ff4e5968d6aed693caeb87/python_calamine-0.5.3-cp313-cp313-win_arm64.whl", hash = "sha256:0e870f57651e2f76e7c1f009492aa342a7b1819f8b1131bf501240872777f944", size = 679372 }, + { url = "https://files.pythonhosted.org/packages/d9/0a/61949009a354af9ff5dc19e6816ae68a56281c0765520c9db4ff0ed20054/python_calamine-0.5.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:e98c819cd43a7f0048f6d97c9d4ec23d72889cd722de1d6b68e0de24b1f8f037", size = 843418 }, + { url = "https://files.pythonhosted.org/packages/52/7b/4cb7fa988d17c98a0be6e9f74561d8a2381f28a2b88adb89f16abe345d2f/python_calamine-0.5.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cf90ce46420545f922cde95004ea8d5efaf3864b5a380a5d1defc7abd219421a", size = 813611 }, + { url = "https://files.pythonhosted.org/packages/01/34/4c2a6827da90f366be3fb9c7788f672f5e7d60808f9dbd01da5acc6f11ca/python_calamine-0.5.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e89caa6a1a55215be742cd44f6d94611fb6ab222a30325e772abc40566693e5", size = 888097 }, + { url = "https://files.pythonhosted.org/packages/17/bc/ecf5f6ac95195dfd3e9d63ab8c60b78d6466009751dfb1cdacf71d5f5e19/python_calamine-0.5.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b13177e42dac8de57870995699b237ce5a7886d9bd7fb745a36f867e5d3d3e62", size = 880861 }, + { url = "https://files.pythonhosted.org/packages/6e/55/8b60f99221a408f08db280b553aa4321c4cd9365e5c3101638249002d5a4/python_calamine-0.5.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:948e28b5f3246177440c70550661e0a27b414cb15535111fca7dbac2a63721b1", size = 1033023 }, + { url = "https://files.pythonhosted.org/packages/05/c5/8c378d3c2c56d12606e20b59eee3538d3b1177fe00b103bb98ef15176610/python_calamine-0.5.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e37fef2b67bcd66b5dfc65b0779da9522c82f1ef9f97fc6034848072ff60b3f7", size = 933097 }, + { url = "https://files.pythonhosted.org/packages/26/04/cf14e91ac5c2d6d9795e1c39f3f53e0f173fcbaed4b00198e22a58265fdd/python_calamine-0.5.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddcef4e0e9d0479e027c90d9e1537bcf05de9bdd137cd7dfdbfc0034b1850973", size = 901917 }, + { url = "https://files.pythonhosted.org/packages/6e/2f/5b2065b9360bda792504fe3ac1cef6d9da51ceba6230ee7634886b44cce9/python_calamine-0.5.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6732b47f923102357bde348021a2892a41c2fb173958268c0a1ff8d5abb6b7e8", size = 943328 }, + { url = "https://files.pythonhosted.org/packages/ce/5a/45e4bd8473264b918d83297d15f160471029390cd06ed0056fc57e8f29eb/python_calamine-0.5.3-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:543db1b886cf994aaf7da0752022b37c42c05acb7605b56d09047023c8387610", size = 1065993 }, + { url = "https://files.pythonhosted.org/packages/35/6b/2afd47608495f23408bdf2f1ff57a144700aed8b5bbe50285ac4864edf53/python_calamine-0.5.3-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:b79135dd96129253dc0e547778c700e1e3782e7671e7047c8b106b5501e33706", size = 1071801 }, + { url = "https://files.pythonhosted.org/packages/f7/db/b06a15f25e63290c2efc5433fa8b395bfe870aacbf4ea6c930764d53eca6/python_calamine-0.5.3-cp313-cp313t-win32.whl", hash = "sha256:d84dc3b78adf038a2b452fc784523dcc90477f1631d33aabc0872812db5beb26", size = 669485 }, + { url = "https://files.pythonhosted.org/packages/2d/40/e51adf1dae2002f189c83ae527aad017372d1a1b97a22172dc2e51ce502d/python_calamine-0.5.3-cp313-cp313t-win_amd64.whl", hash = "sha256:8a3fd541576fdf2708e40064ebaaf561a0a2afcab01de91c83ec212193bede34", size = 712636 }, + { url = "https://files.pythonhosted.org/packages/56/fa/db4dc8d27a5daa14a153aebc0cb98bad6fd700befd9e67440a8017f0e108/python_calamine-0.5.3-cp313-cp313t-win_arm64.whl", hash = "sha256:b28a9c9318a5e7dabcead1803bfd48be5bf7c9f339d6e505a5989650a6102487", size = 678307 }, + { url = "https://files.pythonhosted.org/packages/ee/7f/a098680c9d6ad36fe850f2c2c28627ee3bc95aaa052f375806f69c075475/python_calamine-0.5.3-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:b5cdcd85cc08a1805d267fc66aa100940712de6b4524951ab91ba47fa60d481f", size = 843921 }, + { url = "https://files.pythonhosted.org/packages/09/ce/3de5d714779fac6e3333e7ea98ce4eae3b2479eb8a3d2f7d9e4487e16681/python_calamine-0.5.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:828cd5d49fe9eb9c1fc9219fe484b07f2ba9a1e5e3b8475d7f1415e0fa316df8", size = 814173 }, + { url = "https://files.pythonhosted.org/packages/cb/14/ef98575838091b6b24274160d53607e78df94f0176af360bcb063512e643/python_calamine-0.5.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d3f4d0532ab4de422fc4b707cdbb93d57ca7ccf9be8bc4742fb9376dc68f861", size = 888958 }, + { url = "https://files.pythonhosted.org/packages/c0/b1/c999dd1f89f415ff06f88f37bce643ece3c4d51ae051e0a143ff16f44c1c/python_calamine-0.5.3-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:89a9ba0a16e4335b676232ddbbea0fd09bfb94757ca6e4cf90ce1348aa843f3f", size = 880988 }, + { url = "https://files.pythonhosted.org/packages/74/16/4984532280e4b2c81aa26ae57b37fc3eaeda414e46e2d9c6a9cfdb27cd56/python_calamine-0.5.3-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0928d0eb1cdea229464de280d0f7cd99314ba28cffd2c4d6c9ce6902f9d6d448", size = 1035685 }, + { url = "https://files.pythonhosted.org/packages/cd/dc/91776b34ab09f36ea41449951148bef731f9b355a2d2b25d398eec774926/python_calamine-0.5.3-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c7f9519dd3b8814ef6e801b9797f918fe7a59937fac4784cb280c8350fb1a2cf", size = 933865 }, + { url = "https://files.pythonhosted.org/packages/01/97/12deaff5e608207398a9f0eaa06447ed69e8c4873ee953be553f9440881a/python_calamine-0.5.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:954cd764c6b24735c749a447523b4ccf4b9d2b7c231ddd304ed42c15afca9516", size = 902310 }, + { url = "https://files.pythonhosted.org/packages/45/da/45063eee203f6c9d9436d29dfc0f01db85c9264c86d1e438c3b452d7e97f/python_calamine-0.5.3-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3f0e9c59fece6bbf1a916947fba33e9b635327eb165784d05efed40027164d1", size = 948143 }, + { url = "https://files.pythonhosted.org/packages/33/07/0b661166dd58367bd5d6cc2bf8441f61004dd5ef2555ab224da97b1ac5d3/python_calamine-0.5.3-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:63bb47cc080d8eb9bc654f0961ada385b58a57d4628b0a33d1003c8f62e6ae3d", size = 1067181 }, + { url = "https://files.pythonhosted.org/packages/5d/80/58b107dc2c2e6bad581f58f54b3ccb07705094ff23734c8dd30bd8aef4e8/python_calamine-0.5.3-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:adb62aab9b9298b2fc378b2aec6dd5802f7ee199c3431abae29368ef046f8005", size = 1072683 }, + { url = "https://files.pythonhosted.org/packages/4c/b4/667e40dbe7d4f19a2e69f9cd186e069cd3af0411a177aa2a90231e3e0b06/python_calamine-0.5.3-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:1de68d2586df7a7a05a7779031dabd4c3d95d4738314ba82e943c8d3f36b5a67", size = 843526 }, + { url = "https://files.pythonhosted.org/packages/3e/f7/fb86da5920198a616583f07d1a395cb1241eafb930d5c33f597ae6664711/python_calamine-0.5.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c70033bbd59f05491743befec5e2a90784f4c8220e7379ce03e956bd1f475be", size = 811074 }, + { url = "https://files.pythonhosted.org/packages/76/2e/5a5a618b351b75155fbb40ad88e166f17ccf202401dd4b830db05b2565a6/python_calamine-0.5.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f396a0e57b1a5462668fc247377714b5b4c061718c1863c00ddc64e770b0f1e", size = 887735 }, + { url = "https://files.pythonhosted.org/packages/97/cf/3cfaa550eb1c9c5501728886c5e787c3ddeb34d8bf3e7e9fcaf9fc6fbd86/python_calamine-0.5.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ce737cb19d3077cabe0acaecd6b55d5df75021a520c20b47e0c75b65b4bfa919", size = 882356 }, + { url = "https://files.pythonhosted.org/packages/88/b8/97f56e337149d0ce53399be9bd583f735dc1ea9abb2745ac902a09e8c401/python_calamine-0.5.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e54b30802fe089cc0c67c67407203412ec7144e84e0960e69c529c7170c37dae", size = 1033195 }, + { url = "https://files.pythonhosted.org/packages/94/45/59a21a18c8e073d2f930a4a9c0c038207b82c5c996b67146fb76f3da2748/python_calamine-0.5.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5efc94c2e4119dc0da1e84d036f7e840fb0dd0850f4c10d3d166d725af0751af", size = 931846 }, + { url = "https://files.pythonhosted.org/packages/36/47/715e0c0bc37ccce035ef4be1aa8eafa1e5abb6687af725cb47d81a18def7/python_calamine-0.5.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74e33191a01d52f66dd6b029e99b6eda0245771c4f116c87ff0d5edf922dbbca", size = 902871 }, + { url = "https://files.pythonhosted.org/packages/ca/07/ac0cf8623765106794e297235d6dde3a728f18e61a536792189fca06f2ba/python_calamine-0.5.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:85ceec02cb367cf87a72ba559db3279f3b4774edba9330eb77670587d4de95f4", size = 944438 }, + { url = "https://files.pythonhosted.org/packages/88/98/c48c0b8be7fbae5f68b7c55a1ed4068d2c3dab64093e39733d43c23a7459/python_calamine-0.5.3-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:882400368f976ea489e47af04fde936b603c3efcf9ade1cd73e623c88fc4aa5c", size = 1066276 }, + { url = "https://files.pythonhosted.org/packages/73/3a/bbf99531fec43bca2ab28948ab94d851db96c0364c76139dd746cab2f4f9/python_calamine-0.5.3-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:ce2fe421d5564e5341f7a06b9c52b84603b48aa670426d44fffce705609a859b", size = 1073059 }, ] [[package]] @@ -2239,9 +2399,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload_time = "2024-03-01T18:36:20.211Z" } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload_time = "2024-03-01T18:36:18.57Z" }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, ] [[package]] @@ -2251,16 +2411,16 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "charset-normalizer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/4b/3c4cf635311b6203f17c2d693dc15e898969983dd3f729bee3c428aa60d4/python-debian-1.0.1.tar.gz", hash = "sha256:3ada9b83a3d671b58081782c0969cffa0102f6ce433fbbc7cf21275b8b5cc771", size = 127249, upload_time = "2025-03-11T12:27:27.245Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/4b/3c4cf635311b6203f17c2d693dc15e898969983dd3f729bee3c428aa60d4/python-debian-1.0.1.tar.gz", hash = "sha256:3ada9b83a3d671b58081782c0969cffa0102f6ce433fbbc7cf21275b8b5cc771", size = 127249 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/15/e8096189b18dda72e4923622abc10b021ecff723b397e22eff29fb86637b/python_debian-1.0.1-py3-none-any.whl", hash = "sha256:8f137c230c1d9279c2ac892b35915068b2aca090c9fd3da5671ff87af32af12c", size = 137453, upload_time = "2025-03-11T12:27:25.014Z" }, + { url = "https://files.pythonhosted.org/packages/ba/15/e8096189b18dda72e4923622abc10b021ecff723b397e22eff29fb86637b/python_debian-1.0.1-py3-none-any.whl", hash = "sha256:8f137c230c1d9279c2ac892b35915068b2aca090c9fd3da5671ff87af32af12c", size = 137453 }, ] [[package]] name = "python-io-wrapper" version = "0.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/74/8dc5f7d0b7cc1a0ca9e5c320abf11adee2094998c93ae8c9c80d9a8323ff/python-io-wrapper-0.3.1.tar.gz", hash = "sha256:e3391787ff0d9870e739294c6392437915502153e695a017450aa46b6d091762", size = 3271, upload_time = "2022-11-14T15:00:10.932Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/74/8dc5f7d0b7cc1a0ca9e5c320abf11adee2094998c93ae8c9c80d9a8323ff/python-io-wrapper-0.3.1.tar.gz", hash = "sha256:e3391787ff0d9870e739294c6392437915502153e695a017450aa46b6d091762", size = 3271 } [[package]] name = "python-slugify" @@ -2269,57 +2429,60 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "text-unidecode" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921, upload_time = "2024-02-08T18:32:45.488Z" } +sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051, upload_time = "2024-02-08T18:32:43.911Z" }, + { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051 }, ] [[package]] name = "pytz" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload_time = "2025-03-25T02:25:00.538Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload_time = "2025-03-25T02:24:58.468Z" }, + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, ] [[package]] name = "pywin32" -version = "310" +version = "311" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload_time = "2025-03-17T00:55:58.807Z" }, - { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload_time = "2025-03-17T00:56:00.8Z" }, - { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload_time = "2025-03-17T00:56:02.601Z" }, - { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384, upload_time = "2025-03-17T00:56:04.383Z" }, - { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039, upload_time = "2025-03-17T00:56:06.207Z" }, - { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152, upload_time = "2025-03-17T00:56:07.819Z" }, + { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543 }, + { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040 }, + { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102 }, + { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700 }, + { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700 }, + { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318 }, + { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714 }, + { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800 }, + { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540 }, ] [[package]] name = "pyyaml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload_time = "2024-08-06T20:33:50.674Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload_time = "2024-08-06T20:32:25.131Z" }, - { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload_time = "2024-08-06T20:32:26.511Z" }, - { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload_time = "2024-08-06T20:32:28.363Z" }, - { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload_time = "2024-08-06T20:32:30.058Z" }, - { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload_time = "2024-08-06T20:32:31.881Z" }, - { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload_time = "2024-08-06T20:32:37.083Z" }, - { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload_time = "2024-08-06T20:32:38.898Z" }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload_time = "2024-08-06T20:32:40.241Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload_time = "2024-08-06T20:32:41.93Z" }, - { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload_time = "2024-08-06T20:32:43.4Z" }, - { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload_time = "2024-08-06T20:32:44.801Z" }, - { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload_time = "2024-08-06T20:32:46.432Z" }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload_time = "2024-08-06T20:32:51.188Z" }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload_time = "2024-08-06T20:32:53.019Z" }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload_time = "2024-08-06T20:32:54.708Z" }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload_time = "2024-08-06T20:32:56.985Z" }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload_time = "2024-08-06T20:33:03.001Z" }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload_time = "2024-08-06T20:33:04.33Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, ] [[package]] @@ -2329,46 +2492,59 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737, upload_time = "2025-05-13T15:24:01.64Z" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737 } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722, upload_time = "2025-05-13T15:23:59.629Z" }, + { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722 }, ] [[package]] name = "pyzmq" -version = "27.0.0" +version = "27.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "implementation_name == 'pypy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f1/06/50a4e9648b3e8b992bef8eb632e457307553a89d294103213cfd47b3da69/pyzmq-27.0.0.tar.gz", hash = "sha256:b1f08eeb9ce1510e6939b6e5dcd46a17765e2333daae78ecf4606808442e52cf", size = 280478, upload_time = "2025-06-13T14:09:07.087Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/93/a7/9ad68f55b8834ede477842214feba6a4c786d936c022a67625497aacf61d/pyzmq-27.0.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:cbabc59dcfaac66655c040dfcb8118f133fb5dde185e5fc152628354c1598e52", size = 1305438, upload_time = "2025-06-13T14:07:31.676Z" }, - { url = "https://files.pythonhosted.org/packages/ba/ee/26aa0f98665a22bc90ebe12dced1de5f3eaca05363b717f6fb229b3421b3/pyzmq-27.0.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:cb0ac5179cba4b2f94f1aa208fbb77b62c4c9bf24dd446278b8b602cf85fcda3", size = 895095, upload_time = "2025-06-13T14:07:33.104Z" }, - { url = "https://files.pythonhosted.org/packages/cf/85/c57e7ab216ecd8aa4cc7e3b83b06cc4e9cf45c87b0afc095f10cd5ce87c1/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:53a48f0228eab6cbf69fde3aa3c03cbe04e50e623ef92ae395fce47ef8a76152", size = 651826, upload_time = "2025-06-13T14:07:34.831Z" }, - { url = "https://files.pythonhosted.org/packages/69/9a/9ea7e230feda9400fb0ae0d61d7d6ddda635e718d941c44eeab22a179d34/pyzmq-27.0.0-cp312-abi3-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:111db5f395e09f7e775f759d598f43cb815fc58e0147623c4816486e1a39dc22", size = 839750, upload_time = "2025-06-13T14:07:36.553Z" }, - { url = "https://files.pythonhosted.org/packages/08/66/4cebfbe71f3dfbd417011daca267539f62ed0fbc68105357b68bbb1a25b7/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:c8878011653dcdc27cc2c57e04ff96f0471e797f5c19ac3d7813a245bcb24371", size = 1641357, upload_time = "2025-06-13T14:07:38.21Z" }, - { url = "https://files.pythonhosted.org/packages/ac/f6/b0f62578c08d2471c791287149cb8c2aaea414ae98c6e995c7dbe008adfb/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:c0ed2c1f335ba55b5fdc964622254917d6b782311c50e138863eda409fbb3b6d", size = 2020281, upload_time = "2025-06-13T14:07:39.599Z" }, - { url = "https://files.pythonhosted.org/packages/37/b9/4f670b15c7498495da9159edc374ec09c88a86d9cd5a47d892f69df23450/pyzmq-27.0.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:e918d70862d4cfd4b1c187310015646a14e1f5917922ab45b29f28f345eeb6be", size = 1877110, upload_time = "2025-06-13T14:07:41.027Z" }, - { url = "https://files.pythonhosted.org/packages/66/31/9dee25c226295b740609f0d46db2fe972b23b6f5cf786360980524a3ba92/pyzmq-27.0.0-cp312-abi3-win32.whl", hash = "sha256:88b4e43cab04c3c0f0d55df3b1eef62df2b629a1a369b5289a58f6fa8b07c4f4", size = 559297, upload_time = "2025-06-13T14:07:42.533Z" }, - { url = "https://files.pythonhosted.org/packages/9b/12/52da5509800f7ff2d287b2f2b4e636e7ea0f001181cba6964ff6c1537778/pyzmq-27.0.0-cp312-abi3-win_amd64.whl", hash = "sha256:dce4199bf5f648a902ce37e7b3afa286f305cd2ef7a8b6ec907470ccb6c8b371", size = 619203, upload_time = "2025-06-13T14:07:43.843Z" }, - { url = "https://files.pythonhosted.org/packages/93/6d/7f2e53b19d1edb1eb4f09ec7c3a1f945ca0aac272099eab757d15699202b/pyzmq-27.0.0-cp312-abi3-win_arm64.whl", hash = "sha256:56e46bbb85d52c1072b3f809cc1ce77251d560bc036d3a312b96db1afe76db2e", size = 551927, upload_time = "2025-06-13T14:07:45.51Z" }, - { url = "https://files.pythonhosted.org/packages/19/62/876b27c4ff777db4ceba1c69ea90d3c825bb4f8d5e7cd987ce5802e33c55/pyzmq-27.0.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:c36ad534c0c29b4afa088dc53543c525b23c0797e01b69fef59b1a9c0e38b688", size = 1340826, upload_time = "2025-06-13T14:07:46.881Z" }, - { url = "https://files.pythonhosted.org/packages/43/69/58ef8f4f59d3bcd505260c73bee87b008850f45edca40ddaba54273c35f4/pyzmq-27.0.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:67855c14173aec36395d7777aaba3cc527b393821f30143fd20b98e1ff31fd38", size = 897283, upload_time = "2025-06-13T14:07:49.562Z" }, - { url = "https://files.pythonhosted.org/packages/43/15/93a0d0396700a60475ad3c5d42c5f1c308d3570bc94626b86c71ef9953e0/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8617c7d43cd8ccdb62aebe984bfed77ca8f036e6c3e46dd3dddda64b10f0ab7a", size = 660567, upload_time = "2025-06-13T14:07:51.364Z" }, - { url = "https://files.pythonhosted.org/packages/0e/b3/fe055513e498ca32f64509abae19b9c9eb4d7c829e02bd8997dd51b029eb/pyzmq-27.0.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:67bfbcbd0a04c575e8103a6061d03e393d9f80ffdb9beb3189261e9e9bc5d5e9", size = 847681, upload_time = "2025-06-13T14:07:52.77Z" }, - { url = "https://files.pythonhosted.org/packages/b6/4f/ff15300b00b5b602191f3df06bbc8dd4164e805fdd65bb77ffbb9c5facdc/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:5cd11d46d7b7e5958121b3eaf4cd8638eff3a720ec527692132f05a57f14341d", size = 1650148, upload_time = "2025-06-13T14:07:54.178Z" }, - { url = "https://files.pythonhosted.org/packages/c4/6f/84bdfff2a224a6f26a24249a342e5906993c50b0761e311e81b39aef52a7/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:b801c2e40c5aa6072c2f4876de8dccd100af6d9918d4d0d7aa54a1d982fd4f44", size = 2023768, upload_time = "2025-06-13T14:07:55.714Z" }, - { url = "https://files.pythonhosted.org/packages/64/39/dc2db178c26a42228c5ac94a9cc595030458aa64c8d796a7727947afbf55/pyzmq-27.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:20d5cb29e8c5f76a127c75b6e7a77e846bc4b655c373baa098c26a61b7ecd0ef", size = 1885199, upload_time = "2025-06-13T14:07:57.166Z" }, - { url = "https://files.pythonhosted.org/packages/c7/21/dae7b06a1f8cdee5d8e7a63d99c5d129c401acc40410bef2cbf42025e26f/pyzmq-27.0.0-cp313-cp313t-win32.whl", hash = "sha256:a20528da85c7ac7a19b7384e8c3f8fa707841fd85afc4ed56eda59d93e3d98ad", size = 575439, upload_time = "2025-06-13T14:07:58.959Z" }, - { url = "https://files.pythonhosted.org/packages/eb/bc/1709dc55f0970cf4cb8259e435e6773f9946f41a045c2cb90e870b7072da/pyzmq-27.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:d8229f2efece6a660ee211d74d91dbc2a76b95544d46c74c615e491900dc107f", size = 639933, upload_time = "2025-06-13T14:08:00.777Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/04/0b/3c9baedbdf613ecaa7aa07027780b8867f57b6293b6ee50de316c9f3222b/pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540", size = 281750 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc", size = 1306279 }, + { url = "https://files.pythonhosted.org/packages/e8/5e/c3c49fdd0f535ef45eefcc16934648e9e59dace4a37ee88fc53f6cd8e641/pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113", size = 895645 }, + { url = "https://files.pythonhosted.org/packages/f8/e5/b0b2504cb4e903a74dcf1ebae157f9e20ebb6ea76095f6cfffea28c42ecd/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233", size = 652574 }, + { url = "https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31", size = 840995 }, + { url = "https://files.pythonhosted.org/packages/c2/bb/b79798ca177b9eb0825b4c9998c6af8cd2a7f15a6a1a4272c1d1a21d382f/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28", size = 1642070 }, + { url = "https://files.pythonhosted.org/packages/9c/80/2df2e7977c4ede24c79ae39dcef3899bfc5f34d1ca7a5b24f182c9b7a9ca/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856", size = 2021121 }, + { url = "https://files.pythonhosted.org/packages/46/bd/2d45ad24f5f5ae7e8d01525eb76786fa7557136555cac7d929880519e33a/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496", size = 1878550 }, + { url = "https://files.pythonhosted.org/packages/e6/2f/104c0a3c778d7c2ab8190e9db4f62f0b6957b53c9d87db77c284b69f33ea/pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd", size = 559184 }, + { url = "https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf", size = 619480 }, + { url = "https://files.pythonhosted.org/packages/78/c2/c012beae5f76b72f007a9e91ee9401cb88c51d0f83c6257a03e785c81cc2/pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f", size = 552993 }, + { url = "https://files.pythonhosted.org/packages/60/cb/84a13459c51da6cec1b7b1dc1a47e6db6da50b77ad7fd9c145842750a011/pyzmq-27.1.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5", size = 1122436 }, + { url = "https://files.pythonhosted.org/packages/dc/b6/94414759a69a26c3dd674570a81813c46a078767d931a6c70ad29fc585cb/pyzmq-27.1.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6", size = 1156301 }, + { url = "https://files.pythonhosted.org/packages/a5/ad/15906493fd40c316377fd8a8f6b1f93104f97a752667763c9b9c1b71d42d/pyzmq-27.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7", size = 1341197 }, + { url = "https://files.pythonhosted.org/packages/14/1d/d343f3ce13db53a54cb8946594e567410b2125394dafcc0268d8dda027e0/pyzmq-27.1.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05", size = 897275 }, + { url = "https://files.pythonhosted.org/packages/69/2d/d83dd6d7ca929a2fc67d2c3005415cdf322af7751d773524809f9e585129/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9", size = 660469 }, + { url = "https://files.pythonhosted.org/packages/3e/cd/9822a7af117f4bc0f1952dbe9ef8358eb50a24928efd5edf54210b850259/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128", size = 847961 }, + { url = "https://files.pythonhosted.org/packages/9a/12/f003e824a19ed73be15542f172fd0ec4ad0b60cf37436652c93b9df7c585/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39", size = 1650282 }, + { url = "https://files.pythonhosted.org/packages/d5/4a/e82d788ed58e9a23995cee70dbc20c9aded3d13a92d30d57ec2291f1e8a3/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97", size = 2024468 }, + { url = "https://files.pythonhosted.org/packages/d9/94/2da0a60841f757481e402b34bf4c8bf57fa54a5466b965de791b1e6f747d/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db", size = 1885394 }, + { url = "https://files.pythonhosted.org/packages/4f/6f/55c10e2e49ad52d080dc24e37adb215e5b0d64990b57598abc2e3f01725b/pyzmq-27.1.0-cp313-cp313t-win32.whl", hash = "sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c", size = 574964 }, + { url = "https://files.pythonhosted.org/packages/87/4d/2534970ba63dd7c522d8ca80fb92777f362c0f321900667c615e2067cb29/pyzmq-27.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2", size = 641029 }, + { url = "https://files.pythonhosted.org/packages/f6/fa/f8aea7a28b0641f31d40dea42d7ef003fded31e184ef47db696bc74cd610/pyzmq-27.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e", size = 561541 }, + { url = "https://files.pythonhosted.org/packages/87/45/19efbb3000956e82d0331bafca5d9ac19ea2857722fa2caacefb6042f39d/pyzmq-27.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a", size = 1341197 }, + { url = "https://files.pythonhosted.org/packages/48/43/d72ccdbf0d73d1343936296665826350cb1e825f92f2db9db3e61c2162a2/pyzmq-27.1.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea", size = 897175 }, + { url = "https://files.pythonhosted.org/packages/2f/2e/a483f73a10b65a9ef0161e817321d39a770b2acf8bcf3004a28d90d14a94/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96", size = 660427 }, + { url = "https://files.pythonhosted.org/packages/f5/d2/5f36552c2d3e5685abe60dfa56f91169f7a2d99bbaf67c5271022ab40863/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d", size = 847929 }, + { url = "https://files.pythonhosted.org/packages/c4/2a/404b331f2b7bf3198e9945f75c4c521f0c6a3a23b51f7a4a401b94a13833/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146", size = 1650193 }, + { url = "https://files.pythonhosted.org/packages/1c/0b/f4107e33f62a5acf60e3ded67ed33d79b4ce18de432625ce2fc5093d6388/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd", size = 2024388 }, + { url = "https://files.pythonhosted.org/packages/0d/01/add31fe76512642fd6e40e3a3bd21f4b47e242c8ba33efb6809e37076d9b/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a", size = 1885316 }, + { url = "https://files.pythonhosted.org/packages/c4/59/a5f38970f9bf07cee96128de79590bb354917914a9be11272cfc7ff26af0/pyzmq-27.1.0-cp314-cp314t-win32.whl", hash = "sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92", size = 587472 }, + { url = "https://files.pythonhosted.org/packages/70/d8/78b1bad170f93fcf5e3536e70e8fadac55030002275c9a29e8f5719185de/pyzmq-27.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0", size = 661401 }, + { url = "https://files.pythonhosted.org/packages/81/d6/4bfbb40c9a0b42fc53c7cf442f6385db70b40f74a783130c5d0a5aa62228/pyzmq-27.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7", size = 575170 }, ] [[package]] name = "ratelimit" version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ab/38/ff60c8fc9e002d50d48822cc5095deb8ebbc5f91a6b8fdd9731c87a147c9/ratelimit-2.2.1.tar.gz", hash = "sha256:af8a9b64b821529aca09ebaf6d8d279100d766f19e90b5059ac6a718ca6dee42", size = 5251, upload_time = "2018-12-17T18:55:49.675Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/38/ff60c8fc9e002d50d48822cc5095deb8ebbc5f91a6b8fdd9731c87a147c9/ratelimit-2.2.1.tar.gz", hash = "sha256:af8a9b64b821529aca09ebaf6d8d279100d766f19e90b5059ac6a718ca6dee42", size = 5251 } [[package]] name = "referencing" @@ -2379,14 +2555,14 @@ dependencies = [ { name = "rpds-py" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload_time = "2025-01-25T08:48:16.138Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload_time = "2025-01-25T08:48:14.241Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 }, ] [[package]] name = "requests" -version = "2.32.4" +version = "2.32.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, @@ -2394,9 +2570,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258, upload_time = "2025-06-09T16:43:07.34Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847, upload_time = "2025-06-09T16:43:05.728Z" }, + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738 }, ] [[package]] @@ -2406,14 +2582,14 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/97/bf44e6c6bd8ddbb99943baf7ba8b1a8485bcd2fe0e55e5708d7fee4ff1ae/requests_file-2.1.0.tar.gz", hash = "sha256:0f549a3f3b0699415ac04d167e9cb39bccfb730cb832b4d20be3d9867356e658", size = 6891, upload_time = "2024-05-21T16:28:00.24Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/97/bf44e6c6bd8ddbb99943baf7ba8b1a8485bcd2fe0e55e5708d7fee4ff1ae/requests_file-2.1.0.tar.gz", hash = "sha256:0f549a3f3b0699415ac04d167e9cb39bccfb730cb832b4d20be3d9867356e658", size = 6891 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/25/dd878a121fcfdf38f52850f11c512e13ec87c2ea72385933818e5b6c15ce/requests_file-2.1.0-py2.py3-none-any.whl", hash = "sha256:cf270de5a4c5874e84599fc5778303d496c10ae5e870bfa378818f35d21bda5c", size = 4244, upload_time = "2024-05-21T16:27:57.733Z" }, + { url = "https://files.pythonhosted.org/packages/d7/25/dd878a121fcfdf38f52850f11c512e13ec87c2ea72385933818e5b6c15ce/requests_file-2.1.0-py2.py3-none-any.whl", hash = "sha256:cf270de5a4c5874e84599fc5778303d496c10ae5e870bfa378818f35d21bda5c", size = 4244 }, ] [[package]] name = "reuse" -version = "5.0.2" +version = "5.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, @@ -2425,145 +2601,150 @@ dependencies = [ { name = "python-debian" }, { name = "tomlkit" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/43/35421efe0e69823787b331362e11cc16bb697cd6f19cbed284d421615f14/reuse-5.0.2.tar.gz", hash = "sha256:878016ae5dd29c10bad4606d6676c12a268c12aa9fcfea66403598e16eed085c", size = 358798, upload_time = "2024-11-14T09:33:17.512Z" } +sdist = { url = "https://files.pythonhosted.org/packages/4b/f7/b59fe851b856d0932aedbf311a3d719f30783e27af6d05bb76d77072ab8f/reuse-5.1.1.tar.gz", hash = "sha256:a13914ed8b66b8e5956e96c63203c63d72b55280d348849ccc0eb314c73248cb", size = 419022 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0a/2f/73de654df9e7e5f67d742c1d949b5c0c7c1203e84b2272d9e34a91faaf5c/reuse-5.0.2-cp313-cp313-manylinux_2_40_x86_64.whl", hash = "sha256:7a680f00324e87a72061677a892d8cbabfddf7adcf7a5376aeeed2d78995bbbb", size = 184309, upload_time = "2024-11-14T09:33:15.047Z" }, + { url = "https://files.pythonhosted.org/packages/c9/95/12451ff8bc2c3e8a5755bc810a538de85444015d44353fc6f7ee8800c0bb/reuse-5.1.1-cp313-cp313-manylinux_2_41_x86_64.whl", hash = "sha256:15a68341949b7ddb3630d8d3a49d9537bbc143ee235dca77cc3f4047237c8299", size = 255386 }, ] [[package]] name = "rfc3986" version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026, upload_time = "2022-01-10T00:52:30.832Z" } +sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326, upload_time = "2022-01-10T00:52:29.594Z" }, + { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326 }, ] [[package]] name = "rich" -version = "13.9.4" +version = "14.1.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149, upload_time = "2024-11-01T16:43:57.873Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/75/af448d8e52bf1d8fa6a9d089ca6c07ff4453d86c65c145d0a300bb073b9b/rich-14.1.0.tar.gz", hash = "sha256:e497a48b844b0320d45007cdebfeaeed8db2a4f4bcf49f15e455cfc4af11eaa8", size = 224441 } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424, upload_time = "2024-11-01T16:43:55.817Z" }, + { url = "https://files.pythonhosted.org/packages/e3/30/3c4d035596d3cf444529e0b2953ad0466f6049528a879d27534700580395/rich-14.1.0-py3-none-any.whl", hash = "sha256:536f5f1785986d6dbdea3c75205c473f970777b4a0d6c6dd1b696aa05a3fa04f", size = 243368 }, ] [[package]] name = "rpds-py" -version = "0.26.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/aa/4456d84bbb54adc6a916fb10c9b374f78ac840337644e4a5eda229c81275/rpds_py-0.26.0.tar.gz", hash = "sha256:20dae58a859b0906f0685642e591056f1e787f3a8b39c8e8749a45dc7d26bdb0", size = 27385, upload_time = "2025-07-01T15:57:13.958Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ea/86/90eb87c6f87085868bd077c7a9938006eb1ce19ed4d06944a90d3560fce2/rpds_py-0.26.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:894514d47e012e794f1350f076c427d2347ebf82f9b958d554d12819849a369d", size = 363933, upload_time = "2025-07-01T15:54:15.734Z" }, - { url = "https://files.pythonhosted.org/packages/63/78/4469f24d34636242c924626082b9586f064ada0b5dbb1e9d096ee7a8e0c6/rpds_py-0.26.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc921b96fa95a097add244da36a1d9e4f3039160d1d30f1b35837bf108c21136", size = 350447, upload_time = "2025-07-01T15:54:16.922Z" }, - { url = "https://files.pythonhosted.org/packages/ad/91/c448ed45efdfdade82348d5e7995e15612754826ea640afc20915119734f/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e1157659470aa42a75448b6e943c895be8c70531c43cb78b9ba990778955582", size = 384711, upload_time = "2025-07-01T15:54:18.101Z" }, - { url = "https://files.pythonhosted.org/packages/ec/43/e5c86fef4be7f49828bdd4ecc8931f0287b1152c0bb0163049b3218740e7/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:521ccf56f45bb3a791182dc6b88ae5f8fa079dd705ee42138c76deb1238e554e", size = 400865, upload_time = "2025-07-01T15:54:19.295Z" }, - { url = "https://files.pythonhosted.org/packages/55/34/e00f726a4d44f22d5c5fe2e5ddd3ac3d7fd3f74a175607781fbdd06fe375/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9def736773fd56b305c0eef698be5192c77bfa30d55a0e5885f80126c4831a15", size = 517763, upload_time = "2025-07-01T15:54:20.858Z" }, - { url = "https://files.pythonhosted.org/packages/52/1c/52dc20c31b147af724b16104500fba13e60123ea0334beba7b40e33354b4/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cdad4ea3b4513b475e027be79e5a0ceac8ee1c113a1a11e5edc3c30c29f964d8", size = 406651, upload_time = "2025-07-01T15:54:22.508Z" }, - { url = "https://files.pythonhosted.org/packages/2e/77/87d7bfabfc4e821caa35481a2ff6ae0b73e6a391bb6b343db2c91c2b9844/rpds_py-0.26.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82b165b07f416bdccf5c84546a484cc8f15137ca38325403864bfdf2b5b72f6a", size = 386079, upload_time = "2025-07-01T15:54:23.987Z" }, - { url = "https://files.pythonhosted.org/packages/e3/d4/7f2200c2d3ee145b65b3cddc4310d51f7da6a26634f3ac87125fd789152a/rpds_py-0.26.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d04cab0a54b9dba4d278fe955a1390da3cf71f57feb78ddc7cb67cbe0bd30323", size = 421379, upload_time = "2025-07-01T15:54:25.073Z" }, - { url = "https://files.pythonhosted.org/packages/ae/13/9fdd428b9c820869924ab62236b8688b122baa22d23efdd1c566938a39ba/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:79061ba1a11b6a12743a2b0f72a46aa2758613d454aa6ba4f5a265cc48850158", size = 562033, upload_time = "2025-07-01T15:54:26.225Z" }, - { url = "https://files.pythonhosted.org/packages/f3/e1/b69686c3bcbe775abac3a4c1c30a164a2076d28df7926041f6c0eb5e8d28/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:f405c93675d8d4c5ac87364bb38d06c988e11028a64b52a47158a355079661f3", size = 591639, upload_time = "2025-07-01T15:54:27.424Z" }, - { url = "https://files.pythonhosted.org/packages/5c/c9/1e3d8c8863c84a90197ac577bbc3d796a92502124c27092413426f670990/rpds_py-0.26.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dafd4c44b74aa4bed4b250f1aed165b8ef5de743bcca3b88fc9619b6087093d2", size = 557105, upload_time = "2025-07-01T15:54:29.93Z" }, - { url = "https://files.pythonhosted.org/packages/9f/c5/90c569649057622959f6dcc40f7b516539608a414dfd54b8d77e3b201ac0/rpds_py-0.26.0-cp312-cp312-win32.whl", hash = "sha256:3da5852aad63fa0c6f836f3359647870e21ea96cf433eb393ffa45263a170d44", size = 223272, upload_time = "2025-07-01T15:54:31.128Z" }, - { url = "https://files.pythonhosted.org/packages/7d/16/19f5d9f2a556cfed454eebe4d354c38d51c20f3db69e7b4ce6cff904905d/rpds_py-0.26.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf47cfdabc2194a669dcf7a8dbba62e37a04c5041d2125fae0233b720da6f05c", size = 234995, upload_time = "2025-07-01T15:54:32.195Z" }, - { url = "https://files.pythonhosted.org/packages/83/f0/7935e40b529c0e752dfaa7880224771b51175fce08b41ab4a92eb2fbdc7f/rpds_py-0.26.0-cp312-cp312-win_arm64.whl", hash = "sha256:20ab1ae4fa534f73647aad289003f1104092890849e0266271351922ed5574f8", size = 223198, upload_time = "2025-07-01T15:54:33.271Z" }, - { url = "https://files.pythonhosted.org/packages/6a/67/bb62d0109493b12b1c6ab00de7a5566aa84c0e44217c2d94bee1bd370da9/rpds_py-0.26.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:696764a5be111b036256c0b18cd29783fab22154690fc698062fc1b0084b511d", size = 363917, upload_time = "2025-07-01T15:54:34.755Z" }, - { url = "https://files.pythonhosted.org/packages/4b/f3/34e6ae1925a5706c0f002a8d2d7f172373b855768149796af87bd65dcdb9/rpds_py-0.26.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1e6c15d2080a63aaed876e228efe4f814bc7889c63b1e112ad46fdc8b368b9e1", size = 350073, upload_time = "2025-07-01T15:54:36.292Z" }, - { url = "https://files.pythonhosted.org/packages/75/83/1953a9d4f4e4de7fd0533733e041c28135f3c21485faaef56a8aadbd96b5/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:390e3170babf42462739a93321e657444f0862c6d722a291accc46f9d21ed04e", size = 384214, upload_time = "2025-07-01T15:54:37.469Z" }, - { url = "https://files.pythonhosted.org/packages/48/0e/983ed1b792b3322ea1d065e67f4b230f3b96025f5ce3878cc40af09b7533/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7da84c2c74c0f5bc97d853d9e17bb83e2dcafcff0dc48286916001cc114379a1", size = 400113, upload_time = "2025-07-01T15:54:38.954Z" }, - { url = "https://files.pythonhosted.org/packages/69/7f/36c0925fff6f660a80be259c5b4f5e53a16851f946eb080351d057698528/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4c5fe114a6dd480a510b6d3661d09d67d1622c4bf20660a474507aaee7eeeee9", size = 515189, upload_time = "2025-07-01T15:54:40.57Z" }, - { url = "https://files.pythonhosted.org/packages/13/45/cbf07fc03ba7a9b54662c9badb58294ecfb24f828b9732970bd1a431ed5c/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3100b3090269f3a7ea727b06a6080d4eb7439dca4c0e91a07c5d133bb1727ea7", size = 406998, upload_time = "2025-07-01T15:54:43.025Z" }, - { url = "https://files.pythonhosted.org/packages/6c/b0/8fa5e36e58657997873fd6a1cf621285ca822ca75b4b3434ead047daa307/rpds_py-0.26.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c03c9b0c64afd0320ae57de4c982801271c0c211aa2d37f3003ff5feb75bb04", size = 385903, upload_time = "2025-07-01T15:54:44.752Z" }, - { url = "https://files.pythonhosted.org/packages/4b/f7/b25437772f9f57d7a9fbd73ed86d0dcd76b4c7c6998348c070d90f23e315/rpds_py-0.26.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:5963b72ccd199ade6ee493723d18a3f21ba7d5b957017607f815788cef50eaf1", size = 419785, upload_time = "2025-07-01T15:54:46.043Z" }, - { url = "https://files.pythonhosted.org/packages/a7/6b/63ffa55743dfcb4baf2e9e77a0b11f7f97ed96a54558fcb5717a4b2cd732/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9da4e873860ad5bab3291438525cae80169daecbfafe5657f7f5fb4d6b3f96b9", size = 561329, upload_time = "2025-07-01T15:54:47.64Z" }, - { url = "https://files.pythonhosted.org/packages/2f/07/1f4f5e2886c480a2346b1e6759c00278b8a69e697ae952d82ae2e6ee5db0/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5afaddaa8e8c7f1f7b4c5c725c0070b6eed0228f705b90a1732a48e84350f4e9", size = 590875, upload_time = "2025-07-01T15:54:48.9Z" }, - { url = "https://files.pythonhosted.org/packages/cc/bc/e6639f1b91c3a55f8c41b47d73e6307051b6e246254a827ede730624c0f8/rpds_py-0.26.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4916dc96489616a6f9667e7526af8fa693c0fdb4f3acb0e5d9f4400eb06a47ba", size = 556636, upload_time = "2025-07-01T15:54:50.619Z" }, - { url = "https://files.pythonhosted.org/packages/05/4c/b3917c45566f9f9a209d38d9b54a1833f2bb1032a3e04c66f75726f28876/rpds_py-0.26.0-cp313-cp313-win32.whl", hash = "sha256:2a343f91b17097c546b93f7999976fd6c9d5900617aa848c81d794e062ab302b", size = 222663, upload_time = "2025-07-01T15:54:52.023Z" }, - { url = "https://files.pythonhosted.org/packages/e0/0b/0851bdd6025775aaa2365bb8de0697ee2558184c800bfef8d7aef5ccde58/rpds_py-0.26.0-cp313-cp313-win_amd64.whl", hash = "sha256:0a0b60701f2300c81b2ac88a5fb893ccfa408e1c4a555a77f908a2596eb875a5", size = 234428, upload_time = "2025-07-01T15:54:53.692Z" }, - { url = "https://files.pythonhosted.org/packages/ed/e8/a47c64ed53149c75fb581e14a237b7b7cd18217e969c30d474d335105622/rpds_py-0.26.0-cp313-cp313-win_arm64.whl", hash = "sha256:257d011919f133a4746958257f2c75238e3ff54255acd5e3e11f3ff41fd14256", size = 222571, upload_time = "2025-07-01T15:54:54.822Z" }, - { url = "https://files.pythonhosted.org/packages/89/bf/3d970ba2e2bcd17d2912cb42874107390f72873e38e79267224110de5e61/rpds_py-0.26.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:529c8156d7506fba5740e05da8795688f87119cce330c244519cf706a4a3d618", size = 360475, upload_time = "2025-07-01T15:54:56.228Z" }, - { url = "https://files.pythonhosted.org/packages/82/9f/283e7e2979fc4ec2d8ecee506d5a3675fce5ed9b4b7cb387ea5d37c2f18d/rpds_py-0.26.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f53ec51f9d24e9638a40cabb95078ade8c99251945dad8d57bf4aabe86ecee35", size = 346692, upload_time = "2025-07-01T15:54:58.561Z" }, - { url = "https://files.pythonhosted.org/packages/e3/03/7e50423c04d78daf391da3cc4330bdb97042fc192a58b186f2d5deb7befd/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab504c4d654e4a29558eaa5bb8cea5fdc1703ea60a8099ffd9c758472cf913f", size = 379415, upload_time = "2025-07-01T15:54:59.751Z" }, - { url = "https://files.pythonhosted.org/packages/57/00/d11ee60d4d3b16808432417951c63df803afb0e0fc672b5e8d07e9edaaae/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fd0641abca296bc1a00183fe44f7fced8807ed49d501f188faa642d0e4975b83", size = 391783, upload_time = "2025-07-01T15:55:00.898Z" }, - { url = "https://files.pythonhosted.org/packages/08/b3/1069c394d9c0d6d23c5b522e1f6546b65793a22950f6e0210adcc6f97c3e/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b312fecc1d017b5327afa81d4da1480f51c68810963a7336d92203dbb3d4f1", size = 512844, upload_time = "2025-07-01T15:55:02.201Z" }, - { url = "https://files.pythonhosted.org/packages/08/3b/c4fbf0926800ed70b2c245ceca99c49f066456755f5d6eb8863c2c51e6d0/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c741107203954f6fc34d3066d213d0a0c40f7bb5aafd698fb39888af277c70d8", size = 402105, upload_time = "2025-07-01T15:55:03.698Z" }, - { url = "https://files.pythonhosted.org/packages/1c/b0/db69b52ca07413e568dae9dc674627a22297abb144c4d6022c6d78f1e5cc/rpds_py-0.26.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc3e55a7db08dc9a6ed5fb7103019d2c1a38a349ac41901f9f66d7f95750942f", size = 383440, upload_time = "2025-07-01T15:55:05.398Z" }, - { url = "https://files.pythonhosted.org/packages/4c/e1/c65255ad5b63903e56b3bb3ff9dcc3f4f5c3badde5d08c741ee03903e951/rpds_py-0.26.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:9e851920caab2dbcae311fd28f4313c6953993893eb5c1bb367ec69d9a39e7ed", size = 412759, upload_time = "2025-07-01T15:55:08.316Z" }, - { url = "https://files.pythonhosted.org/packages/e4/22/bb731077872377a93c6e93b8a9487d0406c70208985831034ccdeed39c8e/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:dfbf280da5f876d0b00c81f26bedce274e72a678c28845453885a9b3c22ae632", size = 556032, upload_time = "2025-07-01T15:55:09.52Z" }, - { url = "https://files.pythonhosted.org/packages/e0/8b/393322ce7bac5c4530fb96fc79cc9ea2f83e968ff5f6e873f905c493e1c4/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:1cc81d14ddfa53d7f3906694d35d54d9d3f850ef8e4e99ee68bc0d1e5fed9a9c", size = 585416, upload_time = "2025-07-01T15:55:11.216Z" }, - { url = "https://files.pythonhosted.org/packages/49/ae/769dc372211835bf759319a7aae70525c6eb523e3371842c65b7ef41c9c6/rpds_py-0.26.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dca83c498b4650a91efcf7b88d669b170256bf8017a5db6f3e06c2bf031f57e0", size = 554049, upload_time = "2025-07-01T15:55:13.004Z" }, - { url = "https://files.pythonhosted.org/packages/6b/f9/4c43f9cc203d6ba44ce3146246cdc38619d92c7bd7bad4946a3491bd5b70/rpds_py-0.26.0-cp313-cp313t-win32.whl", hash = "sha256:4d11382bcaf12f80b51d790dee295c56a159633a8e81e6323b16e55d81ae37e9", size = 218428, upload_time = "2025-07-01T15:55:14.486Z" }, - { url = "https://files.pythonhosted.org/packages/7e/8b/9286b7e822036a4a977f2f1e851c7345c20528dbd56b687bb67ed68a8ede/rpds_py-0.26.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ff110acded3c22c033e637dd8896e411c7d3a11289b2edf041f86663dbc791e9", size = 231524, upload_time = "2025-07-01T15:55:15.745Z" }, - { url = "https://files.pythonhosted.org/packages/55/07/029b7c45db910c74e182de626dfdae0ad489a949d84a468465cd0ca36355/rpds_py-0.26.0-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:da619979df60a940cd434084355c514c25cf8eb4cf9a508510682f6c851a4f7a", size = 364292, upload_time = "2025-07-01T15:55:17.001Z" }, - { url = "https://files.pythonhosted.org/packages/13/d1/9b3d3f986216b4d1f584878dca15ce4797aaf5d372d738974ba737bf68d6/rpds_py-0.26.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:ea89a2458a1a75f87caabefe789c87539ea4e43b40f18cff526052e35bbb4fdf", size = 350334, upload_time = "2025-07-01T15:55:18.922Z" }, - { url = "https://files.pythonhosted.org/packages/18/98/16d5e7bc9ec715fa9668731d0cf97f6b032724e61696e2db3d47aeb89214/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:feac1045b3327a45944e7dcbeb57530339f6b17baff154df51ef8b0da34c8c12", size = 384875, upload_time = "2025-07-01T15:55:20.399Z" }, - { url = "https://files.pythonhosted.org/packages/f9/13/aa5e2b1ec5ab0e86a5c464d53514c0467bec6ba2507027d35fc81818358e/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b818a592bd69bfe437ee8368603d4a2d928c34cffcdf77c2e761a759ffd17d20", size = 399993, upload_time = "2025-07-01T15:55:21.729Z" }, - { url = "https://files.pythonhosted.org/packages/17/03/8021810b0e97923abdbab6474c8b77c69bcb4b2c58330777df9ff69dc559/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1a8b0dd8648709b62d9372fc00a57466f5fdeefed666afe3fea5a6c9539a0331", size = 516683, upload_time = "2025-07-01T15:55:22.918Z" }, - { url = "https://files.pythonhosted.org/packages/dc/b1/da8e61c87c2f3d836954239fdbbfb477bb7b54d74974d8f6fcb34342d166/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6d3498ad0df07d81112aa6ec6c95a7e7b1ae00929fb73e7ebee0f3faaeabad2f", size = 408825, upload_time = "2025-07-01T15:55:24.207Z" }, - { url = "https://files.pythonhosted.org/packages/38/bc/1fc173edaaa0e52c94b02a655db20697cb5fa954ad5a8e15a2c784c5cbdd/rpds_py-0.26.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:24a4146ccb15be237fdef10f331c568e1b0e505f8c8c9ed5d67759dac58ac246", size = 387292, upload_time = "2025-07-01T15:55:25.554Z" }, - { url = "https://files.pythonhosted.org/packages/7c/eb/3a9bb4bd90867d21916f253caf4f0d0be7098671b6715ad1cead9fe7bab9/rpds_py-0.26.0-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:a9a63785467b2d73635957d32a4f6e73d5e4df497a16a6392fa066b753e87387", size = 420435, upload_time = "2025-07-01T15:55:27.798Z" }, - { url = "https://files.pythonhosted.org/packages/cd/16/e066dcdb56f5632713445271a3f8d3d0b426d51ae9c0cca387799df58b02/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:de4ed93a8c91debfd5a047be327b7cc8b0cc6afe32a716bbbc4aedca9e2a83af", size = 562410, upload_time = "2025-07-01T15:55:29.057Z" }, - { url = "https://files.pythonhosted.org/packages/60/22/ddbdec7eb82a0dc2e455be44c97c71c232983e21349836ce9f272e8a3c29/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:caf51943715b12af827696ec395bfa68f090a4c1a1d2509eb4e2cb69abbbdb33", size = 590724, upload_time = "2025-07-01T15:55:30.719Z" }, - { url = "https://files.pythonhosted.org/packages/2c/b4/95744085e65b7187d83f2fcb0bef70716a1ea0a9e5d8f7f39a86e5d83424/rpds_py-0.26.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:4a59e5bc386de021f56337f757301b337d7ab58baa40174fb150accd480bc953", size = 558285, upload_time = "2025-07-01T15:55:31.981Z" }, - { url = "https://files.pythonhosted.org/packages/37/37/6309a75e464d1da2559446f9c811aa4d16343cebe3dbb73701e63f760caa/rpds_py-0.26.0-cp314-cp314-win32.whl", hash = "sha256:92c8db839367ef16a662478f0a2fe13e15f2227da3c1430a782ad0f6ee009ec9", size = 223459, upload_time = "2025-07-01T15:55:33.312Z" }, - { url = "https://files.pythonhosted.org/packages/d9/6f/8e9c11214c46098b1d1391b7e02b70bb689ab963db3b19540cba17315291/rpds_py-0.26.0-cp314-cp314-win_amd64.whl", hash = "sha256:b0afb8cdd034150d4d9f53926226ed27ad15b7f465e93d7468caaf5eafae0d37", size = 236083, upload_time = "2025-07-01T15:55:34.933Z" }, - { url = "https://files.pythonhosted.org/packages/47/af/9c4638994dd623d51c39892edd9d08e8be8220a4b7e874fa02c2d6e91955/rpds_py-0.26.0-cp314-cp314-win_arm64.whl", hash = "sha256:ca3f059f4ba485d90c8dc75cb5ca897e15325e4e609812ce57f896607c1c0867", size = 223291, upload_time = "2025-07-01T15:55:36.202Z" }, - { url = "https://files.pythonhosted.org/packages/4d/db/669a241144460474aab03e254326b32c42def83eb23458a10d163cb9b5ce/rpds_py-0.26.0-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:5afea17ab3a126006dc2f293b14ffc7ef3c85336cf451564a0515ed7648033da", size = 361445, upload_time = "2025-07-01T15:55:37.483Z" }, - { url = "https://files.pythonhosted.org/packages/3b/2d/133f61cc5807c6c2fd086a46df0eb8f63a23f5df8306ff9f6d0fd168fecc/rpds_py-0.26.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:69f0c0a3df7fd3a7eec50a00396104bb9a843ea6d45fcc31c2d5243446ffd7a7", size = 347206, upload_time = "2025-07-01T15:55:38.828Z" }, - { url = "https://files.pythonhosted.org/packages/05/bf/0e8fb4c05f70273469eecf82f6ccf37248558526a45321644826555db31b/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:801a71f70f9813e82d2513c9a96532551fce1e278ec0c64610992c49c04c2dad", size = 380330, upload_time = "2025-07-01T15:55:40.175Z" }, - { url = "https://files.pythonhosted.org/packages/d4/a8/060d24185d8b24d3923322f8d0ede16df4ade226a74e747b8c7c978e3dd3/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:df52098cde6d5e02fa75c1f6244f07971773adb4a26625edd5c18fee906fa84d", size = 392254, upload_time = "2025-07-01T15:55:42.015Z" }, - { url = "https://files.pythonhosted.org/packages/b9/7b/7c2e8a9ee3e6bc0bae26bf29f5219955ca2fbb761dca996a83f5d2f773fe/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9bc596b30f86dc6f0929499c9e574601679d0341a0108c25b9b358a042f51bca", size = 516094, upload_time = "2025-07-01T15:55:43.603Z" }, - { url = "https://files.pythonhosted.org/packages/75/d6/f61cafbed8ba1499b9af9f1777a2a199cd888f74a96133d8833ce5eaa9c5/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9dfbe56b299cf5875b68eb6f0ebaadc9cac520a1989cac0db0765abfb3709c19", size = 402889, upload_time = "2025-07-01T15:55:45.275Z" }, - { url = "https://files.pythonhosted.org/packages/92/19/c8ac0a8a8df2dd30cdec27f69298a5c13e9029500d6d76718130f5e5be10/rpds_py-0.26.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ac64f4b2bdb4ea622175c9ab7cf09444e412e22c0e02e906978b3b488af5fde8", size = 384301, upload_time = "2025-07-01T15:55:47.098Z" }, - { url = "https://files.pythonhosted.org/packages/41/e1/6b1859898bc292a9ce5776016c7312b672da00e25cec74d7beced1027286/rpds_py-0.26.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:181ef9b6bbf9845a264f9aa45c31836e9f3c1f13be565d0d010e964c661d1e2b", size = 412891, upload_time = "2025-07-01T15:55:48.412Z" }, - { url = "https://files.pythonhosted.org/packages/ef/b9/ceb39af29913c07966a61367b3c08b4f71fad841e32c6b59a129d5974698/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:49028aa684c144ea502a8e847d23aed5e4c2ef7cadfa7d5eaafcb40864844b7a", size = 557044, upload_time = "2025-07-01T15:55:49.816Z" }, - { url = "https://files.pythonhosted.org/packages/2f/27/35637b98380731a521f8ec4f3fd94e477964f04f6b2f8f7af8a2d889a4af/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:e5d524d68a474a9688336045bbf76cb0def88549c1b2ad9dbfec1fb7cfbe9170", size = 585774, upload_time = "2025-07-01T15:55:51.192Z" }, - { url = "https://files.pythonhosted.org/packages/52/d9/3f0f105420fecd18551b678c9a6ce60bd23986098b252a56d35781b3e7e9/rpds_py-0.26.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c1851f429b822831bd2edcbe0cfd12ee9ea77868f8d3daf267b189371671c80e", size = 554886, upload_time = "2025-07-01T15:55:52.541Z" }, - { url = "https://files.pythonhosted.org/packages/6b/c5/347c056a90dc8dd9bc240a08c527315008e1b5042e7a4cf4ac027be9d38a/rpds_py-0.26.0-cp314-cp314t-win32.whl", hash = "sha256:7bdb17009696214c3b66bb3590c6d62e14ac5935e53e929bcdbc5a495987a84f", size = 219027, upload_time = "2025-07-01T15:55:53.874Z" }, - { url = "https://files.pythonhosted.org/packages/75/04/5302cea1aa26d886d34cadbf2dc77d90d7737e576c0065f357b96dc7a1a6/rpds_py-0.26.0-cp314-cp314t-win_amd64.whl", hash = "sha256:f14440b9573a6f76b4ee4770c13f0b5921f71dde3b6fcb8dabbefd13b7fe05d7", size = 232821, upload_time = "2025-07-01T15:55:55.167Z" }, +version = "0.27.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e9/dd/2c0cbe774744272b0ae725f44032c77bdcab6e8bcf544bffa3b6e70c8dba/rpds_py-0.27.1.tar.gz", hash = "sha256:26a1c73171d10b7acccbded82bf6a586ab8203601e565badc74bbbf8bc5a10f8", size = 27479 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/fe/38de28dee5df58b8198c743fe2bea0c785c6d40941b9950bac4cdb71a014/rpds_py-0.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ae2775c1973e3c30316892737b91f9283f9908e3cc7625b9331271eaaed7dc90", size = 361887 }, + { url = "https://files.pythonhosted.org/packages/7c/9a/4b6c7eedc7dd90986bf0fab6ea2a091ec11c01b15f8ba0a14d3f80450468/rpds_py-0.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2643400120f55c8a96f7c9d858f7be0c88d383cd4653ae2cf0d0c88f668073e5", size = 345795 }, + { url = "https://files.pythonhosted.org/packages/6f/0e/e650e1b81922847a09cca820237b0edee69416a01268b7754d506ade11ad/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16323f674c089b0360674a4abd28d5042947d54ba620f72514d69be4ff64845e", size = 385121 }, + { url = "https://files.pythonhosted.org/packages/1b/ea/b306067a712988e2bff00dcc7c8f31d26c29b6d5931b461aa4b60a013e33/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a1f4814b65eacac94a00fc9a526e3fdafd78e439469644032032d0d63de4881", size = 398976 }, + { url = "https://files.pythonhosted.org/packages/2c/0a/26dc43c8840cb8fe239fe12dbc8d8de40f2365e838f3d395835dde72f0e5/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ba32c16b064267b22f1850a34051121d423b6f7338a12b9459550eb2096e7ec", size = 525953 }, + { url = "https://files.pythonhosted.org/packages/22/14/c85e8127b573aaf3a0cbd7fbb8c9c99e735a4a02180c84da2a463b766e9e/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5c20f33fd10485b80f65e800bbe5f6785af510b9f4056c5a3c612ebc83ba6cb", size = 407915 }, + { url = "https://files.pythonhosted.org/packages/ed/7b/8f4fee9ba1fb5ec856eb22d725a4efa3deb47f769597c809e03578b0f9d9/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:466bfe65bd932da36ff279ddd92de56b042f2266d752719beb97b08526268ec5", size = 386883 }, + { url = "https://files.pythonhosted.org/packages/86/47/28fa6d60f8b74fcdceba81b272f8d9836ac0340570f68f5df6b41838547b/rpds_py-0.27.1-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:41e532bbdcb57c92ba3be62c42e9f096431b4cf478da9bc3bc6ce5c38ab7ba7a", size = 405699 }, + { url = "https://files.pythonhosted.org/packages/d0/fd/c5987b5e054548df56953a21fe2ebed51fc1ec7c8f24fd41c067b68c4a0a/rpds_py-0.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f149826d742b406579466283769a8ea448eed82a789af0ed17b0cd5770433444", size = 423713 }, + { url = "https://files.pythonhosted.org/packages/ac/ba/3c4978b54a73ed19a7d74531be37a8bcc542d917c770e14d372b8daea186/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:80c60cfb5310677bd67cb1e85a1e8eb52e12529545441b43e6f14d90b878775a", size = 562324 }, + { url = "https://files.pythonhosted.org/packages/b5/6c/6943a91768fec16db09a42b08644b960cff540c66aab89b74be6d4a144ba/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7ee6521b9baf06085f62ba9c7a3e5becffbc32480d2f1b351559c001c38ce4c1", size = 593646 }, + { url = "https://files.pythonhosted.org/packages/11/73/9d7a8f4be5f4396f011a6bb7a19fe26303a0dac9064462f5651ced2f572f/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a512c8263249a9d68cac08b05dd59d2b3f2061d99b322813cbcc14c3c7421998", size = 558137 }, + { url = "https://files.pythonhosted.org/packages/6e/96/6772cbfa0e2485bcceef8071de7821f81aeac8bb45fbfd5542a3e8108165/rpds_py-0.27.1-cp312-cp312-win32.whl", hash = "sha256:819064fa048ba01b6dadc5116f3ac48610435ac9a0058bbde98e569f9e785c39", size = 221343 }, + { url = "https://files.pythonhosted.org/packages/67/b6/c82f0faa9af1c6a64669f73a17ee0eeef25aff30bb9a1c318509efe45d84/rpds_py-0.27.1-cp312-cp312-win_amd64.whl", hash = "sha256:d9199717881f13c32c4046a15f024971a3b78ad4ea029e8da6b86e5aa9cf4594", size = 232497 }, + { url = "https://files.pythonhosted.org/packages/e1/96/2817b44bd2ed11aebacc9251da03689d56109b9aba5e311297b6902136e2/rpds_py-0.27.1-cp312-cp312-win_arm64.whl", hash = "sha256:33aa65b97826a0e885ef6e278fbd934e98cdcfed80b63946025f01e2f5b29502", size = 222790 }, + { url = "https://files.pythonhosted.org/packages/cc/77/610aeee8d41e39080c7e14afa5387138e3c9fa9756ab893d09d99e7d8e98/rpds_py-0.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e4b9fcfbc021633863a37e92571d6f91851fa656f0180246e84cbd8b3f6b329b", size = 361741 }, + { url = "https://files.pythonhosted.org/packages/3a/fc/c43765f201c6a1c60be2043cbdb664013def52460a4c7adace89d6682bf4/rpds_py-0.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1441811a96eadca93c517d08df75de45e5ffe68aa3089924f963c782c4b898cf", size = 345574 }, + { url = "https://files.pythonhosted.org/packages/20/42/ee2b2ca114294cd9847d0ef9c26d2b0851b2e7e00bf14cc4c0b581df0fc3/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55266dafa22e672f5a4f65019015f90336ed31c6383bd53f5e7826d21a0e0b83", size = 385051 }, + { url = "https://files.pythonhosted.org/packages/fd/e8/1e430fe311e4799e02e2d1af7c765f024e95e17d651612425b226705f910/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d78827d7ac08627ea2c8e02c9e5b41180ea5ea1f747e9db0915e3adf36b62dcf", size = 398395 }, + { url = "https://files.pythonhosted.org/packages/82/95/9dc227d441ff2670651c27a739acb2535ccaf8b351a88d78c088965e5996/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae92443798a40a92dc5f0b01d8a7c93adde0c4dc965310a29ae7c64d72b9fad2", size = 524334 }, + { url = "https://files.pythonhosted.org/packages/87/01/a670c232f401d9ad461d9a332aa4080cd3cb1d1df18213dbd0d2a6a7ab51/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c46c9dd2403b66a2a3b9720ec4b74d4ab49d4fabf9f03dfdce2d42af913fe8d0", size = 407691 }, + { url = "https://files.pythonhosted.org/packages/03/36/0a14aebbaa26fe7fab4780c76f2239e76cc95a0090bdb25e31d95c492fcd/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2efe4eb1d01b7f5f1939f4ef30ecea6c6b3521eec451fb93191bf84b2a522418", size = 386868 }, + { url = "https://files.pythonhosted.org/packages/3b/03/8c897fb8b5347ff6c1cc31239b9611c5bf79d78c984430887a353e1409a1/rpds_py-0.27.1-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:15d3b4d83582d10c601f481eca29c3f138d44c92187d197aff663a269197c02d", size = 405469 }, + { url = "https://files.pythonhosted.org/packages/da/07/88c60edc2df74850d496d78a1fdcdc7b54360a7f610a4d50008309d41b94/rpds_py-0.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4ed2e16abbc982a169d30d1a420274a709949e2cbdef119fe2ec9d870b42f274", size = 422125 }, + { url = "https://files.pythonhosted.org/packages/6b/86/5f4c707603e41b05f191a749984f390dabcbc467cf833769b47bf14ba04f/rpds_py-0.27.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a75f305c9b013289121ec0f1181931975df78738cdf650093e6b86d74aa7d8dd", size = 562341 }, + { url = "https://files.pythonhosted.org/packages/b2/92/3c0cb2492094e3cd9baf9e49bbb7befeceb584ea0c1a8b5939dca4da12e5/rpds_py-0.27.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:67ce7620704745881a3d4b0ada80ab4d99df390838839921f99e63c474f82cf2", size = 592511 }, + { url = "https://files.pythonhosted.org/packages/10/bb/82e64fbb0047c46a168faa28d0d45a7851cd0582f850b966811d30f67ad8/rpds_py-0.27.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d992ac10eb86d9b6f369647b6a3f412fc0075cfd5d799530e84d335e440a002", size = 557736 }, + { url = "https://files.pythonhosted.org/packages/00/95/3c863973d409210da7fb41958172c6b7dbe7fc34e04d3cc1f10bb85e979f/rpds_py-0.27.1-cp313-cp313-win32.whl", hash = "sha256:4f75e4bd8ab8db624e02c8e2fc4063021b58becdbe6df793a8111d9343aec1e3", size = 221462 }, + { url = "https://files.pythonhosted.org/packages/ce/2c/5867b14a81dc217b56d95a9f2a40fdbc56a1ab0181b80132beeecbd4b2d6/rpds_py-0.27.1-cp313-cp313-win_amd64.whl", hash = "sha256:f9025faafc62ed0b75a53e541895ca272815bec18abe2249ff6501c8f2e12b83", size = 232034 }, + { url = "https://files.pythonhosted.org/packages/c7/78/3958f3f018c01923823f1e47f1cc338e398814b92d83cd278364446fac66/rpds_py-0.27.1-cp313-cp313-win_arm64.whl", hash = "sha256:ed10dc32829e7d222b7d3b93136d25a406ba9788f6a7ebf6809092da1f4d279d", size = 222392 }, + { url = "https://files.pythonhosted.org/packages/01/76/1cdf1f91aed5c3a7bf2eba1f1c4e4d6f57832d73003919a20118870ea659/rpds_py-0.27.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:92022bbbad0d4426e616815b16bc4127f83c9a74940e1ccf3cfe0b387aba0228", size = 358355 }, + { url = "https://files.pythonhosted.org/packages/c3/6f/bf142541229374287604caf3bb2a4ae17f0a580798fd72d3b009b532db4e/rpds_py-0.27.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:47162fdab9407ec3f160805ac3e154df042e577dd53341745fc7fb3f625e6d92", size = 342138 }, + { url = "https://files.pythonhosted.org/packages/1a/77/355b1c041d6be40886c44ff5e798b4e2769e497b790f0f7fd1e78d17e9a8/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb89bec23fddc489e5d78b550a7b773557c9ab58b7946154a10a6f7a214a48b2", size = 380247 }, + { url = "https://files.pythonhosted.org/packages/d6/a4/d9cef5c3946ea271ce2243c51481971cd6e34f21925af2783dd17b26e815/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e48af21883ded2b3e9eb48cb7880ad8598b31ab752ff3be6457001d78f416723", size = 390699 }, + { url = "https://files.pythonhosted.org/packages/3a/06/005106a7b8c6c1a7e91b73169e49870f4af5256119d34a361ae5240a0c1d/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6f5b7bd8e219ed50299e58551a410b64daafb5017d54bbe822e003856f06a802", size = 521852 }, + { url = "https://files.pythonhosted.org/packages/e5/3e/50fb1dac0948e17a02eb05c24510a8fe12d5ce8561c6b7b7d1339ab7ab9c/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08f1e20bccf73b08d12d804d6e1c22ca5530e71659e6673bce31a6bb71c1e73f", size = 402582 }, + { url = "https://files.pythonhosted.org/packages/cb/b0/f4e224090dc5b0ec15f31a02d746ab24101dd430847c4d99123798661bfc/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dc5dceeaefcc96dc192e3a80bbe1d6c410c469e97bdd47494a7d930987f18b2", size = 384126 }, + { url = "https://files.pythonhosted.org/packages/54/77/ac339d5f82b6afff1df8f0fe0d2145cc827992cb5f8eeb90fc9f31ef7a63/rpds_py-0.27.1-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:d76f9cc8665acdc0c9177043746775aa7babbf479b5520b78ae4002d889f5c21", size = 399486 }, + { url = "https://files.pythonhosted.org/packages/d6/29/3e1c255eee6ac358c056a57d6d6869baa00a62fa32eea5ee0632039c50a3/rpds_py-0.27.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:134fae0e36022edad8290a6661edf40c023562964efea0cc0ec7f5d392d2aaef", size = 414832 }, + { url = "https://files.pythonhosted.org/packages/3f/db/6d498b844342deb3fa1d030598db93937a9964fcf5cb4da4feb5f17be34b/rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb11a4f1b2b63337cfd3b4d110af778a59aae51c81d195768e353d8b52f88081", size = 557249 }, + { url = "https://files.pythonhosted.org/packages/60/f3/690dd38e2310b6f68858a331399b4d6dbb9132c3e8ef8b4333b96caf403d/rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:13e608ac9f50a0ed4faec0e90ece76ae33b34c0e8656e3dceb9a7db994c692cd", size = 587356 }, + { url = "https://files.pythonhosted.org/packages/86/e3/84507781cccd0145f35b1dc32c72675200c5ce8d5b30f813e49424ef68fc/rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dd2135527aa40f061350c3f8f89da2644de26cd73e4de458e79606384f4f68e7", size = 555300 }, + { url = "https://files.pythonhosted.org/packages/e5/ee/375469849e6b429b3516206b4580a79e9ef3eb12920ddbd4492b56eaacbe/rpds_py-0.27.1-cp313-cp313t-win32.whl", hash = "sha256:3020724ade63fe320a972e2ffd93b5623227e684315adce194941167fee02688", size = 216714 }, + { url = "https://files.pythonhosted.org/packages/21/87/3fc94e47c9bd0742660e84706c311a860dcae4374cf4a03c477e23ce605a/rpds_py-0.27.1-cp313-cp313t-win_amd64.whl", hash = "sha256:8ee50c3e41739886606388ba3ab3ee2aae9f35fb23f833091833255a31740797", size = 228943 }, + { url = "https://files.pythonhosted.org/packages/70/36/b6e6066520a07cf029d385de869729a895917b411e777ab1cde878100a1d/rpds_py-0.27.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:acb9aafccaae278f449d9c713b64a9e68662e7799dbd5859e2c6b3c67b56d334", size = 362472 }, + { url = "https://files.pythonhosted.org/packages/af/07/b4646032e0dcec0df9c73a3bd52f63bc6c5f9cda992f06bd0e73fe3fbebd/rpds_py-0.27.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:b7fb801aa7f845ddf601c49630deeeccde7ce10065561d92729bfe81bd21fb33", size = 345676 }, + { url = "https://files.pythonhosted.org/packages/b0/16/2f1003ee5d0af4bcb13c0cf894957984c32a6751ed7206db2aee7379a55e/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe0dd05afb46597b9a2e11c351e5e4283c741237e7f617ffb3252780cca9336a", size = 385313 }, + { url = "https://files.pythonhosted.org/packages/05/cd/7eb6dd7b232e7f2654d03fa07f1414d7dfc980e82ba71e40a7c46fd95484/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b6dfb0e058adb12d8b1d1b25f686e94ffa65d9995a5157afe99743bf7369d62b", size = 399080 }, + { url = "https://files.pythonhosted.org/packages/20/51/5829afd5000ec1cb60f304711f02572d619040aa3ec033d8226817d1e571/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed090ccd235f6fa8bb5861684567f0a83e04f52dfc2e5c05f2e4b1309fcf85e7", size = 523868 }, + { url = "https://files.pythonhosted.org/packages/05/2c/30eebca20d5db95720ab4d2faec1b5e4c1025c473f703738c371241476a2/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf876e79763eecf3e7356f157540d6a093cef395b65514f17a356f62af6cc136", size = 408750 }, + { url = "https://files.pythonhosted.org/packages/90/1a/cdb5083f043597c4d4276eae4e4c70c55ab5accec078da8611f24575a367/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12ed005216a51b1d6e2b02a7bd31885fe317e45897de81d86dcce7d74618ffff", size = 387688 }, + { url = "https://files.pythonhosted.org/packages/7c/92/cf786a15320e173f945d205ab31585cc43969743bb1a48b6888f7a2b0a2d/rpds_py-0.27.1-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:ee4308f409a40e50593c7e3bb8cbe0b4d4c66d1674a316324f0c2f5383b486f9", size = 407225 }, + { url = "https://files.pythonhosted.org/packages/33/5c/85ee16df5b65063ef26017bef33096557a4c83fbe56218ac7cd8c235f16d/rpds_py-0.27.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0b08d152555acf1f455154d498ca855618c1378ec810646fcd7c76416ac6dc60", size = 423361 }, + { url = "https://files.pythonhosted.org/packages/4b/8e/1c2741307fcabd1a334ecf008e92c4f47bb6f848712cf15c923becfe82bb/rpds_py-0.27.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:dce51c828941973a5684d458214d3a36fcd28da3e1875d659388f4f9f12cc33e", size = 562493 }, + { url = "https://files.pythonhosted.org/packages/04/03/5159321baae9b2222442a70c1f988cbbd66b9be0675dd3936461269be360/rpds_py-0.27.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:c1476d6f29eb81aa4151c9a31219b03f1f798dc43d8af1250a870735516a1212", size = 592623 }, + { url = "https://files.pythonhosted.org/packages/ff/39/c09fd1ad28b85bc1d4554a8710233c9f4cefd03d7717a1b8fbfd171d1167/rpds_py-0.27.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:3ce0cac322b0d69b63c9cdb895ee1b65805ec9ffad37639f291dd79467bee675", size = 558800 }, + { url = "https://files.pythonhosted.org/packages/c5/d6/99228e6bbcf4baa764b18258f519a9035131d91b538d4e0e294313462a98/rpds_py-0.27.1-cp314-cp314-win32.whl", hash = "sha256:dfbfac137d2a3d0725758cd141f878bf4329ba25e34979797c89474a89a8a3a3", size = 221943 }, + { url = "https://files.pythonhosted.org/packages/be/07/c802bc6b8e95be83b79bdf23d1aa61d68324cb1006e245d6c58e959e314d/rpds_py-0.27.1-cp314-cp314-win_amd64.whl", hash = "sha256:a6e57b0abfe7cc513450fcf529eb486b6e4d3f8aee83e92eb5f1ef848218d456", size = 233739 }, + { url = "https://files.pythonhosted.org/packages/c8/89/3e1b1c16d4c2d547c5717377a8df99aee8099ff050f87c45cb4d5fa70891/rpds_py-0.27.1-cp314-cp314-win_arm64.whl", hash = "sha256:faf8d146f3d476abfee026c4ae3bdd9ca14236ae4e4c310cbd1cf75ba33d24a3", size = 223120 }, + { url = "https://files.pythonhosted.org/packages/62/7e/dc7931dc2fa4a6e46b2a4fa744a9fe5c548efd70e0ba74f40b39fa4a8c10/rpds_py-0.27.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:ba81d2b56b6d4911ce735aad0a1d4495e808b8ee4dc58715998741a26874e7c2", size = 358944 }, + { url = "https://files.pythonhosted.org/packages/e6/22/4af76ac4e9f336bfb1a5f240d18a33c6b2fcaadb7472ac7680576512b49a/rpds_py-0.27.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:84f7d509870098de0e864cad0102711c1e24e9b1a50ee713b65928adb22269e4", size = 342283 }, + { url = "https://files.pythonhosted.org/packages/1c/15/2a7c619b3c2272ea9feb9ade67a45c40b3eeb500d503ad4c28c395dc51b4/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9e960fc78fecd1100539f14132425e1d5fe44ecb9239f8f27f079962021523e", size = 380320 }, + { url = "https://files.pythonhosted.org/packages/a2/7d/4c6d243ba4a3057e994bb5bedd01b5c963c12fe38dde707a52acdb3849e7/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:62f85b665cedab1a503747617393573995dac4600ff51869d69ad2f39eb5e817", size = 391760 }, + { url = "https://files.pythonhosted.org/packages/b4/71/b19401a909b83bcd67f90221330bc1ef11bc486fe4e04c24388d28a618ae/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fed467af29776f6556250c9ed85ea5a4dd121ab56a5f8b206e3e7a4c551e48ec", size = 522476 }, + { url = "https://files.pythonhosted.org/packages/e4/44/1a3b9715c0455d2e2f0f6df5ee6d6f5afdc423d0773a8a682ed2b43c566c/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2729615f9d430af0ae6b36cf042cb55c0936408d543fb691e1a9e36648fd35a", size = 403418 }, + { url = "https://files.pythonhosted.org/packages/1c/4b/fb6c4f14984eb56673bc868a66536f53417ddb13ed44b391998100a06a96/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b207d881a9aef7ba753d69c123a35d96ca7cb808056998f6b9e8747321f03b8", size = 384771 }, + { url = "https://files.pythonhosted.org/packages/c0/56/d5265d2d28b7420d7b4d4d85cad8ef891760f5135102e60d5c970b976e41/rpds_py-0.27.1-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:639fd5efec029f99b79ae47e5d7e00ad8a773da899b6309f6786ecaf22948c48", size = 400022 }, + { url = "https://files.pythonhosted.org/packages/8f/e9/9f5fc70164a569bdd6ed9046486c3568d6926e3a49bdefeeccfb18655875/rpds_py-0.27.1-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fecc80cb2a90e28af8a9b366edacf33d7a91cbfe4c2c4544ea1246e949cfebeb", size = 416787 }, + { url = "https://files.pythonhosted.org/packages/d4/64/56dd03430ba491db943a81dcdef115a985aac5f44f565cd39a00c766d45c/rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42a89282d711711d0a62d6f57d81aa43a1368686c45bc1c46b7f079d55692734", size = 557538 }, + { url = "https://files.pythonhosted.org/packages/3f/36/92cc885a3129993b1d963a2a42ecf64e6a8e129d2c7cc980dbeba84e55fb/rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:cf9931f14223de59551ab9d38ed18d92f14f055a5f78c1d8ad6493f735021bbb", size = 588512 }, + { url = "https://files.pythonhosted.org/packages/dd/10/6b283707780a81919f71625351182b4f98932ac89a09023cb61865136244/rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f39f58a27cc6e59f432b568ed8429c7e1641324fbe38131de852cd77b2d534b0", size = 555813 }, + { url = "https://files.pythonhosted.org/packages/04/2e/30b5ea18c01379da6272a92825dd7e53dc9d15c88a19e97932d35d430ef7/rpds_py-0.27.1-cp314-cp314t-win32.whl", hash = "sha256:d5fa0ee122dc09e23607a28e6d7b150da16c662e66409bbe85230e4c85bb528a", size = 217385 }, + { url = "https://files.pythonhosted.org/packages/32/7d/97119da51cb1dd3f2f3c0805f155a3aa4a95fa44fe7d78ae15e69edf4f34/rpds_py-0.27.1-cp314-cp314t-win_amd64.whl", hash = "sha256:6567d2bb951e21232c2f660c24cf3470bb96de56cdcb3f071a83feeaff8a2772", size = 230097 }, ] [[package]] name = "ruamel-yaml" -version = "0.18.14" +version = "0.18.15" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ruamel-yaml-clib", marker = "python_full_version < '3.14' and platform_python_implementation == 'CPython'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/87/6da0df742a4684263261c253f00edd5829e6aca970fff69e75028cccc547/ruamel.yaml-0.18.14.tar.gz", hash = "sha256:7227b76aaec364df15936730efbf7d72b30c0b79b1d578bbb8e3dcb2d81f52b7", size = 145511, upload_time = "2025-06-09T08:51:09.828Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3e/db/f3950f5e5031b618aae9f423a39bf81a55c148aecd15a34527898e752cf4/ruamel.yaml-0.18.15.tar.gz", hash = "sha256:dbfca74b018c4c3fba0b9cc9ee33e53c371194a9000e694995e620490fd40700", size = 146865 } wheels = [ - { url = "https://files.pythonhosted.org/packages/af/6d/6fe4805235e193aad4aaf979160dd1f3c487c57d48b810c816e6e842171b/ruamel.yaml-0.18.14-py3-none-any.whl", hash = "sha256:710ff198bb53da66718c7db27eec4fbcc9aa6ca7204e4c1df2f282b6fe5eb6b2", size = 118570, upload_time = "2025-06-09T08:51:06.348Z" }, + { url = "https://files.pythonhosted.org/packages/d1/e5/f2a0621f1781b76a38194acae72f01e37b1941470407345b6e8653ad7640/ruamel.yaml-0.18.15-py3-none-any.whl", hash = "sha256:148f6488d698b7a5eded5ea793a025308b25eca97208181b6a026037f391f701", size = 119702 }, ] [[package]] name = "ruamel-yaml-clib" version = "0.2.12" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315, upload_time = "2024-10-20T10:10:56.22Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433, upload_time = "2024-10-20T10:12:55.657Z" }, - { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362, upload_time = "2024-10-20T10:12:57.155Z" }, - { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118, upload_time = "2024-10-20T10:12:58.501Z" }, - { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497, upload_time = "2024-10-20T10:13:00.211Z" }, - { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042, upload_time = "2024-10-21T11:26:46.038Z" }, - { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831, upload_time = "2024-10-21T11:26:47.487Z" }, - { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692, upload_time = "2024-12-11T19:58:17.252Z" }, - { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777, upload_time = "2024-10-20T10:13:01.395Z" }, - { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523, upload_time = "2024-10-20T10:13:02.768Z" }, - { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011, upload_time = "2024-10-20T10:13:04.377Z" }, - { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488, upload_time = "2024-10-20T10:13:05.906Z" }, - { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066, upload_time = "2024-10-20T10:13:07.26Z" }, - { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785, upload_time = "2024-10-20T10:13:08.504Z" }, - { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017, upload_time = "2024-10-21T11:26:48.866Z" }, - { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270, upload_time = "2024-10-21T11:26:50.213Z" }, - { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059, upload_time = "2024-12-11T19:58:18.846Z" }, - { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583, upload_time = "2024-10-20T10:13:09.658Z" }, - { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190, upload_time = "2024-10-20T10:13:10.66Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433 }, + { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362 }, + { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118 }, + { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497 }, + { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042 }, + { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831 }, + { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692 }, + { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777 }, + { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523 }, + { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011 }, + { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488 }, + { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066 }, + { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785 }, + { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017 }, + { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270 }, + { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059 }, + { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583 }, + { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190 }, ] [[package]] @@ -2574,14 +2755,14 @@ dependencies = [ { name = "click" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/84/a4/b61c6e7a13b848fd985c9ed9acd525ccb1c2675e6cfa0d62292ae8015792/savepagenow-1.3.0.tar.gz", hash = "sha256:d0bc6bbe4606c700315015c3defcfab3c329208002b2b8cdc59f9b52996c6d3f", size = 42927, upload_time = "2023-07-01T13:31:49.607Z" } +sdist = { url = "https://files.pythonhosted.org/packages/84/a4/b61c6e7a13b848fd985c9ed9acd525ccb1c2675e6cfa0d62292ae8015792/savepagenow-1.3.0.tar.gz", hash = "sha256:d0bc6bbe4606c700315015c3defcfab3c329208002b2b8cdc59f9b52996c6d3f", size = 42927 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/8f/aea39979f8a7091ad2242a038a0e4c2b463593923ce598a914255dfba9ef/savepagenow-1.3.0-py2.py3-none-any.whl", hash = "sha256:4b0a4fff47254c160a37a20868ab53bb90da3d3f9f96086a9255b2375e39fcbf", size = 5649, upload_time = "2023-07-01T13:31:48.005Z" }, + { url = "https://files.pythonhosted.org/packages/a6/8f/aea39979f8a7091ad2242a038a0e4c2b463593923ce598a914255dfba9ef/savepagenow-1.3.0-py2.py3-none-any.whl", hash = "sha256:4b0a4fff47254c160a37a20868ab53bb90da3d3f9f96086a9255b2375e39fcbf", size = 5649 }, ] [[package]] name = "scikit-learn" -version = "1.7.1" +version = "1.7.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "joblib" }, @@ -2589,124 +2770,134 @@ dependencies = [ { name = "scipy" }, { name = "threadpoolctl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/41/84/5f4af978fff619706b8961accac84780a6d298d82a8873446f72edb4ead0/scikit_learn-1.7.1.tar.gz", hash = "sha256:24b3f1e976a4665aa74ee0fcaac2b8fccc6ae77c8e07ab25da3ba6d3292b9802", size = 7190445, upload_time = "2025-07-18T08:01:54.5Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/16/57f176585b35ed865f51b04117947fe20f130f78940c6477b6d66279c9c2/scikit_learn-1.7.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3cee419b49b5bbae8796ecd690f97aa412ef1674410c23fc3257c6b8b85b8087", size = 9260431, upload_time = "2025-07-18T08:01:22.77Z" }, - { url = "https://files.pythonhosted.org/packages/67/4e/899317092f5efcab0e9bc929e3391341cec8fb0e816c4789686770024580/scikit_learn-1.7.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2fd8b8d35817b0d9ebf0b576f7d5ffbbabdb55536b0655a8aaae629d7ffd2e1f", size = 8637191, upload_time = "2025-07-18T08:01:24.731Z" }, - { url = "https://files.pythonhosted.org/packages/f3/1b/998312db6d361ded1dd56b457ada371a8d8d77ca2195a7d18fd8a1736f21/scikit_learn-1.7.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:588410fa19a96a69763202f1d6b7b91d5d7a5d73be36e189bc6396bfb355bd87", size = 9486346, upload_time = "2025-07-18T08:01:26.713Z" }, - { url = "https://files.pythonhosted.org/packages/ad/09/a2aa0b4e644e5c4ede7006748f24e72863ba2ae71897fecfd832afea01b4/scikit_learn-1.7.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e3142f0abe1ad1d1c31a2ae987621e41f6b578144a911ff4ac94781a583adad7", size = 9290988, upload_time = "2025-07-18T08:01:28.938Z" }, - { url = "https://files.pythonhosted.org/packages/15/fa/c61a787e35f05f17fc10523f567677ec4eeee5f95aa4798dbbbcd9625617/scikit_learn-1.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:3ddd9092c1bd469acab337d87930067c87eac6bd544f8d5027430983f1e1ae88", size = 8735568, upload_time = "2025-07-18T08:01:30.936Z" }, - { url = "https://files.pythonhosted.org/packages/52/f8/e0533303f318a0f37b88300d21f79b6ac067188d4824f1047a37214ab718/scikit_learn-1.7.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b7839687fa46d02e01035ad775982f2470be2668e13ddd151f0f55a5bf123bae", size = 9213143, upload_time = "2025-07-18T08:01:32.942Z" }, - { url = "https://files.pythonhosted.org/packages/71/f3/f1df377d1bdfc3e3e2adc9c119c238b182293e6740df4cbeac6de2cc3e23/scikit_learn-1.7.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:a10f276639195a96c86aa572ee0698ad64ee939a7b042060b98bd1930c261d10", size = 8591977, upload_time = "2025-07-18T08:01:34.967Z" }, - { url = "https://files.pythonhosted.org/packages/99/72/c86a4cd867816350fe8dee13f30222340b9cd6b96173955819a5561810c5/scikit_learn-1.7.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:13679981fdaebc10cc4c13c43344416a86fcbc61449cb3e6517e1df9d12c8309", size = 9436142, upload_time = "2025-07-18T08:01:37.397Z" }, - { url = "https://files.pythonhosted.org/packages/e8/66/277967b29bd297538dc7a6ecfb1a7dce751beabd0d7f7a2233be7a4f7832/scikit_learn-1.7.1-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4f1262883c6a63f067a980a8cdd2d2e7f2513dddcef6a9eaada6416a7a7cbe43", size = 9282996, upload_time = "2025-07-18T08:01:39.721Z" }, - { url = "https://files.pythonhosted.org/packages/e2/47/9291cfa1db1dae9880420d1e07dbc7e8dd4a7cdbc42eaba22512e6bde958/scikit_learn-1.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:ca6d31fb10e04d50bfd2b50d66744729dbb512d4efd0223b864e2fdbfc4cee11", size = 8707418, upload_time = "2025-07-18T08:01:42.124Z" }, - { url = "https://files.pythonhosted.org/packages/61/95/45726819beccdaa34d3362ea9b2ff9f2b5d3b8bf721bd632675870308ceb/scikit_learn-1.7.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:781674d096303cfe3d351ae6963ff7c958db61cde3421cd490e3a5a58f2a94ae", size = 9561466, upload_time = "2025-07-18T08:01:44.195Z" }, - { url = "https://files.pythonhosted.org/packages/ee/1c/6f4b3344805de783d20a51eb24d4c9ad4b11a7f75c1801e6ec6d777361fd/scikit_learn-1.7.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:10679f7f125fe7ecd5fad37dd1aa2daae7e3ad8df7f3eefa08901b8254b3e12c", size = 9040467, upload_time = "2025-07-18T08:01:46.671Z" }, - { url = "https://files.pythonhosted.org/packages/6f/80/abe18fe471af9f1d181904203d62697998b27d9b62124cd281d740ded2f9/scikit_learn-1.7.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:1f812729e38c8cb37f760dce71a9b83ccfb04f59b3dca7c6079dcdc60544fa9e", size = 9532052, upload_time = "2025-07-18T08:01:48.676Z" }, - { url = "https://files.pythonhosted.org/packages/14/82/b21aa1e0c4cee7e74864d3a5a721ab8fcae5ca55033cb6263dca297ed35b/scikit_learn-1.7.1-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:88e1a20131cf741b84b89567e1717f27a2ced228e0f29103426102bc2e3b8ef7", size = 9361575, upload_time = "2025-07-18T08:01:50.639Z" }, - { url = "https://files.pythonhosted.org/packages/f2/20/f4777fcd5627dc6695fa6b92179d0edb7a3ac1b91bcd9a1c7f64fa7ade23/scikit_learn-1.7.1-cp313-cp313t-win_amd64.whl", hash = "sha256:b1bd1d919210b6a10b7554b717c9000b5485aa95a1d0f177ae0d7ee8ec750da5", size = 9277310, upload_time = "2025-07-18T08:01:52.547Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/98/c2/a7855e41c9d285dfe86dc50b250978105dce513d6e459ea66a6aeb0e1e0c/scikit_learn-1.7.2.tar.gz", hash = "sha256:20e9e49ecd130598f1ca38a1d85090e1a600147b9c02fa6f15d69cb53d968fda", size = 7193136 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/aa/3996e2196075689afb9fce0410ebdb4a09099d7964d061d7213700204409/scikit_learn-1.7.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d91a97fa2b706943822398ab943cde71858a50245e31bc71dba62aab1d60a96", size = 9259818 }, + { url = "https://files.pythonhosted.org/packages/43/5d/779320063e88af9c4a7c2cf463ff11c21ac9c8bd730c4a294b0000b666c9/scikit_learn-1.7.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:acbc0f5fd2edd3432a22c69bed78e837c70cf896cd7993d71d51ba6708507476", size = 8636997 }, + { url = "https://files.pythonhosted.org/packages/5c/d0/0c577d9325b05594fdd33aa970bf53fb673f051a45496842caee13cfd7fe/scikit_learn-1.7.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e5bf3d930aee75a65478df91ac1225ff89cd28e9ac7bd1196853a9229b6adb0b", size = 9478381 }, + { url = "https://files.pythonhosted.org/packages/82/70/8bf44b933837ba8494ca0fc9a9ab60f1c13b062ad0197f60a56e2fc4c43e/scikit_learn-1.7.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4d6e9deed1a47aca9fe2f267ab8e8fe82ee20b4526b2c0cd9e135cea10feb44", size = 9300296 }, + { url = "https://files.pythonhosted.org/packages/c6/99/ed35197a158f1fdc2fe7c3680e9c70d0128f662e1fee4ed495f4b5e13db0/scikit_learn-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:6088aa475f0785e01bcf8529f55280a3d7d298679f50c0bb70a2364a82d0b290", size = 8731256 }, + { url = "https://files.pythonhosted.org/packages/ae/93/a3038cb0293037fd335f77f31fe053b89c72f17b1c8908c576c29d953e84/scikit_learn-1.7.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0b7dacaa05e5d76759fb071558a8b5130f4845166d88654a0f9bdf3eb57851b7", size = 9212382 }, + { url = "https://files.pythonhosted.org/packages/40/dd/9a88879b0c1104259136146e4742026b52df8540c39fec21a6383f8292c7/scikit_learn-1.7.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:abebbd61ad9e1deed54cca45caea8ad5f79e1b93173dece40bb8e0c658dbe6fe", size = 8592042 }, + { url = "https://files.pythonhosted.org/packages/46/af/c5e286471b7d10871b811b72ae794ac5fe2989c0a2df07f0ec723030f5f5/scikit_learn-1.7.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:502c18e39849c0ea1a5d681af1dbcf15f6cce601aebb657aabbfe84133c1907f", size = 9434180 }, + { url = "https://files.pythonhosted.org/packages/f1/fd/df59faa53312d585023b2da27e866524ffb8faf87a68516c23896c718320/scikit_learn-1.7.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a4c328a71785382fe3fe676a9ecf2c86189249beff90bf85e22bdb7efaf9ae0", size = 9283660 }, + { url = "https://files.pythonhosted.org/packages/a7/c7/03000262759d7b6f38c836ff9d512f438a70d8a8ddae68ee80de72dcfb63/scikit_learn-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:63a9afd6f7b229aad94618c01c252ce9e6fa97918c5ca19c9a17a087d819440c", size = 8702057 }, + { url = "https://files.pythonhosted.org/packages/55/87/ef5eb1f267084532c8e4aef98a28b6ffe7425acbfd64b5e2f2e066bc29b3/scikit_learn-1.7.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9acb6c5e867447b4e1390930e3944a005e2cb115922e693c08a323421a6966e8", size = 9558731 }, + { url = "https://files.pythonhosted.org/packages/93/f8/6c1e3fc14b10118068d7938878a9f3f4e6d7b74a8ddb1e5bed65159ccda8/scikit_learn-1.7.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:2a41e2a0ef45063e654152ec9d8bcfc39f7afce35b08902bfe290c2498a67a6a", size = 9038852 }, + { url = "https://files.pythonhosted.org/packages/83/87/066cafc896ee540c34becf95d30375fe5cbe93c3b75a0ee9aa852cd60021/scikit_learn-1.7.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98335fb98509b73385b3ab2bd0639b1f610541d3988ee675c670371d6a87aa7c", size = 9527094 }, + { url = "https://files.pythonhosted.org/packages/9c/2b/4903e1ccafa1f6453b1ab78413938c8800633988c838aa0be386cbb33072/scikit_learn-1.7.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:191e5550980d45449126e23ed1d5e9e24b2c68329ee1f691a3987476e115e09c", size = 9367436 }, + { url = "https://files.pythonhosted.org/packages/b5/aa/8444be3cfb10451617ff9d177b3c190288f4563e6c50ff02728be67ad094/scikit_learn-1.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:57dc4deb1d3762c75d685507fbd0bc17160144b2f2ba4ccea5dc285ab0d0e973", size = 9275749 }, + { url = "https://files.pythonhosted.org/packages/d9/82/dee5acf66837852e8e68df6d8d3a6cb22d3df997b733b032f513d95205b7/scikit_learn-1.7.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fa8f63940e29c82d1e67a45d5297bdebbcb585f5a5a50c4914cc2e852ab77f33", size = 9208906 }, + { url = "https://files.pythonhosted.org/packages/3c/30/9029e54e17b87cb7d50d51a5926429c683d5b4c1732f0507a6c3bed9bf65/scikit_learn-1.7.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:f95dc55b7902b91331fa4e5845dd5bde0580c9cd9612b1b2791b7e80c3d32615", size = 8627836 }, + { url = "https://files.pythonhosted.org/packages/60/18/4a52c635c71b536879f4b971c2cedf32c35ee78f48367885ed8025d1f7ee/scikit_learn-1.7.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9656e4a53e54578ad10a434dc1f993330568cfee176dff07112b8785fb413106", size = 9426236 }, + { url = "https://files.pythonhosted.org/packages/99/7e/290362f6ab582128c53445458a5befd471ed1ea37953d5bcf80604619250/scikit_learn-1.7.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96dc05a854add0e50d3f47a1ef21a10a595016da5b007c7d9cd9d0bffd1fcc61", size = 9312593 }, + { url = "https://files.pythonhosted.org/packages/8e/87/24f541b6d62b1794939ae6422f8023703bbf6900378b2b34e0b4384dfefd/scikit_learn-1.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:bb24510ed3f9f61476181e4db51ce801e2ba37541def12dc9333b946fc7a9cf8", size = 8820007 }, ] [[package]] name = "scipy" -version = "1.16.1" +version = "1.16.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f5/4a/b927028464795439faec8eaf0b03b011005c487bb2d07409f28bf30879c4/scipy-1.16.1.tar.gz", hash = "sha256:44c76f9e8b6e8e488a586190ab38016e4ed2f8a038af7cd3defa903c0a2238b3", size = 30580861, upload_time = "2025-07-27T16:33:30.834Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/d9/ec4864f5896232133f51382b54a08de91a9d1af7a76dfa372894026dfee2/scipy-1.16.1-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:81b433bbeaf35728dad619afc002db9b189e45eebe2cd676effe1fb93fef2b9c", size = 36575194, upload_time = "2025-07-27T16:27:41.321Z" }, - { url = "https://files.pythonhosted.org/packages/5c/6d/40e81ecfb688e9d25d34a847dca361982a6addf8e31f0957b1a54fbfa994/scipy-1.16.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:886cc81fdb4c6903a3bb0464047c25a6d1016fef77bb97949817d0c0d79f9e04", size = 28594590, upload_time = "2025-07-27T16:27:49.204Z" }, - { url = "https://files.pythonhosted.org/packages/0e/37/9f65178edfcc629377ce9a64fc09baebea18c80a9e57ae09a52edf84880b/scipy-1.16.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:15240c3aac087a522b4eaedb09f0ad061753c5eebf1ea430859e5bf8640d5919", size = 20866458, upload_time = "2025-07-27T16:27:54.98Z" }, - { url = "https://files.pythonhosted.org/packages/2c/7b/749a66766871ea4cb1d1ea10f27004db63023074c22abed51f22f09770e0/scipy-1.16.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:65f81a25805f3659b48126b5053d9e823d3215e4a63730b5e1671852a1705921", size = 23539318, upload_time = "2025-07-27T16:28:01.604Z" }, - { url = "https://files.pythonhosted.org/packages/c4/db/8d4afec60eb833a666434d4541a3151eedbf2494ea6d4d468cbe877f00cd/scipy-1.16.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:6c62eea7f607f122069b9bad3f99489ddca1a5173bef8a0c75555d7488b6f725", size = 33292899, upload_time = "2025-07-27T16:28:09.147Z" }, - { url = "https://files.pythonhosted.org/packages/51/1e/79023ca3bbb13a015d7d2757ecca3b81293c663694c35d6541b4dca53e98/scipy-1.16.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f965bbf3235b01c776115ab18f092a95aa74c271a52577bcb0563e85738fd618", size = 35162637, upload_time = "2025-07-27T16:28:17.535Z" }, - { url = "https://files.pythonhosted.org/packages/b6/49/0648665f9c29fdaca4c679182eb972935b3b4f5ace41d323c32352f29816/scipy-1.16.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f006e323874ffd0b0b816d8c6a8e7f9a73d55ab3b8c3f72b752b226d0e3ac83d", size = 35490507, upload_time = "2025-07-27T16:28:25.705Z" }, - { url = "https://files.pythonhosted.org/packages/62/8f/66cbb9d6bbb18d8c658f774904f42a92078707a7c71e5347e8bf2f52bb89/scipy-1.16.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8fd15fc5085ab4cca74cb91fe0a4263b1f32e4420761ddae531ad60934c2119", size = 37923998, upload_time = "2025-07-27T16:28:34.339Z" }, - { url = "https://files.pythonhosted.org/packages/14/c3/61f273ae550fbf1667675701112e380881905e28448c080b23b5a181df7c/scipy-1.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:f7b8013c6c066609577d910d1a2a077021727af07b6fab0ee22c2f901f22352a", size = 38508060, upload_time = "2025-07-27T16:28:43.242Z" }, - { url = "https://files.pythonhosted.org/packages/93/0b/b5c99382b839854a71ca9482c684e3472badc62620287cbbdab499b75ce6/scipy-1.16.1-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:5451606823a5e73dfa621a89948096c6528e2896e40b39248295d3a0138d594f", size = 36533717, upload_time = "2025-07-27T16:28:51.706Z" }, - { url = "https://files.pythonhosted.org/packages/eb/e5/69ab2771062c91e23e07c12e7d5033a6b9b80b0903ee709c3c36b3eb520c/scipy-1.16.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:89728678c5ca5abd610aee148c199ac1afb16e19844401ca97d43dc548a354eb", size = 28570009, upload_time = "2025-07-27T16:28:57.017Z" }, - { url = "https://files.pythonhosted.org/packages/f4/69/bd75dbfdd3cf524f4d753484d723594aed62cfaac510123e91a6686d520b/scipy-1.16.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e756d688cb03fd07de0fffad475649b03cb89bee696c98ce508b17c11a03f95c", size = 20841942, upload_time = "2025-07-27T16:29:01.152Z" }, - { url = "https://files.pythonhosted.org/packages/ea/74/add181c87663f178ba7d6144b370243a87af8476664d5435e57d599e6874/scipy-1.16.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:5aa2687b9935da3ed89c5dbed5234576589dd28d0bf7cd237501ccfbdf1ad608", size = 23498507, upload_time = "2025-07-27T16:29:05.202Z" }, - { url = "https://files.pythonhosted.org/packages/1d/74/ece2e582a0d9550cee33e2e416cc96737dce423a994d12bbe59716f47ff1/scipy-1.16.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0851f6a1e537fe9399f35986897e395a1aa61c574b178c0d456be5b1a0f5ca1f", size = 33286040, upload_time = "2025-07-27T16:29:10.201Z" }, - { url = "https://files.pythonhosted.org/packages/e4/82/08e4076df538fb56caa1d489588d880ec7c52d8273a606bb54d660528f7c/scipy-1.16.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fedc2cbd1baed37474b1924c331b97bdff611d762c196fac1a9b71e67b813b1b", size = 35176096, upload_time = "2025-07-27T16:29:17.091Z" }, - { url = "https://files.pythonhosted.org/packages/fa/79/cd710aab8c921375711a8321c6be696e705a120e3011a643efbbcdeeabcc/scipy-1.16.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:2ef500e72f9623a6735769e4b93e9dcb158d40752cdbb077f305487e3e2d1f45", size = 35490328, upload_time = "2025-07-27T16:29:22.928Z" }, - { url = "https://files.pythonhosted.org/packages/71/73/e9cc3d35ee4526d784520d4494a3e1ca969b071fb5ae5910c036a375ceec/scipy-1.16.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:978d8311674b05a8f7ff2ea6c6bce5d8b45a0cb09d4c5793e0318f448613ea65", size = 37939921, upload_time = "2025-07-27T16:29:29.108Z" }, - { url = "https://files.pythonhosted.org/packages/21/12/c0efd2941f01940119b5305c375ae5c0fcb7ec193f806bd8f158b73a1782/scipy-1.16.1-cp313-cp313-win_amd64.whl", hash = "sha256:81929ed0fa7a5713fcdd8b2e6f73697d3b4c4816d090dd34ff937c20fa90e8ab", size = 38479462, upload_time = "2025-07-27T16:30:24.078Z" }, - { url = "https://files.pythonhosted.org/packages/7a/19/c3d08b675260046a991040e1ea5d65f91f40c7df1045fffff412dcfc6765/scipy-1.16.1-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:bcc12db731858abda693cecdb3bdc9e6d4bd200213f49d224fe22df82687bdd6", size = 36938832, upload_time = "2025-07-27T16:29:35.057Z" }, - { url = "https://files.pythonhosted.org/packages/81/f2/ce53db652c033a414a5b34598dba6b95f3d38153a2417c5a3883da429029/scipy-1.16.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:744d977daa4becb9fc59135e75c069f8d301a87d64f88f1e602a9ecf51e77b27", size = 29093084, upload_time = "2025-07-27T16:29:40.201Z" }, - { url = "https://files.pythonhosted.org/packages/a9/ae/7a10ff04a7dc15f9057d05b33737ade244e4bd195caa3f7cc04d77b9e214/scipy-1.16.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:dc54f76ac18073bcecffb98d93f03ed6b81a92ef91b5d3b135dcc81d55a724c7", size = 21365098, upload_time = "2025-07-27T16:29:44.295Z" }, - { url = "https://files.pythonhosted.org/packages/36/ac/029ff710959932ad3c2a98721b20b405f05f752f07344622fd61a47c5197/scipy-1.16.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:367d567ee9fc1e9e2047d31f39d9d6a7a04e0710c86e701e053f237d14a9b4f6", size = 23896858, upload_time = "2025-07-27T16:29:48.784Z" }, - { url = "https://files.pythonhosted.org/packages/71/13/d1ef77b6bd7898720e1f0b6b3743cb945f6c3cafa7718eaac8841035ab60/scipy-1.16.1-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:4cf5785e44e19dcd32a0e4807555e1e9a9b8d475c6afff3d21c3c543a6aa84f4", size = 33438311, upload_time = "2025-07-27T16:29:54.164Z" }, - { url = "https://files.pythonhosted.org/packages/2d/e0/e64a6821ffbb00b4c5b05169f1c1fddb4800e9307efe3db3788995a82a2c/scipy-1.16.1-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3d0b80fb26d3e13a794c71d4b837e2a589d839fd574a6bbb4ee1288c213ad4a3", size = 35279542, upload_time = "2025-07-27T16:30:00.249Z" }, - { url = "https://files.pythonhosted.org/packages/57/59/0dc3c8b43e118f1e4ee2b798dcc96ac21bb20014e5f1f7a8e85cc0653bdb/scipy-1.16.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:8503517c44c18d1030d666cb70aaac1cc8913608816e06742498833b128488b7", size = 35667665, upload_time = "2025-07-27T16:30:05.916Z" }, - { url = "https://files.pythonhosted.org/packages/45/5f/844ee26e34e2f3f9f8febb9343748e72daeaec64fe0c70e9bf1ff84ec955/scipy-1.16.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:30cc4bb81c41831ecfd6dc450baf48ffd80ef5aed0f5cf3ea775740e80f16ecc", size = 38045210, upload_time = "2025-07-27T16:30:11.655Z" }, - { url = "https://files.pythonhosted.org/packages/8d/d7/210f2b45290f444f1de64bc7353aa598ece9f0e90c384b4a156f9b1a5063/scipy-1.16.1-cp313-cp313t-win_amd64.whl", hash = "sha256:c24fa02f7ed23ae514460a22c57eca8f530dbfa50b1cfdbf4f37c05b5309cc39", size = 38593661, upload_time = "2025-07-27T16:30:17.825Z" }, - { url = "https://files.pythonhosted.org/packages/81/ea/84d481a5237ed223bd3d32d6e82d7a6a96e34756492666c260cef16011d1/scipy-1.16.1-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:796a5a9ad36fa3a782375db8f4241ab02a091308eb079746bc0f874c9b998318", size = 36525921, upload_time = "2025-07-27T16:30:30.081Z" }, - { url = "https://files.pythonhosted.org/packages/4e/9f/d9edbdeff9f3a664807ae3aea383e10afaa247e8e6255e6d2aa4515e8863/scipy-1.16.1-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:3ea0733a2ff73fd6fdc5fecca54ee9b459f4d74f00b99aced7d9a3adb43fb1cc", size = 28564152, upload_time = "2025-07-27T16:30:35.336Z" }, - { url = "https://files.pythonhosted.org/packages/3b/95/8125bcb1fe04bc267d103e76516243e8d5e11229e6b306bda1024a5423d1/scipy-1.16.1-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:85764fb15a2ad994e708258bb4ed8290d1305c62a4e1ef07c414356a24fcfbf8", size = 20836028, upload_time = "2025-07-27T16:30:39.421Z" }, - { url = "https://files.pythonhosted.org/packages/77/9c/bf92e215701fc70bbcd3d14d86337cf56a9b912a804b9c776a269524a9e9/scipy-1.16.1-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:ca66d980469cb623b1759bdd6e9fd97d4e33a9fad5b33771ced24d0cb24df67e", size = 23489666, upload_time = "2025-07-27T16:30:43.663Z" }, - { url = "https://files.pythonhosted.org/packages/5e/00/5e941d397d9adac41b02839011594620d54d99488d1be5be755c00cde9ee/scipy-1.16.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:e7cc1ffcc230f568549fc56670bcf3df1884c30bd652c5da8138199c8c76dae0", size = 33358318, upload_time = "2025-07-27T16:30:48.982Z" }, - { url = "https://files.pythonhosted.org/packages/0e/87/8db3aa10dde6e3e8e7eb0133f24baa011377d543f5b19c71469cf2648026/scipy-1.16.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3ddfb1e8d0b540cb4ee9c53fc3dea3186f97711248fb94b4142a1b27178d8b4b", size = 35185724, upload_time = "2025-07-27T16:30:54.26Z" }, - { url = "https://files.pythonhosted.org/packages/89/b4/6ab9ae443216807622bcff02690262d8184078ea467efee2f8c93288a3b1/scipy-1.16.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4dc0e7be79e95d8ba3435d193e0d8ce372f47f774cffd882f88ea4e1e1ddc731", size = 35554335, upload_time = "2025-07-27T16:30:59.765Z" }, - { url = "https://files.pythonhosted.org/packages/9c/9a/d0e9dc03c5269a1afb60661118296a32ed5d2c24298af61b676c11e05e56/scipy-1.16.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:f23634f9e5adb51b2a77766dac217063e764337fbc816aa8ad9aaebcd4397fd3", size = 37960310, upload_time = "2025-07-27T16:31:06.151Z" }, - { url = "https://files.pythonhosted.org/packages/5e/00/c8f3130a50521a7977874817ca89e0599b1b4ee8e938bad8ae798a0e1f0d/scipy-1.16.1-cp314-cp314-win_amd64.whl", hash = "sha256:57d75524cb1c5a374958a2eae3d84e1929bb971204cc9d52213fb8589183fc19", size = 39319239, upload_time = "2025-07-27T16:31:59.942Z" }, - { url = "https://files.pythonhosted.org/packages/f2/f2/1ca3eda54c3a7e4c92f6acef7db7b3a057deb135540d23aa6343ef8ad333/scipy-1.16.1-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:d8da7c3dd67bcd93f15618938f43ed0995982eb38973023d46d4646c4283ad65", size = 36939460, upload_time = "2025-07-27T16:31:11.865Z" }, - { url = "https://files.pythonhosted.org/packages/80/30/98c2840b293a132400c0940bb9e140171dcb8189588619048f42b2ce7b4f/scipy-1.16.1-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:cc1d2f2fd48ba1e0620554fe5bc44d3e8f5d4185c8c109c7fbdf5af2792cfad2", size = 29093322, upload_time = "2025-07-27T16:31:17.045Z" }, - { url = "https://files.pythonhosted.org/packages/c1/e6/1e6e006e850622cf2a039b62d1a6ddc4497d4851e58b68008526f04a9a00/scipy-1.16.1-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:21a611ced9275cb861bacadbada0b8c0623bc00b05b09eb97f23b370fc2ae56d", size = 21365329, upload_time = "2025-07-27T16:31:21.188Z" }, - { url = "https://files.pythonhosted.org/packages/8e/02/72a5aa5b820589dda9a25e329ca752842bfbbaf635e36bc7065a9b42216e/scipy-1.16.1-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:8dfbb25dffc4c3dd9371d8ab456ca81beeaf6f9e1c2119f179392f0dc1ab7695", size = 23897544, upload_time = "2025-07-27T16:31:25.408Z" }, - { url = "https://files.pythonhosted.org/packages/2b/dc/7122d806a6f9eb8a33532982234bed91f90272e990f414f2830cfe656e0b/scipy-1.16.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:f0ebb7204f063fad87fc0a0e4ff4a2ff40b2a226e4ba1b7e34bf4b79bf97cd86", size = 33442112, upload_time = "2025-07-27T16:31:30.62Z" }, - { url = "https://files.pythonhosted.org/packages/24/39/e383af23564daa1021a5b3afbe0d8d6a68ec639b943661841f44ac92de85/scipy-1.16.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f1b9e5962656f2734c2b285a8745358ecb4e4efbadd00208c80a389227ec61ff", size = 35286594, upload_time = "2025-07-27T16:31:36.112Z" }, - { url = "https://files.pythonhosted.org/packages/95/47/1a0b0aff40c3056d955f38b0df5d178350c3d74734ec54f9c68d23910be5/scipy-1.16.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:5e1a106f8c023d57a2a903e771228bf5c5b27b5d692088f457acacd3b54511e4", size = 35665080, upload_time = "2025-07-27T16:31:42.025Z" }, - { url = "https://files.pythonhosted.org/packages/64/df/ce88803e9ed6e27fe9b9abefa157cf2c80e4fa527cf17ee14be41f790ad4/scipy-1.16.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:709559a1db68a9abc3b2c8672c4badf1614f3b440b3ab326d86a5c0491eafae3", size = 38050306, upload_time = "2025-07-27T16:31:48.109Z" }, - { url = "https://files.pythonhosted.org/packages/6e/6c/a76329897a7cae4937d403e623aa6aaea616a0bb5b36588f0b9d1c9a3739/scipy-1.16.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c0c804d60492a0aad7f5b2bb1862f4548b990049e27e828391ff2bf6f7199998", size = 39427705, upload_time = "2025-07-27T16:31:53.96Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/4c/3b/546a6f0bfe791bbb7f8d591613454d15097e53f906308ec6f7c1ce588e8e/scipy-1.16.2.tar.gz", hash = "sha256:af029b153d243a80afb6eabe40b0a07f8e35c9adc269c019f364ad747f826a6b", size = 30580599 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/8d/6396e00db1282279a4ddd507c5f5e11f606812b608ee58517ce8abbf883f/scipy-1.16.2-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:89d6c100fa5c48472047632e06f0876b3c4931aac1f4291afc81a3644316bb0d", size = 36646259 }, + { url = "https://files.pythonhosted.org/packages/3b/93/ea9edd7e193fceb8eef149804491890bde73fb169c896b61aa3e2d1e4e77/scipy-1.16.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ca748936cd579d3f01928b30a17dc474550b01272d8046e3e1ee593f23620371", size = 28888976 }, + { url = "https://files.pythonhosted.org/packages/91/4d/281fddc3d80fd738ba86fd3aed9202331180b01e2c78eaae0642f22f7e83/scipy-1.16.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:fac4f8ce2ddb40e2e3d0f7ec36d2a1e7f92559a2471e59aec37bd8d9de01fec0", size = 20879905 }, + { url = "https://files.pythonhosted.org/packages/69/40/b33b74c84606fd301b2915f0062e45733c6ff5708d121dd0deaa8871e2d0/scipy-1.16.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:033570f1dcefd79547a88e18bccacff025c8c647a330381064f561d43b821232", size = 23553066 }, + { url = "https://files.pythonhosted.org/packages/55/a7/22c739e2f21a42cc8f16bc76b47cff4ed54fbe0962832c589591c2abec34/scipy-1.16.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ea3421209bf00c8a5ef2227de496601087d8f638a2363ee09af059bd70976dc1", size = 33336407 }, + { url = "https://files.pythonhosted.org/packages/53/11/a0160990b82999b45874dc60c0c183d3a3a969a563fffc476d5a9995c407/scipy-1.16.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f66bd07ba6f84cd4a380b41d1bf3c59ea488b590a2ff96744845163309ee8e2f", size = 35673281 }, + { url = "https://files.pythonhosted.org/packages/96/53/7ef48a4cfcf243c3d0f1643f5887c81f29fdf76911c4e49331828e19fc0a/scipy-1.16.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e9feab931bd2aea4a23388c962df6468af3d808ddf2d40f94a81c5dc38f32ef", size = 36004222 }, + { url = "https://files.pythonhosted.org/packages/49/7f/71a69e0afd460049d41c65c630c919c537815277dfea214031005f474d78/scipy-1.16.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:03dfc75e52f72cf23ec2ced468645321407faad8f0fe7b1f5b49264adbc29cb1", size = 38664586 }, + { url = "https://files.pythonhosted.org/packages/34/95/20e02ca66fb495a95fba0642fd48e0c390d0ece9b9b14c6e931a60a12dea/scipy-1.16.2-cp312-cp312-win_amd64.whl", hash = "sha256:0ce54e07bbb394b417457409a64fd015be623f36e330ac49306433ffe04bc97e", size = 38550641 }, + { url = "https://files.pythonhosted.org/packages/92/ad/13646b9beb0a95528ca46d52b7babafbe115017814a611f2065ee4e61d20/scipy-1.16.2-cp312-cp312-win_arm64.whl", hash = "sha256:2a8ffaa4ac0df81a0b94577b18ee079f13fecdb924df3328fc44a7dc5ac46851", size = 25456070 }, + { url = "https://files.pythonhosted.org/packages/c1/27/c5b52f1ee81727a9fc457f5ac1e9bf3d6eab311805ea615c83c27ba06400/scipy-1.16.2-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:84f7bf944b43e20b8a894f5fe593976926744f6c185bacfcbdfbb62736b5cc70", size = 36604856 }, + { url = "https://files.pythonhosted.org/packages/32/a9/15c20d08e950b540184caa8ced675ba1128accb0e09c653780ba023a4110/scipy-1.16.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5c39026d12edc826a1ef2ad35ad1e6d7f087f934bb868fc43fa3049c8b8508f9", size = 28864626 }, + { url = "https://files.pythonhosted.org/packages/4c/fc/ea36098df653cca26062a627c1a94b0de659e97127c8491e18713ca0e3b9/scipy-1.16.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e52729ffd45b68777c5319560014d6fd251294200625d9d70fd8626516fc49f5", size = 20855689 }, + { url = "https://files.pythonhosted.org/packages/dc/6f/d0b53be55727f3e6d7c72687ec18ea6d0047cf95f1f77488b99a2bafaee1/scipy-1.16.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:024dd4a118cccec09ca3209b7e8e614931a6ffb804b2a601839499cb88bdf925", size = 23512151 }, + { url = "https://files.pythonhosted.org/packages/11/85/bf7dab56e5c4b1d3d8eef92ca8ede788418ad38a7dc3ff50262f00808760/scipy-1.16.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7a5dc7ee9c33019973a470556081b0fd3c9f4c44019191039f9769183141a4d9", size = 33329824 }, + { url = "https://files.pythonhosted.org/packages/da/6a/1a927b14ddc7714111ea51f4e568203b2bb6ed59bdd036d62127c1a360c8/scipy-1.16.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c2275ff105e508942f99d4e3bc56b6ef5e4b3c0af970386ca56b777608ce95b7", size = 35681881 }, + { url = "https://files.pythonhosted.org/packages/c1/5f/331148ea5780b4fcc7007a4a6a6ee0a0c1507a796365cc642d4d226e1c3a/scipy-1.16.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:af80196eaa84f033e48444d2e0786ec47d328ba00c71e4299b602235ffef9acb", size = 36006219 }, + { url = "https://files.pythonhosted.org/packages/46/3a/e991aa9d2aec723b4a8dcfbfc8365edec5d5e5f9f133888067f1cbb7dfc1/scipy-1.16.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9fb1eb735fe3d6ed1f89918224e3385fbf6f9e23757cacc35f9c78d3b712dd6e", size = 38682147 }, + { url = "https://files.pythonhosted.org/packages/a1/57/0f38e396ad19e41b4c5db66130167eef8ee620a49bc7d0512e3bb67e0cab/scipy-1.16.2-cp313-cp313-win_amd64.whl", hash = "sha256:fda714cf45ba43c9d3bae8f2585c777f64e3f89a2e073b668b32ede412d8f52c", size = 38520766 }, + { url = "https://files.pythonhosted.org/packages/1b/a5/85d3e867b6822d331e26c862a91375bb7746a0b458db5effa093d34cdb89/scipy-1.16.2-cp313-cp313-win_arm64.whl", hash = "sha256:2f5350da923ccfd0b00e07c3e5cfb316c1c0d6c1d864c07a72d092e9f20db104", size = 25451169 }, + { url = "https://files.pythonhosted.org/packages/09/d9/60679189bcebda55992d1a45498de6d080dcaf21ce0c8f24f888117e0c2d/scipy-1.16.2-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:53d8d2ee29b925344c13bda64ab51785f016b1b9617849dac10897f0701b20c1", size = 37012682 }, + { url = "https://files.pythonhosted.org/packages/83/be/a99d13ee4d3b7887a96f8c71361b9659ba4ef34da0338f14891e102a127f/scipy-1.16.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:9e05e33657efb4c6a9d23bd8300101536abd99c85cca82da0bffff8d8764d08a", size = 29389926 }, + { url = "https://files.pythonhosted.org/packages/bf/0a/130164a4881cec6ca8c00faf3b57926f28ed429cd6001a673f83c7c2a579/scipy-1.16.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:7fe65b36036357003b3ef9d37547abeefaa353b237e989c21027b8ed62b12d4f", size = 21381152 }, + { url = "https://files.pythonhosted.org/packages/47/a6/503ffb0310ae77fba874e10cddfc4a1280bdcca1d13c3751b8c3c2996cf8/scipy-1.16.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6406d2ac6d40b861cccf57f49592f9779071655e9f75cd4f977fa0bdd09cb2e4", size = 23914410 }, + { url = "https://files.pythonhosted.org/packages/fa/c7/1147774bcea50d00c02600aadaa919facbd8537997a62496270133536ed6/scipy-1.16.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ff4dc42bd321991fbf611c23fc35912d690f731c9914bf3af8f417e64aca0f21", size = 33481880 }, + { url = "https://files.pythonhosted.org/packages/6a/74/99d5415e4c3e46b2586f30cdbecb95e101c7192628a484a40dd0d163811a/scipy-1.16.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:654324826654d4d9133e10675325708fb954bc84dae6e9ad0a52e75c6b1a01d7", size = 35791425 }, + { url = "https://files.pythonhosted.org/packages/1b/ee/a6559de7c1cc710e938c0355d9d4fbcd732dac4d0d131959d1f3b63eb29c/scipy-1.16.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:63870a84cd15c44e65220eaed2dac0e8f8b26bbb991456a033c1d9abfe8a94f8", size = 36178622 }, + { url = "https://files.pythonhosted.org/packages/4e/7b/f127a5795d5ba8ece4e0dce7d4a9fb7cb9e4f4757137757d7a69ab7d4f1a/scipy-1.16.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:fa01f0f6a3050fa6a9771a95d5faccc8e2f5a92b4a2e5440a0fa7264a2398472", size = 38783985 }, + { url = "https://files.pythonhosted.org/packages/3e/9f/bc81c1d1e033951eb5912cd3750cc005943afa3e65a725d2443a3b3c4347/scipy-1.16.2-cp313-cp313t-win_amd64.whl", hash = "sha256:116296e89fba96f76353a8579820c2512f6e55835d3fad7780fece04367de351", size = 38631367 }, + { url = "https://files.pythonhosted.org/packages/d6/5e/2cc7555fd81d01814271412a1d59a289d25f8b63208a0a16c21069d55d3e/scipy-1.16.2-cp313-cp313t-win_arm64.whl", hash = "sha256:98e22834650be81d42982360382b43b17f7ba95e0e6993e2a4f5b9ad9283a94d", size = 25787992 }, + { url = "https://files.pythonhosted.org/packages/8b/ac/ad8951250516db71619f0bd3b2eb2448db04b720a003dd98619b78b692c0/scipy-1.16.2-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:567e77755019bb7461513c87f02bb73fb65b11f049aaaa8ca17cfaa5a5c45d77", size = 36595109 }, + { url = "https://files.pythonhosted.org/packages/ff/f6/5779049ed119c5b503b0f3dc6d6f3f68eefc3a9190d4ad4c276f854f051b/scipy-1.16.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:17d9bb346194e8967296621208fcdfd39b55498ef7d2f376884d5ac47cec1a70", size = 28859110 }, + { url = "https://files.pythonhosted.org/packages/82/09/9986e410ae38bf0a0c737ff8189ac81a93b8e42349aac009891c054403d7/scipy-1.16.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:0a17541827a9b78b777d33b623a6dcfe2ef4a25806204d08ead0768f4e529a88", size = 20850110 }, + { url = "https://files.pythonhosted.org/packages/0d/ad/485cdef2d9215e2a7df6d61b81d2ac073dfacf6ae24b9ae87274c4e936ae/scipy-1.16.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:d7d4c6ba016ffc0f9568d012f5f1eb77ddd99412aea121e6fa8b4c3b7cbad91f", size = 23497014 }, + { url = "https://files.pythonhosted.org/packages/a7/74/f6a852e5d581122b8f0f831f1d1e32fb8987776ed3658e95c377d308ed86/scipy-1.16.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9702c4c023227785c779cba2e1d6f7635dbb5b2e0936cdd3a4ecb98d78fd41eb", size = 33401155 }, + { url = "https://files.pythonhosted.org/packages/d9/f5/61d243bbc7c6e5e4e13dde9887e84a5cbe9e0f75fd09843044af1590844e/scipy-1.16.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d1cdf0ac28948d225decdefcc45ad7dd91716c29ab56ef32f8e0d50657dffcc7", size = 35691174 }, + { url = "https://files.pythonhosted.org/packages/03/99/59933956331f8cc57e406cdb7a483906c74706b156998f322913e789c7e1/scipy-1.16.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:70327d6aa572a17c2941cdfb20673f82e536e91850a2e4cb0c5b858b690e1548", size = 36070752 }, + { url = "https://files.pythonhosted.org/packages/c6/7d/00f825cfb47ee19ef74ecf01244b43e95eae74e7e0ff796026ea7cd98456/scipy-1.16.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5221c0b2a4b58aa7c4ed0387d360fd90ee9086d383bb34d9f2789fafddc8a936", size = 38701010 }, + { url = "https://files.pythonhosted.org/packages/e4/9f/b62587029980378304ba5a8563d376c96f40b1e133daacee76efdcae32de/scipy-1.16.2-cp314-cp314-win_amd64.whl", hash = "sha256:f5a85d7b2b708025af08f060a496dd261055b617d776fc05a1a1cc69e09fe9ff", size = 39360061 }, + { url = "https://files.pythonhosted.org/packages/82/04/7a2f1609921352c7fbee0815811b5050582f67f19983096c4769867ca45f/scipy-1.16.2-cp314-cp314-win_arm64.whl", hash = "sha256:2cc73a33305b4b24556957d5857d6253ce1e2dcd67fa0ff46d87d1670b3e1e1d", size = 26126914 }, + { url = "https://files.pythonhosted.org/packages/51/b9/60929ce350c16b221928725d2d1d7f86cf96b8bc07415547057d1196dc92/scipy-1.16.2-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:9ea2a3fed83065d77367775d689401a703d0f697420719ee10c0780bcab594d8", size = 37013193 }, + { url = "https://files.pythonhosted.org/packages/2a/41/ed80e67782d4bc5fc85a966bc356c601afddd175856ba7c7bb6d9490607e/scipy-1.16.2-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:7280d926f11ca945c3ef92ba960fa924e1465f8d07ce3a9923080363390624c4", size = 29390172 }, + { url = "https://files.pythonhosted.org/packages/c4/a3/2f673ace4090452696ccded5f5f8efffb353b8f3628f823a110e0170b605/scipy-1.16.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:8afae1756f6a1fe04636407ef7dbece33d826a5d462b74f3d0eb82deabefd831", size = 21381326 }, + { url = "https://files.pythonhosted.org/packages/42/bf/59df61c5d51395066c35836b78136accf506197617c8662e60ea209881e1/scipy-1.16.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:5c66511f29aa8d233388e7416a3f20d5cae7a2744d5cee2ecd38c081f4e861b3", size = 23915036 }, + { url = "https://files.pythonhosted.org/packages/91/c3/edc7b300dc16847ad3672f1a6f3f7c5d13522b21b84b81c265f4f2760d4a/scipy-1.16.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efe6305aeaa0e96b0ccca5ff647a43737d9a092064a3894e46c414db84bc54ac", size = 33484341 }, + { url = "https://files.pythonhosted.org/packages/26/c7/24d1524e72f06ff141e8d04b833c20db3021020563272ccb1b83860082a9/scipy-1.16.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f3a337d9ae06a1e8d655ee9d8ecb835ea5ddcdcbd8d23012afa055ab014f374", size = 35790840 }, + { url = "https://files.pythonhosted.org/packages/aa/b7/5aaad984eeedd56858dc33d75efa59e8ce798d918e1033ef62d2708f2c3d/scipy-1.16.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bab3605795d269067d8ce78a910220262711b753de8913d3deeaedb5dded3bb6", size = 36174716 }, + { url = "https://files.pythonhosted.org/packages/fd/c2/e276a237acb09824822b0ada11b028ed4067fdc367a946730979feacb870/scipy-1.16.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b0348d8ddb55be2a844c518cd8cc8deeeb8aeba707cf834db5758fc89b476a2c", size = 38790088 }, + { url = "https://files.pythonhosted.org/packages/c6/b4/5c18a766e8353015439f3780f5fc473f36f9762edc1a2e45da3ff5a31b21/scipy-1.16.2-cp314-cp314t-win_amd64.whl", hash = "sha256:26284797e38b8a75e14ea6631d29bda11e76ceaa6ddb6fdebbfe4c4d90faf2f9", size = 39457455 }, + { url = "https://files.pythonhosted.org/packages/97/30/2f9a5243008f76dfc5dee9a53dfb939d9b31e16ce4bd4f2e628bfc5d89d2/scipy-1.16.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d2a4472c231328d4de38d5f1f68fdd6d28a615138f842580a8a321b5845cf779", size = 26448374 }, ] [[package]] name = "shellingham" version = "1.5.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload_time = "2023-10-24T04:13:40.426Z" } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload_time = "2023-10-24T04:13:38.866Z" }, + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 }, ] [[package]] name = "simpleeval" version = "1.0.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ff/6f/15be211749430f52f2c8f0c69158a6fc961c03aac93fa28d44d1a6f5ebc7/simpleeval-1.0.3.tar.gz", hash = "sha256:67bbf246040ac3b57c29cf048657b9cf31d4e7b9d6659684daa08ca8f1e45829", size = 24358, upload_time = "2024-11-02T10:29:46.912Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ff/6f/15be211749430f52f2c8f0c69158a6fc961c03aac93fa28d44d1a6f5ebc7/simpleeval-1.0.3.tar.gz", hash = "sha256:67bbf246040ac3b57c29cf048657b9cf31d4e7b9d6659684daa08ca8f1e45829", size = 24358 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/e9/e58082fbb8cecbb6fb4133033c40cc50c248b1a331582be3a0f39138d65b/simpleeval-1.0.3-py3-none-any.whl", hash = "sha256:e3bdbb8c82c26297c9a153902d0fd1858a6c3774bf53ff4f134788c3f2035c38", size = 15762, upload_time = "2024-11-02T10:29:45.706Z" }, + { url = "https://files.pythonhosted.org/packages/a0/e9/e58082fbb8cecbb6fb4133033c40cc50c248b1a331582be3a0f39138d65b/simpleeval-1.0.3-py3-none-any.whl", hash = "sha256:e3bdbb8c82c26297c9a153902d0fd1858a6c3774bf53ff4f134788c3f2035c38", size = 15762 }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload_time = "2024-12-04T17:35:28.174Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload_time = "2024-12-04T17:35:26.475Z" }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, ] [[package]] name = "smmap" version = "5.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329, upload_time = "2025-01-02T07:14:40.909Z" } +sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329 } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303, upload_time = "2025-01-02T07:14:38.724Z" }, + { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303 }, ] [[package]] name = "soupsieve" -version = "2.7" +version = "2.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload_time = "2025-04-20T18:50:08.518Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/e6/21ccce3262dd4889aa3332e5a119a3491a95e8f60939870a3a035aabac0d/soupsieve-2.8.tar.gz", hash = "sha256:e2dd4a40a628cb5f28f6d4b0db8800b8f581b65bb380b97de22ba5ca8d72572f", size = 103472 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload_time = "2025-04-20T18:50:07.196Z" }, + { url = "https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl", hash = "sha256:0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c", size = 36679 }, ] [[package]] @@ -2718,18 +2909,18 @@ dependencies = [ { name = "executing" }, { name = "pure-eval" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload_time = "2023-09-30T13:58:05.479Z" } +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload_time = "2023-09-30T13:58:03.53Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, ] [[package]] name = "structlog" version = "25.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/b9/6e672db4fec07349e7a8a8172c1a6ae235c58679ca29c3f86a61b5e59ff3/structlog-25.4.0.tar.gz", hash = "sha256:186cd1b0a8ae762e29417095664adf1d6a31702160a46dacb7796ea82f7409e4", size = 1369138, upload_time = "2025-06-02T08:21:12.971Z" } +sdist = { url = "https://files.pythonhosted.org/packages/79/b9/6e672db4fec07349e7a8a8172c1a6ae235c58679ca29c3f86a61b5e59ff3/structlog-25.4.0.tar.gz", hash = "sha256:186cd1b0a8ae762e29417095664adf1d6a31702160a46dacb7796ea82f7409e4", size = 1369138 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/4a/97ee6973e3a73c74c8120d59829c3861ea52210667ec3e7a16045c62b64d/structlog-25.4.0-py3-none-any.whl", hash = "sha256:fe809ff5c27e557d14e613f45ca441aabda051d119ee5a0102aaba6ce40eed2c", size = 68720, upload_time = "2025-06-02T08:21:11.43Z" }, + { url = "https://files.pythonhosted.org/packages/a0/4a/97ee6973e3a73c74c8120d59829c3861ea52210667ec3e7a16045c62b64d/structlog-25.4.0-py3-none-any.whl", hash = "sha256:fe809ff5c27e557d14e613f45ca441aabda051d119ee5a0102aaba6ce40eed2c", size = 68720 }, ] [[package]] @@ -2741,18 +2932,18 @@ dependencies = [ { name = "pyyaml" }, { name = "xlsxwriter" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/23/2d/5b5c0127e959a715c5365b3b491846fba5bc1fb7f94370cc3a4fb3f51f68/tableschema-to-template-0.0.13.tar.gz", hash = "sha256:2d8d2250efb840e0ecb9012c5e879a82ef68f65dd86bdff574200fdfc978ff1c", size = 13564, upload_time = "2023-02-01T21:53:17.238Z" } +sdist = { url = "https://files.pythonhosted.org/packages/23/2d/5b5c0127e959a715c5365b3b491846fba5bc1fb7f94370cc3a4fb3f51f68/tableschema-to-template-0.0.13.tar.gz", hash = "sha256:2d8d2250efb840e0ecb9012c5e879a82ef68f65dd86bdff574200fdfc978ff1c", size = 13564 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/7f/3c129377d9b815c0bb92b8c24bbecabe5e6b13b831f38924f80d2e5b40b2/tableschema_to_template-0.0.13-py3-none-any.whl", hash = "sha256:4905500a4235740654230c3223629d26fdccb7a0457ec1d0110ea102c4f1146c", size = 14860, upload_time = "2023-02-01T21:53:16.02Z" }, + { url = "https://files.pythonhosted.org/packages/9f/7f/3c129377d9b815c0bb92b8c24bbecabe5e6b13b831f38924f80d2e5b40b2/tableschema_to_template-0.0.13-py3-none-any.whl", hash = "sha256:4905500a4235740654230c3223629d26fdccb7a0457ec1d0110ea102c4f1146c", size = 14860 }, ] [[package]] name = "tabulate" version = "0.9.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload_time = "2022-10-06T17:21:48.54Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090 } wheels = [ - { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload_time = "2022-10-06T17:21:44.262Z" }, + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252 }, ] [[package]] @@ -2768,6 +2959,7 @@ dependencies = [ { name = "pydeflate" }, { name = "requests" }, { name = "savepagenow" }, + { name = "scipy" }, ] [package.dev-dependencies] @@ -2814,6 +3006,7 @@ requires-dist = [ { name = "pydeflate", specifier = ">=2.1.3" }, { name = "requests", specifier = ">=2.32.3" }, { name = "savepagenow", specifier = ">=1.3.0" }, + { name = "scipy", specifier = ">=1.16.1" }, ] [package.metadata.requires-dev] @@ -2853,27 +3046,27 @@ docs = [ name = "tenacity" version = "9.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload_time = "2025-04-02T08:25:09.966Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload_time = "2025-04-02T08:25:07.678Z" }, + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 }, ] [[package]] name = "text-unidecode" version = "1.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload_time = "2019-08-30T21:36:45.405Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload_time = "2019-08-30T21:37:03.543Z" }, + { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154 }, ] [[package]] name = "threadpoolctl" version = "3.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload_time = "2025-03-13T13:49:23.031Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274 } wheels = [ - { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload_time = "2025-03-13T13:49:21.846Z" }, + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638 }, ] [[package]] @@ -2883,37 +3076,37 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload_time = "2024-10-24T14:58:29.895Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload_time = "2024-10-24T14:58:28.029Z" }, + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, ] [[package]] name = "tomlkit" version = "0.13.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207, upload_time = "2025-06-05T07:13:44.947Z" } +sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207 } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload_time = "2025-06-05T07:13:43.546Z" }, + { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901 }, ] [[package]] name = "tornado" -version = "6.5.1" +version = "6.5.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934, upload_time = "2025-05-22T18:15:38.788Z" } +sdist = { url = "https://files.pythonhosted.org/packages/09/ce/1eb500eae19f4648281bb2186927bb062d2438c2e5093d1360391afd2f90/tornado-6.5.2.tar.gz", hash = "sha256:ab53c8f9a0fa351e2c0741284e06c7a45da86afb544133201c5cc8578eb076a0", size = 510821 } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948, upload_time = "2025-05-22T18:15:20.862Z" }, - { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112, upload_time = "2025-05-22T18:15:22.591Z" }, - { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672, upload_time = "2025-05-22T18:15:24.027Z" }, - { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019, upload_time = "2025-05-22T18:15:25.735Z" }, - { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252, upload_time = "2025-05-22T18:15:27.499Z" }, - { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930, upload_time = "2025-05-22T18:15:29.299Z" }, - { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351, upload_time = "2025-05-22T18:15:31.038Z" }, - { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328, upload_time = "2025-05-22T18:15:32.426Z" }, - { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396, upload_time = "2025-05-22T18:15:34.205Z" }, - { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840, upload_time = "2025-05-22T18:15:36.1Z" }, - { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596, upload_time = "2025-05-22T18:15:37.433Z" }, + { url = "https://files.pythonhosted.org/packages/f6/48/6a7529df2c9cc12efd2e8f5dd219516184d703b34c06786809670df5b3bd/tornado-6.5.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:2436822940d37cde62771cff8774f4f00b3c8024fe482e16ca8387b8a2724db6", size = 442563 }, + { url = "https://files.pythonhosted.org/packages/f2/b5/9b575a0ed3e50b00c40b08cbce82eb618229091d09f6d14bce80fc01cb0b/tornado-6.5.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:583a52c7aa94ee046854ba81d9ebb6c81ec0fd30386d96f7640c96dad45a03ef", size = 440729 }, + { url = "https://files.pythonhosted.org/packages/1b/4e/619174f52b120efcf23633c817fd3fed867c30bff785e2cd5a53a70e483c/tornado-6.5.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0fe179f28d597deab2842b86ed4060deec7388f1fd9c1b4a41adf8af058907e", size = 444295 }, + { url = "https://files.pythonhosted.org/packages/95/fa/87b41709552bbd393c85dd18e4e3499dcd8983f66e7972926db8d96aa065/tornado-6.5.2-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b186e85d1e3536d69583d2298423744740986018e393d0321df7340e71898882", size = 443644 }, + { url = "https://files.pythonhosted.org/packages/f9/41/fb15f06e33d7430ca89420283a8762a4e6b8025b800ea51796ab5e6d9559/tornado-6.5.2-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e792706668c87709709c18b353da1f7662317b563ff69f00bab83595940c7108", size = 443878 }, + { url = "https://files.pythonhosted.org/packages/11/92/fe6d57da897776ad2e01e279170ea8ae726755b045fe5ac73b75357a5a3f/tornado-6.5.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:06ceb1300fd70cb20e43b1ad8aaee0266e69e7ced38fa910ad2e03285009ce7c", size = 444549 }, + { url = "https://files.pythonhosted.org/packages/9b/02/c8f4f6c9204526daf3d760f4aa555a7a33ad0e60843eac025ccfd6ff4a93/tornado-6.5.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:74db443e0f5251be86cbf37929f84d8c20c27a355dd452a5cfa2aada0d001ec4", size = 443973 }, + { url = "https://files.pythonhosted.org/packages/ae/2d/f5f5707b655ce2317190183868cd0f6822a1121b4baeae509ceb9590d0bd/tornado-6.5.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b5e735ab2889d7ed33b32a459cac490eda71a1ba6857b0118de476ab6c366c04", size = 443954 }, + { url = "https://files.pythonhosted.org/packages/e8/59/593bd0f40f7355806bf6573b47b8c22f8e1374c9b6fd03114bd6b7a3dcfd/tornado-6.5.2-cp39-abi3-win32.whl", hash = "sha256:c6f29e94d9b37a95013bb669616352ddb82e3bfe8326fccee50583caebc8a5f0", size = 445023 }, + { url = "https://files.pythonhosted.org/packages/c7/2a/f609b420c2f564a748a2d80ebfb2ee02a73ca80223af712fca591386cafb/tornado-6.5.2-cp39-abi3-win_amd64.whl", hash = "sha256:e56a5af51cc30dd2cae649429af65ca2f6571da29504a07995175df14c18f35f", size = 445427 }, + { url = "https://files.pythonhosted.org/packages/5e/4f/e1f65e8f8c76d73658b33d33b81eed4322fb5085350e4328d5c956f0c8f9/tornado-6.5.2-cp39-abi3-win_arm64.whl", hash = "sha256:d6c33dc3672e3a1f3618eb63b7ef4683a7688e7b9e6e8f0d9aa5726360a004af", size = 444456 }, ] [[package]] @@ -2923,18 +3116,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload_time = "2024-11-24T20:12:22.481Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload_time = "2024-11-24T20:12:19.698Z" }, + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 }, ] [[package]] name = "traitlets" version = "5.14.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload_time = "2024-04-19T11:11:49.746Z" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621 } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload_time = "2024-04-19T11:11:46.763Z" }, + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, ] [[package]] @@ -2950,14 +3143,14 @@ dependencies = [ { name = "scikit-learn" }, { name = "tqdm" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e7/67/c69f8c46fd46e01480ca10280ab612253255a729a850e2d61fdf0ea08258/tsam-2.3.9.tar.gz", hash = "sha256:1f219eef05788d199af1ff61bd5a3d9217a26f9279988b1ef4b7d5af2757ed15", size = 223755, upload_time = "2025-06-16T07:30:03.015Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/67/c69f8c46fd46e01480ca10280ab612253255a729a850e2d61fdf0ea08258/tsam-2.3.9.tar.gz", hash = "sha256:1f219eef05788d199af1ff61bd5a3d9217a26f9279988b1ef4b7d5af2757ed15", size = 223755 } wheels = [ - { url = "https://files.pythonhosted.org/packages/44/e7/5c072b990bddccc4a78a186d641e50257993c50658cddc0d4bf300acd1e1/tsam-2.3.9-py3-none-any.whl", hash = "sha256:edcc4febb9e1dacc028bc819d710974ede8f563467c3d235a250f46416f93a1b", size = 36816, upload_time = "2025-06-16T07:30:01.562Z" }, + { url = "https://files.pythonhosted.org/packages/44/e7/5c072b990bddccc4a78a186d641e50257993c50658cddc0d4bf300acd1e1/tsam-2.3.9-py3-none-any.whl", hash = "sha256:edcc4febb9e1dacc028bc819d710974ede8f563467c3d235a250f46416f93a1b", size = 36816 }, ] [[package]] name = "typer" -version = "0.16.0" +version = "0.19.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, @@ -2965,18 +3158,18 @@ dependencies = [ { name = "shellingham" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c5/8c/7d682431efca5fd290017663ea4588bf6f2c6aad085c7f108c5dbc316e70/typer-0.16.0.tar.gz", hash = "sha256:af377ffaee1dbe37ae9440cb4e8f11686ea5ce4e9bae01b84ae7c63b87f1dd3b", size = 102625, upload_time = "2025-05-26T14:30:31.824Z" } +sdist = { url = "https://files.pythonhosted.org/packages/03/ea/9cc57c3c627fd7a6a0907ea371019fe74c3ec00e3cf209a6864140a602ad/typer-0.19.1.tar.gz", hash = "sha256:cb881433a4b15dacc875bb0583d1a61e78497806741f9aba792abcab390c03e6", size = 104802 } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/42/3efaf858001d2c2913de7f354563e3a3a2f0decae3efe98427125a8f441e/typer-0.16.0-py3-none-any.whl", hash = "sha256:1f79bed11d4d02d4310e3c1b7ba594183bcedb0ac73b27a9e5f28f6fb5b98855", size = 46317, upload_time = "2025-05-26T14:30:30.523Z" }, + { url = "https://files.pythonhosted.org/packages/1e/fa/6473c00b5eb26a2ba427813107699d3e6f4e1a4afad3f7494b17bdef3422/typer-0.19.1-py3-none-any.whl", hash = "sha256:914b2b39a1da4bafca5f30637ca26fa622a5bf9f515e5fdc772439f306d5682a", size = 46876 }, ] [[package]] name = "typing-extensions" -version = "4.14.1" +version = "4.15.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/5a/da40306b885cc8c09109dc2e1abd358d5684b1425678151cdaed4731c822/typing_extensions-4.14.1.tar.gz", hash = "sha256:38b39f4aeeab64884ce9f74c94263ef78f3c22467c8724005483154c26648d36", size = 107673, upload_time = "2025-07-04T13:28:34.16Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/00/d631e67a838026495268c2f6884f3711a15a9a2a96cd244fdaea53b823fb/typing_extensions-4.14.1-py3-none-any.whl", hash = "sha256:d1e1e3b58374dc93031d6eda2420a48ea44a36c2b4766a4fdeb3710755731d76", size = 43906, upload_time = "2025-07-04T13:28:32.743Z" }, + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614 }, ] [[package]] @@ -2986,83 +3179,83 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload_time = "2025-05-21T18:55:23.885Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload_time = "2025-05-21T18:55:22.152Z" }, + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, ] [[package]] name = "tzdata" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload_time = "2025-03-23T13:54:43.652Z" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload_time = "2025-03-23T13:54:41.845Z" }, + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, ] [[package]] name = "unidecode" version = "1.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/7d/a8a765761bbc0c836e397a2e48d498305a865b70a8600fd7a942e85dcf63/Unidecode-1.4.0.tar.gz", hash = "sha256:ce35985008338b676573023acc382d62c264f307c8f7963733405add37ea2b23", size = 200149, upload_time = "2025-04-24T08:45:03.798Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/7d/a8a765761bbc0c836e397a2e48d498305a865b70a8600fd7a942e85dcf63/Unidecode-1.4.0.tar.gz", hash = "sha256:ce35985008338b676573023acc382d62c264f307c8f7963733405add37ea2b23", size = 200149 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/b7/559f59d57d18b44c6d1250d2eeaa676e028b9c527431f5d0736478a73ba1/Unidecode-1.4.0-py3-none-any.whl", hash = "sha256:c3c7606c27503ad8d501270406e345ddb480a7b5f38827eafe4fa82a137f0021", size = 235837, upload_time = "2025-04-24T08:45:01.609Z" }, + { url = "https://files.pythonhosted.org/packages/8f/b7/559f59d57d18b44c6d1250d2eeaa676e028b9c527431f5d0736478a73ba1/Unidecode-1.4.0-py3-none-any.whl", hash = "sha256:c3c7606c27503ad8d501270406e345ddb480a7b5f38827eafe4fa82a137f0021", size = 235837 }, ] [[package]] name = "urllib3" version = "2.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload_time = "2025-06-18T14:07:41.644Z" } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload_time = "2025-06-18T14:07:40.39Z" }, + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795 }, ] [[package]] name = "validators" version = "0.35.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/53/66/a435d9ae49850b2f071f7ebd8119dd4e84872b01630d6736761e6e7fd847/validators-0.35.0.tar.gz", hash = "sha256:992d6c48a4e77c81f1b4daba10d16c3a9bb0dbb79b3a19ea847ff0928e70497a", size = 73399, upload_time = "2025-05-01T05:42:06.7Z" } +sdist = { url = "https://files.pythonhosted.org/packages/53/66/a435d9ae49850b2f071f7ebd8119dd4e84872b01630d6736761e6e7fd847/validators-0.35.0.tar.gz", hash = "sha256:992d6c48a4e77c81f1b4daba10d16c3a9bb0dbb79b3a19ea847ff0928e70497a", size = 73399 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/6e/3e955517e22cbdd565f2f8b2e73d52528b14b8bcfdb04f62466b071de847/validators-0.35.0-py3-none-any.whl", hash = "sha256:e8c947097eae7892cb3d26868d637f79f47b4a0554bc6b80065dfe5aac3705dd", size = 44712, upload_time = "2025-05-01T05:42:04.203Z" }, + { url = "https://files.pythonhosted.org/packages/fa/6e/3e955517e22cbdd565f2f8b2e73d52528b14b8bcfdb04f62466b071de847/validators-0.35.0-py3-none-any.whl", hash = "sha256:e8c947097eae7892cb3d26868d637f79f47b4a0554bc6b80065dfe5aac3705dd", size = 44712 }, ] [[package]] name = "virtualenv" -version = "20.31.2" +version = "20.34.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "distlib" }, { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload_time = "2025-05-08T17:58:23.811Z" } +sdist = { url = "https://files.pythonhosted.org/packages/1c/14/37fcdba2808a6c615681cd216fecae00413c9dab44fb2e57805ecf3eaee3/virtualenv-20.34.0.tar.gz", hash = "sha256:44815b2c9dee7ed86e387b842a84f20b93f7f417f95886ca1996a72a4138eb1a", size = 6003808 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload_time = "2025-05-08T17:58:21.15Z" }, + { url = "https://files.pythonhosted.org/packages/76/06/04c8e804f813cf972e3262f3f8584c232de64f0cde9f703b46cf53a45090/virtualenv-20.34.0-py3-none-any.whl", hash = "sha256:341f5afa7eee943e4984a9207c025feedd768baff6753cd660c857ceb3e36026", size = 5983279 }, ] [[package]] name = "watchdog" version = "6.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload_time = "2024-11-01T14:07:13.037Z" } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471, upload_time = "2024-11-01T14:06:37.745Z" }, - { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449, upload_time = "2024-11-01T14:06:39.748Z" }, - { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054, upload_time = "2024-11-01T14:06:41.009Z" }, - { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480, upload_time = "2024-11-01T14:06:42.952Z" }, - { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451, upload_time = "2024-11-01T14:06:45.084Z" }, - { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057, upload_time = "2024-11-01T14:06:47.324Z" }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload_time = "2024-11-01T14:06:59.472Z" }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload_time = "2024-11-01T14:07:01.431Z" }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload_time = "2024-11-01T14:07:02.568Z" }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload_time = "2024-11-01T14:07:03.893Z" }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload_time = "2024-11-01T14:07:05.189Z" }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload_time = "2024-11-01T14:07:06.376Z" }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload_time = "2024-11-01T14:07:07.547Z" }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload_time = "2024-11-01T14:07:09.525Z" }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload_time = "2024-11-01T14:07:10.686Z" }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload_time = "2024-11-01T14:07:11.845Z" }, + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, + { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 }, + { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 }, + { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, ] [[package]] @@ -3074,88 +3267,88 @@ dependencies = [ { name = "requests" }, { name = "tabulate" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d7/4a/f55695bd1c9f1996b675b6e9e980eef40ebdb5e4bf8774c059c31af6ade1/wbgapi-1.0.12.tar.gz", hash = "sha256:338c3c768bd120b80596b48fa0449ecabc93513ac989c55671dce579dbb3a5be", size = 33590, upload_time = "2022-07-05T15:07:22.772Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/4a/f55695bd1c9f1996b675b6e9e980eef40ebdb5e4bf8774c059c31af6ade1/wbgapi-1.0.12.tar.gz", hash = "sha256:338c3c768bd120b80596b48fa0449ecabc93513ac989c55671dce579dbb3a5be", size = 33590 } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/12/224030af4886e119a3d03b709f7130e9601a4d15332e1d6a35671b25a4de/wbgapi-1.0.12-py3-none-any.whl", hash = "sha256:c5a1e1683b03d4264d287627c2562932f30e7f5c65509b812cb2e3de7d32633f", size = 36385, upload_time = "2022-07-05T15:07:20.606Z" }, + { url = "https://files.pythonhosted.org/packages/00/12/224030af4886e119a3d03b709f7130e9601a4d15332e1d6a35671b25a4de/wbgapi-1.0.12-py3-none-any.whl", hash = "sha256:c5a1e1683b03d4264d287627c2562932f30e7f5c65509b812cb2e3de7d32633f", size = 36385 }, ] [[package]] name = "wcwidth" version = "0.2.13" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload_time = "2024-01-06T02:10:57.829Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload_time = "2024-01-06T02:10:55.763Z" }, + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, ] [[package]] name = "webencodings" version = "0.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload_time = "2017-04-05T20:21:34.189Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload_time = "2017-04-05T20:21:32.581Z" }, + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, ] [[package]] name = "wheel" version = "0.45.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545, upload_time = "2024-11-23T00:18:23.513Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload_time = "2024-11-23T00:18:21.207Z" }, + { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494 }, ] [[package]] name = "win32-setctime" version = "1.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867, upload_time = "2024-12-07T15:28:28.314Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083, upload_time = "2024-12-07T15:28:26.465Z" }, + { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083 }, ] [[package]] name = "xlrd" version = "2.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/5a/377161c2d3538d1990d7af382c79f3b2372e880b65de21b01b1a2b78691e/xlrd-2.0.2.tar.gz", hash = "sha256:08b5e25de58f21ce71dc7db3b3b8106c1fa776f3024c54e45b45b374e89234c9", size = 100167, upload_time = "2025-06-14T08:46:39.039Z" } +sdist = { url = "https://files.pythonhosted.org/packages/07/5a/377161c2d3538d1990d7af382c79f3b2372e880b65de21b01b1a2b78691e/xlrd-2.0.2.tar.gz", hash = "sha256:08b5e25de58f21ce71dc7db3b3b8106c1fa776f3024c54e45b45b374e89234c9", size = 100167 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/62/c8d562e7766786ba6587d09c5a8ba9f718ed3fa8af7f4553e8f91c36f302/xlrd-2.0.2-py2.py3-none-any.whl", hash = "sha256:ea762c3d29f4cca48d82df517b6d89fbce4db3107f9d78713e48cd321d5c9aa9", size = 96555, upload_time = "2025-06-14T08:46:37.766Z" }, + { url = "https://files.pythonhosted.org/packages/1a/62/c8d562e7766786ba6587d09c5a8ba9f718ed3fa8af7f4553e8f91c36f302/xlrd-2.0.2-py2.py3-none-any.whl", hash = "sha256:ea762c3d29f4cca48d82df517b6d89fbce4db3107f9d78713e48cd321d5c9aa9", size = 96555 }, ] [[package]] name = "xlrd3" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/db/88d8d49ddacc203956ecb98dc86c6ffeee6e933ef1f50da9b369de518f7f/xlrd3-1.1.0.tar.gz", hash = "sha256:20e6ed2e5f7f8b4ab61e30faffebceff6fab348332b4c915373f0a72742dc177", size = 58919847, upload_time = "2021-04-25T12:27:10.03Z" } +sdist = { url = "https://files.pythonhosted.org/packages/79/db/88d8d49ddacc203956ecb98dc86c6ffeee6e933ef1f50da9b369de518f7f/xlrd3-1.1.0.tar.gz", hash = "sha256:20e6ed2e5f7f8b4ab61e30faffebceff6fab348332b4c915373f0a72742dc177", size = 58919847 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/08/fce745025e58f160e7dcb5a45d4d43eb0bd44c0d8851425be87ef90271fa/xlrd3-1.1.0-py2.py3-none-any.whl", hash = "sha256:8e8e808f938144e7936a6e07c1d57be7a0f6c6f5b37c9c67974b43246d8aacb6", size = 105268, upload_time = "2021-04-25T12:26:55.264Z" }, + { url = "https://files.pythonhosted.org/packages/5d/08/fce745025e58f160e7dcb5a45d4d43eb0bd44c0d8851425be87ef90271fa/xlrd3-1.1.0-py2.py3-none-any.whl", hash = "sha256:8e8e808f938144e7936a6e07c1d57be7a0f6c6f5b37c9c67974b43246d8aacb6", size = 105268 }, ] [[package]] name = "xlsx2csv" version = "0.8.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/20/94860286a308a4213581c1beacd4fc7be724250c03583fcff23aaa6107bb/xlsx2csv-0.8.4.tar.gz", hash = "sha256:2aa809888826f6af5b26c77fc7f613f2bbeada0d8cc09e5a58e0f59684bb6911", size = 221390, upload_time = "2024-11-19T17:06:07.818Z" } +sdist = { url = "https://files.pythonhosted.org/packages/36/20/94860286a308a4213581c1beacd4fc7be724250c03583fcff23aaa6107bb/xlsx2csv-0.8.4.tar.gz", hash = "sha256:2aa809888826f6af5b26c77fc7f613f2bbeada0d8cc09e5a58e0f59684bb6911", size = 221390 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/c0/15c21556362c67f1155f3643a375d50ac67559b82c768e64e800a42a2577/xlsx2csv-0.8.4-py3-none-any.whl", hash = "sha256:52ab873fc7b2f2ca75d14aee8bd1985a9f5c1bcb3cc7b80df7a5d57a40a67473", size = 15904, upload_time = "2024-11-19T17:06:05.362Z" }, + { url = "https://files.pythonhosted.org/packages/c4/c0/15c21556362c67f1155f3643a375d50ac67559b82c768e64e800a42a2577/xlsx2csv-0.8.4-py3-none-any.whl", hash = "sha256:52ab873fc7b2f2ca75d14aee8bd1985a9f5c1bcb3cc7b80df7a5d57a40a67473", size = 15904 }, ] [[package]] name = "xlsxwriter" -version = "3.2.5" +version = "3.2.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a7/47/7704bac42ac6fe1710ae099b70e6a1e68ed173ef14792b647808c357da43/xlsxwriter-3.2.5.tar.gz", hash = "sha256:7e88469d607cdc920151c0ab3ce9cf1a83992d4b7bc730c5ffdd1a12115a7dbe", size = 213306, upload_time = "2025-06-17T08:59:14.619Z" } +sdist = { url = "https://files.pythonhosted.org/packages/46/2c/c06ef49dc36e7954e55b802a8b231770d286a9758b3d936bd1e04ce5ba88/xlsxwriter-3.2.9.tar.gz", hash = "sha256:254b1c37a368c444eac6e2f867405cc9e461b0ed97a3233b2ac1e574efb4140c", size = 215940 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/34/a22e6664211f0c8879521328000bdcae9bf6dbafa94a923e531f6d5b3f73/xlsxwriter-3.2.5-py3-none-any.whl", hash = "sha256:4f4824234e1eaf9d95df9a8fe974585ff91d0f5e3d3f12ace5b71e443c1c6abd", size = 172347, upload_time = "2025-06-17T08:59:13.453Z" }, + { url = "https://files.pythonhosted.org/packages/3a/0c/3662f4a66880196a590b202f0db82d919dd2f89e99a27fadef91c4a33d41/xlsxwriter-3.2.9-py3-none-any.whl", hash = "sha256:9a5db42bc5dff014806c58a20b9eae7322a134abb6fce3c92c181bfb275ec5b3", size = 175315 }, ] [[package]] name = "xlwt" version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/97/56a6f56ce44578a69343449aa5a0d98eefe04085d69da539f3034e2cd5c1/xlwt-1.3.0.tar.gz", hash = "sha256:c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88", size = 153929, upload_time = "2017-08-22T06:47:16.498Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/97/56a6f56ce44578a69343449aa5a0d98eefe04085d69da539f3034e2cd5c1/xlwt-1.3.0.tar.gz", hash = "sha256:c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88", size = 153929 } wheels = [ - { url = "https://files.pythonhosted.org/packages/44/48/def306413b25c3d01753603b1a222a011b8621aed27cd7f89cbc27e6b0f4/xlwt-1.3.0-py2.py3-none-any.whl", hash = "sha256:a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e", size = 99981, upload_time = "2017-08-22T06:47:15.281Z" }, + { url = "https://files.pythonhosted.org/packages/44/48/def306413b25c3d01753603b1a222a011b8621aed27cd7f89cbc27e6b0f4/xlwt-1.3.0-py2.py3-none-any.whl", hash = "sha256:a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e", size = 99981 }, ] From 7f9bdea809396df317df863278629245c18071f9 Mon Sep 17 00:00:00 2001 From: Johannes HAMPP <42553970+euronion@users.noreply.github.com> Date: Thu, 6 Nov 2025 13:07:39 +0100 Subject: [PATCH 26/30] Docs readme (#75) * Add simple README * Add LICENSE for GitHub * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * doc: changes to README.md --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Fabrizio Finozzi --- LICENSE | 18 ++++++++ README.md | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 142 insertions(+) create mode 100644 LICENSE create mode 100644 README.md diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..d817195d --- /dev/null +++ b/LICENSE @@ -0,0 +1,18 @@ +MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO +EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 00000000..8e306d96 --- /dev/null +++ b/README.md @@ -0,0 +1,124 @@ +# technologydata + + + + + +A Python package to manage techno-economic assumptions for energy system models. + +## Overview + +`technologydata` is a Python package that supports the management of techno-economic assumptions for energy system models. +It provides a structured way to store, retrieve, and manipulate data related to various technologies used in energy systems, +including unit-ful parameters, currency conversions, inflation adjustment, and temporal modelling. + +In the future it will include pre-parsed data from common public data sources such NREL's ATB or DEA's Technology Catalogue. +For these datasources it will also include parsers that can be modified to extract data in a custom way. + +The goal of this package is to make energy system modelling easier and more efficient, +automating common tasks and transformations to reduce errors and allowing for easier data exchange between models. + +## Table of Contents + +1. [Background](#background) +2. [Install](#install) +3. [Usage](#usage) +4. [Maintainers](#maintainers) +5. [Thanks](#thanks) +6. [Contributing](#contributing) +7. [License](#license) + +## Background + +> Modelling is 10% science, 10% art, and 80% finding the right data and getting it into the right format. +> β€” Every energy modeller ever + +Modelling energy systems requires a lot of data. +Techno-economic data, i.e. data about the costs for building operating technologies and their technical +characteristics, is a key input to many energy system models today. + +Techno-economic data is usually collected from a variety of scattered sources and then manually processed +into the format required by a specific model. +This is repeated for every new modelling project, leading to a lot of duplicated effort. +The manual processing also carries a high risk of errors, which can lead to misleading results. + +When projects are finished, the processed data is often discarded, leading to a loss of valuable information. +In better cases, the processed data is also published along with the model results, but usually in a +non-standardised and non-machine-readable format and without information about the data provenance and processing steps. + +It sounds abstract, but if someone used cost assumptions for the US in 2015 USD, then there are many wrong ways +and a few right ways to convert these to e.g. EUR and adjust it for inflation to 2023. + +## Install + +The package is currently under development and not yet published to `PyPI` or `conda-forge`. + +To install the package locally from GitHub, first clone the package and then use `uv` to install it in editable mode: + +```bash +git clone https://github.com/open-energy-transition/technology-data/tree/prototype-2 +cd technology-data +git checkout prototype-2 +uv sync --group dev --group docs +``` + +## Usage + +Detailed usage instructions and examples can be found in the [documentation](https://technology-data--240.org.readthedocs.build/en/240/). + +To create a `Technology` object with some parameters and then adjust for inflation and convert to a different currency, you can use the following code: + +```python +from technologydata import Technology, Parameter + +tech = Technology( + name="Solar PV", + detailed_technology="Utility-scale PV", + region="USA", + year=2020, + parameters={ + "capital_cost": Parameter(value=600, unit="USD_2020/kW"), + "efficiency": Parameter(value=15, unit="percent"), + } +) + +tech = tech.to_currency("EUR_2023") +``` + +## Maintainers + +This repository is currently maintained by [Open Energy Transition](https://openenergytransition.org/) with the maintainers and developers being: + +- [euronion](https://github.com/euronion) +- [finozzifa](https://github.com/finozzifa) + +## Thanks + +Development of this prototype package would not have been possible without the funding from [Breakthrough Energy](https://www.breakthroughenergy.org/). + +## Contributing + +For contributing instructions, guidelines and our code of conduct, please refer to the [contributing section](https://technology-data--240.org.readthedocs.build/en/240/contributing/instructions/) in the documentation. + +## License + +This project is licensed under the [MIT License](LICENSES/MIT.txt). + +Primary data included in the repository may be licensed under specific terms. +Processed data included in the project is licensed under [Creative Commons Attribution 4.0 International (CC BY 4.0)](LICENSES/CC-BY-4.0.txt). + +To make it easier to identify which data is licensed under which terms, this repository follows the [REUSE](https://reuse.software/) specification. +This means you can find the license information for each file either located in its header or in [REUSE.toml](REUSE.toml). From 06d3f5f2105b5178954f4e23a62e71f46525e64e Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Thu, 6 Nov 2025 14:51:16 +0100 Subject: [PATCH 27/30] code: skip three more unit tests (#76) --- test/test_source.py | 1 + test/test_source_collection.py | 1 + 2 files changed, 2 insertions(+) diff --git a/test/test_source.py b/test/test_source.py index 05985510..92fa313b 100644 --- a/test/test_source.py +++ b/test/test_source.py @@ -196,6 +196,7 @@ def test_ensure_in_wayback(self, example_source: technologydata.Source) -> None: assert example_source.url_date_archive is not None assert example_source.url_archive is not None + @pytest.mark.webarchive # type: ignore @pytest.mark.parametrize( "url_archived, source_path, source_title, expected_path", [ diff --git a/test/test_source_collection.py b/test/test_source_collection.py index f8503959..75c77cfb 100644 --- a/test/test_source_collection.py +++ b/test/test_source_collection.py @@ -81,6 +81,7 @@ def test_example_source_collection( assert example_source_collection.sources[0].authors == "Author 1" assert example_source_collection.sources[1].authors == "Author 2" + @pytest.mark.webarchive # type: ignore @pytest.mark.parametrize( "example_source_collection", [ From 6234d83bda54220507aa1a2f7e81e7b4e3ddd3e9 Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Tue, 18 Nov 2025 15:08:35 +0100 Subject: [PATCH 28/30] Make output schema of `SourceCollection` and `TechnologyCollection` optional (#77) * code: make output schema optional * test new pydeflate version * code: re-vert back to older version of pydeflate * re-vert uvlock --- src/technologydata/source_collection.py | 23 ++++-- src/technologydata/technology_collection.py | 23 ++++-- test/test_source_collection.py | 81 +++++++++++++++------ test/test_technology_collection.py | 17 ++++- 4 files changed, 101 insertions(+), 43 deletions(-) diff --git a/src/technologydata/source_collection.py b/src/technologydata/source_collection.py index f4beb955..4e14d4f2 100644 --- a/src/technologydata/source_collection.py +++ b/src/technologydata/source_collection.py @@ -177,7 +177,10 @@ def to_csv(self, **kwargs: pathlib.Path | str | bool) -> None: output_dataframe.to_csv(**merged_kwargs) def to_json( - self, file_path: pathlib.Path, schema_path: pathlib.Path | None = None + self, + file_path: pathlib.Path, + schema_path: pathlib.Path | None = None, + output_schema: bool = False, ) -> None: """ Export the SourceCollection to a JSON file, together with a data schema. @@ -188,17 +191,21 @@ def to_json( The path to the JSON file to be created. schema_path : pathlib.Path The path to the JSON schema file to be created. By default, created with a `schema` suffix next to `file_path`. + output_schema : bool, default False + If True, generates a JSON schema file describing the data structure. + The schema will include field descriptions and type information. """ - if schema_path is None: - schema_path = file_path.with_suffix(".schema.json") + if output_schema: + if schema_path is None: + schema_path = file_path.with_suffix(".schema.json") - # Export the model's schema with descriptions to a dict - schema = self.model_json_schema() + # Export the model's schema with descriptions to a dict + schema = self.model_json_schema() - # Save the schema (which includes descriptions) to a JSON file - with open(schema_path, "w") as f: - json.dump(schema, f, indent=4) + # Save the schema (which includes descriptions) to a JSON file + with open(schema_path, "w") as f: + json.dump(schema, f, indent=4) with open(file_path, mode="w", encoding="utf-8") as jsonfile: json_data = self.model_dump_json(indent=4) # Convert to JSON string diff --git a/src/technologydata/technology_collection.py b/src/technologydata/technology_collection.py index 00b88005..5e7a56ab 100644 --- a/src/technologydata/technology_collection.py +++ b/src/technologydata/technology_collection.py @@ -178,7 +178,10 @@ def to_csv(self, **kwargs: pathlib.Path | str | bool) -> None: output_dataframe.to_csv(**merged_kwargs) def to_json( - self, file_path: pathlib.Path, schema_path: pathlib.Path | None = None + self, + file_path: pathlib.Path, + schema_path: pathlib.Path | None = None, + output_schema: bool = False, ) -> None: """ Export the TechnologyCollection to a JSON file, together with a data schema. @@ -189,17 +192,21 @@ def to_json( The path to the JSON file to be created. schema_path : pathlib.Path The path to the JSON schema file to be created. By default, created with a `schema` suffix next to `file_path`. + output_schema : bool, default False + If True, generates a JSON schema file describing the data structure. + The schema will include field descriptions and type information. """ - if schema_path is None: - schema_path = file_path.with_suffix(".schema.json") + if output_schema: + if schema_path is None: + schema_path = file_path.with_suffix(".schema.json") - # Export the model's schema with descriptions to a dict - schema = self.model_json_schema() + # Export the model's schema with descriptions to a dict + schema = self.model_json_schema() - # Save the schema (which includes descriptions) to a JSON file - with open(schema_path, "w") as f: - json.dump(schema, f, indent=4) + # Save the schema (which includes descriptions) to a JSON file + with open(schema_path, "w") as f: + json.dump(schema, f, indent=4) with open(file_path, mode="w", encoding="utf-8") as jsonfile: json_data = self.model_dump_json(indent=4) # Convert to JSON string diff --git a/test/test_source_collection.py b/test/test_source_collection.py index 75c77cfb..7ec6e7f9 100644 --- a/test/test_source_collection.py +++ b/test/test_source_collection.py @@ -164,39 +164,74 @@ def test_to_csv( assert output_file.is_file() output_file.unlink(missing_ok=True) + # python @pytest.mark.parametrize( - "example_source_collection", + "example_source_collection, output_schema", [ - [ - { - "source_title": "atb_nrel", - "source_authors": "NREL/ATB", - "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", - "source_url_date": "2025-05-22 15:08:02", - "source_url_date_archive": "2025-05-22 15:08:02", - }, - { - "source_title": "tech_data_generation", - "source_authors": "Danish Energy Agency", - "source_url": "https://ens.dk/media/3273/download", - "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", - "source_url_date": "2025-05-06 16:02:04", - "source_url_date_archive": "2025-05-06 16:02:04", - }, - ], + ( + [ + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_date": "2025-05-22 15:08:02", + "source_url_date_archive": "2025-05-22 15:08:02", + }, + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + "source_url": "https://ens.dk/media/3273/download", + "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + ], + True, + ), + ( + [ + { + "source_title": "atb_nrel", + "source_authors": "NREL/ATB", + "source_url": "https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_archive": "https://web.archive.org/web/20250522150802/https://oedi-data-lake.s3.amazonaws.com/ATB/electricity/parquet/2024/v3.0.0/ATBe.parquet", + "source_url_date": "2025-05-22 15:08:02", + "source_url_date_archive": "2025-05-22 15:08:02", + }, + { + "source_title": "tech_data_generation", + "source_authors": "Danish Energy Agency", + "source_url": "https://ens.dk/media/3273/download", + "source_url_archive": "http://web.archive.org/web/20250506160204/https://ens.dk/media/3273/download", + "source_url_date": "2025-05-06 16:02:04", + "source_url_date_archive": "2025-05-06 16:02:04", + }, + ], + False, + ), ], indirect=["example_source_collection"], ) # type: ignore def test_to_json( - self, example_source_collection: technologydata.SourceCollection + self, + example_source_collection: technologydata.SourceCollection, + output_schema: bool, ) -> None: """Check if the example source collection is exported to JSON.""" output_file = pathlib.Path(path_cwd, "sources.json") schema_file = pathlib.Path(path_cwd, "sources.schema.json") - example_source_collection.to_json(pathlib.Path(output_file)) + + example_source_collection.to_json( + pathlib.Path(output_file), output_schema=output_schema + ) + assert output_file.is_file() - assert schema_file.is_file() + if output_schema: + assert schema_file.is_file() + else: + assert not schema_file.is_file() + output_file.unlink(missing_ok=True) schema_file.unlink(missing_ok=True) @@ -258,7 +293,7 @@ def test_from_json_to_json(self) -> None: source_collection = technologydata.SourceCollection.from_json(input_file) output_file = pathlib.Path("to_json_test.json") schema_file = pathlib.Path(path_cwd, "to_json_test.schema.json") - source_collection.to_json(output_file) + source_collection.to_json(output_file, output_schema=True) # Read files and strip trailing whitespace/newlines before comparing with open(input_file) as f1, open(output_file) as f2: assert f1.read().rstrip() == f2.read().rstrip(), "Files are not identical" diff --git a/test/test_technology_collection.py b/test/test_technology_collection.py index 57b0f609..84560d50 100644 --- a/test/test_technology_collection.py +++ b/test/test_technology_collection.py @@ -48,7 +48,11 @@ def test_to_dataframe(self) -> None: ) assert isinstance(technology_collection.to_dataframe(), pandas.DataFrame) - def test_to_json(self) -> None: + @pytest.mark.parametrize( + "output_schema", + [True, False], + ) # type: ignore + def test_to_json(self, output_schema: bool) -> None: """Check if to_json works as expected.""" input_file = pathlib.Path( path_cwd, @@ -62,9 +66,14 @@ def test_to_json(self) -> None: ) output_file = pathlib.Path(path_cwd, "technologies.json") schema_file = pathlib.Path(path_cwd, "technologies.schema.json") - technology_collection.to_json(pathlib.Path(output_file)) + technology_collection.to_json( + pathlib.Path(output_file), output_schema=output_schema + ) assert output_file.is_file() - assert schema_file.is_file() + if output_schema: + assert schema_file.is_file() + else: + assert not schema_file.is_file() output_file.unlink(missing_ok=True) schema_file.unlink(missing_ok=True) @@ -97,7 +106,7 @@ def test_from_json_to_json(self) -> None: ) output_file = pathlib.Path("to_json_test.json") schema_file = pathlib.Path(path_cwd, "to_json_test.schema.json") - technology_collection.to_json(output_file) + technology_collection.to_json(output_file, output_schema=True) # Read files and strip trailing whitespace/newlines before comparing with open(input_file) as f1, open(output_file) as f2: From 471b617c87aa2c53b72b19333d929f8ed4f7cd20 Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Wed, 19 Nov 2025 13:25:36 +0100 Subject: [PATCH 29/30] Prototest DEA (#57) * code: add dea energy storage parser * code: add clean_parameter_string * add pre-commit checks * code: proceeding with the code * code: new stage of parser * add format_val_number * pre-commit update * code: update unit tests * code: correct small typo * code: update filtering * code: remove unnecessary print statements * code: add calamine * code: remove inplace * code: add explaination on column name - attributes * code: update ws column * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: update unit-par * code: update dea_energy_storage * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * pre-commit * code: correct units * code: re-order code * code: update parser * code: update the storage * code: update notes and code * code: express output_path * code: add argparse to dea_energy_storage.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * pre-commit check * code: added logger.info * code: update pct unit * code: add pydantic validator and filter on parameters * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: update code * code: ruff changes * code: update code with parameters re-set * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * json file: pre-commit * Update REUSE.toml Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/package_data/dea_energy_storage/sources.json Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/package_data/dea_energy_storage/sources.json Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * Update src/technologydata/package_data/dea_energy_storage/dea_energy_storage.py Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: update tests * code: update * doc: modify license owner for raw data * code: move method to commons * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: updates * code: entered capacity parameter * code: update unit test * code: remove unit test * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * code: re-add unit test and re-flag it as webarchive * remove unnecesary files * code: update test_dea_energy_storage --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Johannes HAMPP <42553970+euronion@users.noreply.github.com> --- REUSE.toml | 14 + .../dea_energy_storage/dea_energy_storage.py | 691 + .../dea_energy_storage/sources.json | 12 + .../dea_energy_storage/technologies.json | 17508 ++++++++++++++++ ...chnology_datasheet_for_energy_storage.xlsx | Bin 0 -> 329612 bytes src/technologydata/technology.py | 3 - src/technologydata/utils/commons.py | 41 + test/test_commons.py | 17 + test/test_dea_energy_storage.py | 230 + 9 files changed, 18513 insertions(+), 3 deletions(-) create mode 100644 src/technologydata/package_data/dea_energy_storage/dea_energy_storage.py create mode 100644 src/technologydata/package_data/dea_energy_storage/sources.json create mode 100644 src/technologydata/package_data/dea_energy_storage/technologies.json create mode 100644 src/technologydata/package_data/raw/Technology_datasheet_for_energy_storage.xlsx create mode 100644 test/test_dea_energy_storage.py diff --git a/REUSE.toml b/REUSE.toml index 4633211e..7fb6048e 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -13,3 +13,17 @@ SPDX-License-Identifier = "MIT" path = ["test/test_data/**",] SPDX-FileCopyrightText = "The technology-data authors" SPDX-License-Identifier = "CC-BY-4.0" + +[[annotations]] +path = [ + "src/technologydata/package_data/dea_energy_storage/*.json", "src/technologydata/package_data/schemas/*.json" +] +SPDX-FileCopyrightText = "The technology-data authors" +SPDX-License-Identifier = "CC-BY-4.0" + +[[annotations]] +path = [ + "src/technologydata/package_data/raw/Technology_datasheet_for_energy_storage.xlsx" +] +SPDX-FileCopyrightText = "The Danish Energy Agency" +SPDX-License-Identifier = "CC-BY-4.0" diff --git a/src/technologydata/package_data/dea_energy_storage/dea_energy_storage.py b/src/technologydata/package_data/dea_energy_storage/dea_energy_storage.py new file mode 100644 index 00000000..da178dc8 --- /dev/null +++ b/src/technologydata/package_data/dea_energy_storage/dea_energy_storage.py @@ -0,0 +1,691 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +""" +Data parser for the DEA energy storage data set. + +How to run: + From the repository root, execute: + python src/technologydata/package_data/dea_energy_storage/dea_energy_storage.py + +Configuration options (command-line arguments): + --num_digits Number of significant digits to round the values. Default: 4 + --store_source Store the source object on the Wayback Machine. Default: False + --filter_params Filter the parameters stored to technologies.json. Default: False + +Example: + python src/technologydata/package_data/dea_energy_storage/dea_energy_storage.py --num_digits 3 --store_source --filter_params + +""" + +import argparse +import logging +import pathlib +import re +import typing + +import pandas as pd +import pydantic + +from technologydata import ( + Commons, + Parameter, + Source, + SourceCollection, + Technology, + TechnologyCollection, +) + +path_cwd = pathlib.Path.cwd() + +logger = logging.getLogger(__name__) + + +def drop_invalid_rows(dataframe: pd.DataFrame) -> pd.DataFrame: + """ + Clean and filter a DataFrame by removing rows with invalid or incomplete data. + + This function performs multiple validation checks to ensure data quality: + - Removes rows with None or NaN values in critical columns + - Removes rows with empty or whitespace-only strings + - Filters rows based on specific data integrity criteria + - Discards rows where 'val' column contains comparator symbols or non-numeric values + + Parameters + ---------- + dataframe : pd.DataFrame + The input DataFrame to be cleaned and validated. + + Returns + ------- + pd.DataFrame + A new DataFrame with invalid rows removed, maintaining data integrity. + + Notes + ----- + Validation criteria include: + - Non-empty 'Technology', 'par', and 'val' columns + - 'year' column containing a valid 4-digit year + - 'val' column containing only numeric values (no comparator symbols) + + """ + # Create a copy to avoid modifying the original DataFrame + df_cleaned = dataframe.copy() + + # Validate column existence + required_columns = ["Technology", "par", "val", "year"] + missing_columns = [col for col in required_columns if col not in df_cleaned.columns] + if missing_columns: + raise ValueError(f"Missing required columns: {missing_columns}") + + # Remove rows with None or NaN values in critical columns + df_cleaned = df_cleaned.dropna(subset=required_columns) + + # Remove rows with empty or whitespace-only strings + for column in required_columns: + df_cleaned = df_cleaned[df_cleaned[column].astype(str).str.strip() != ""] + + # Filter rows with valid year (4 consecutive digits) + df_cleaned = df_cleaned[ + df_cleaned["year"].astype(str).str.contains(r"\d{4}", regex=True) + ] + + # Remove rows with comparator symbols or without digits in 'val' column + df_cleaned = df_cleaned[ + (~df_cleaned["val"].astype(str).str.contains(r"[<>≀β‰₯]", regex=True)) + & (df_cleaned["val"].astype(str).str.contains(r"\d", regex=True)) + ] + + return df_cleaned + + +@pydantic.validate_call +def clean_parameter_string(text_string: str) -> str: + """ + Remove any string between [] or [), any leading hyphen or double quotes from the input string. Lower-case all. + + Parameters + ---------- + text_string : str + input string to be cleaned. + + Returns + ------- + str + cleaned string with [] and [) and leading hyphen or double quotes removed. + + Examples + -------- + >>> clean_parameter_string("- Charge efficiency [%]") + charge efficiency + >>> clean_parameter_string("Energy storage capacity for one unit [MWh)") + energy storage capacity for one unit + + """ + # Remove leading hyphen + text_string = text_string.lstrip("-") + + # Remove content inside square brackets including the brackets themselves + result = re.sub(r"\[.*?\]", "", text_string) + + # Remove content inside square bracket and parenthesis including the brackets/parenthesis themselves + result = re.sub(r"\[.*?\)", "", result) + + # Remove extra spaces resulting from the removal and set all to lower case + result = re.sub(r"\s+", " ", result).strip().casefold() + + return result + + +@pydantic.validate_call +def clean_technology_string(tech_str: str) -> str: + """ + Clean a technology string by removing numeric patterns and standardizing case. + + This function pre-processes technology-related strings by: + - Removing three-digit numeric patterns (with optional letter) + - Stripping leading and trailing whitespace + - Converting to lowercase for case-insensitive comparison + + Parameters + ---------- + tech_str : str + Input technology string to be cleaned. + + Returns + ------- + str + Cleaned technology string with: + - Numeric patterns (like '123' or '456a') removed + - Whitespace stripped + - Converted to lowercase + + Raises + ------ + Exception + If string conversion or processing fails, logs the error and returns the original input. + + Examples + -------- + >>> clean_technology_string("143a Rock-based Carnot battery") + rock-based carnot battery + >>> clean_technology_string("Pit Thermal Energy Storage [PTES]") + pit thermal energy storage [ptes] + + """ + try: + # Remove three-digit patterns or three digits followed by a letter + return re.sub(r"^(\d{3}[a-zA-Z]?)", "", tech_str.strip()).strip().casefold() + except Exception as e: + logger.error(f"Error cleaning technology '{tech_str}': {e}") + return tech_str + + +@pydantic.validate_call +def format_val_number(input_value: str, num_decimals: int) -> float | None | typing.Any: + """ + Parse various number formats into a float value. + + Parameters + ---------- + input_value : str + The input number in different formats, such as: + - Scientific notation with "x10^": e.g., "2.84x10^23" + - Numbers with commas as decimal separators: e.g., "1,1" + num_decimals : int + Number of decimals + + Returns + ------- + float + The parsed numerical value as a float. + + Raises + ------ + ValueError + If the input cannot be parsed into a float. + + Examples + -------- + >>> format_val_number("1,1") + 1.1 + >>> format_val_numer("2.84Γ—10-27") + 2.84e-27 + + """ + s = str(input_value).strip() + + # Handle scientific notation like "2.84x10^23" + match = re.match(r"([+-]?\d*\.?\d+)Γ—10([+-]?\d+)", s) + if match: + base, exponent = match.groups() + return round(float(base), num_decimals) * (10 ** int(exponent)) + + # Replace comma with dot for decimal numbers + s = s.replace(",", ".") + try: + return round(float(s), num_decimals) + except ValueError: + raise ValueError(f"Cannot parse number from input: {input_value}") + + +@pydantic.validate_call +def extract_year(year_str: str) -> int | None: + """ + Extract the first year (integer) from a given input. + + Parameters + ---------- + year_str : str + Input value containing a potential year. + + Returns + ------- + int, None + Extracted first year. + + Examples + -------- + >>> extract_year('uncertainty (2050)') + 2050 + + """ + # Extract digits + digits = re.findall(r"\d+", year_str) + + # Convert to integer + return int(digits[0]) if digits else None + + +@pydantic.validate_call +def clean_est_string(est_str: str) -> str: + """ + Casefold the 'est' string, trim whitespace and replace `ctrl` with `control`. + + Parameters + ---------- + est_str : str + The input 'est' string to be cleaned. + + Returns + ------- + str + The cleaned 'est' string. + + Examples + -------- + >>> clean_est_string("Lower") + lower + >>> clean_est_string("ctrl") + control + + """ + if est_str == "ctrl": + cleaned_str = "control" + else: + cleaned_str = est_str.casefold().strip() + return cleaned_str + + +def standardize_units(series: pd.Series) -> pd.Series: + """ + Complete missing units based on parameter names and replace incorrect units. + + Parameters + ---------- + series : pandas.Series + A series containing two elements: [par, unit] + + Returns + ------- + pandas.Series + Updated series with completed and corrected unit. + + Notes + ----- + The following substitutions are driven by the `pint` documentation available + at https://github.com/hgrecco/pint/blob/master/pint/default_en.txt: + - "pct.": "percent", + - "m2": "meter**2", + - "m3": "meter**3", + + """ + par, unit = series + + # Mapping of parameters to their default units + param_unit_map = { + "energy storage capacity for one unit": "MWh", + "typical temperature difference in storage": "K", + "fixed o&m": "pct./year", + "lifetime in total number of cycles": "cycles", + "cycle life": "cycles", + } + + # Mapping of incorrect units to correct units + unit_corrections = { + "pct./period": "percent", + "⁰C": "C", + "Β°C": "C", + "pct./30sec": "pct.", + "m2": "meter**2", + "m3": "meter**3", + "MWhoutput": "MWh", + "hot/cold,K": "K", + "pct.investement": "percent", + "pct.investment": "percent", + "tank/": "", + "pct.": "percent", + } + + # Complete missing or empty units + if (not isinstance(unit, str)) or (unit.strip() == ""): + unit = param_unit_map.get(par, unit) + + # Replace wrong units + for incorrect, correct in unit_corrections.items(): + if incorrect == unit or incorrect in unit: + unit = unit.replace(incorrect, correct) + + return pd.Series([par, unit]) + + +def filter_parameters(dataframe: pd.DataFrame, filter_flag: bool) -> pd.DataFrame: + """ + Filter rows of a DataFrame by allowed technology parameters. + + Parameters + ---------- + dataframe : pandas.DataFrame + Input DataFrame containing at least a "Technology" column. + filter_flag : Boolean + If true, filter parameter `par` column + + Returns + ------- + pandas.DataFrame + The filtered DataFrame. The returned + DataFrame contains only rows where the `par` column is one of: + "technical lifetime", "fixed o&m", "specific investment", or + "variable o&m". + + """ + allowed_set = { + "technical lifetime", + "fixed o&m", + "specific investment", + "variable o&m", + "charge efficiency", + "discharge efficiency", + "capacity", + } + print("filter_flag", filter_flag) + if filter_flag: + # Filter the DataFrame based on the allowed set + df_filtered = dataframe[dataframe["par"].isin(allowed_set)].reset_index( + drop=True + ) + logger.info( + f"technologies.json contains a subset of the allowed parameters: {allowed_set}." + ) + else: + # Return the original DataFrame if filter_flag is False + df_filtered = dataframe + logger.info("All parameters are outputted to technologies.json") + return df_filtered + + +def build_technology_collection( + dataframe: pd.DataFrame, + sources_path: pathlib.Path, + store_source: bool = False, + output_schema: bool = False, +) -> TechnologyCollection: + """ + Compute a collection of technologies from a grouped DataFrame. + + Processes input DataFrame by grouping technologies and extracting their parameters, + creating Technology instances for each unique group. + + Parameters + ---------- + dataframe : pandas.DataFrame + Input DataFrame containing technology parameters. + Expected columns include: + - 'est': Estimation or case identifier + - 'year': Year of the technology + - 'ws': Workspace or technology identifier + - 'Technology': Detailed technology name + - 'par': Parameter name + - 'val': Parameter value + - 'unit': Parameter units + sources_path: pathlib.Path + Output path for storing the SourceCollection object + store_source: Optional[bool] + Flag to decide whether to store the source object on the Wayback Machine. Default False. + output_schema : Optional[bool] + Flag to decide whether to export the source collection schema. Default False. + + Returns + ------- + TechnologyCollection + A collection of Technology instances, each representing a unique + technology group with its associated parameters. + + Notes + ----- + - The function groups the DataFrame by 'est', 'year', 'ws', and 'Technology' + - For each group, it creates a dictionary of Parameters + - Each Technology is instantiated with group-specific attributes + + """ + list_techs = [] + + if store_source: + source = Source( + title="Technology Data for Energy storage (May 2025)", + authors="Danish Energy Agency", + url="https://ens.dk/media/6589/download", + url_date="2025-10-08 09:24:00", + ) + source.ensure_in_wayback() + sources = SourceCollection(sources=[source]) + sources.to_json(sources_path, output_schema=output_schema) + else: + sources = SourceCollection.from_json(sources_path) + + for (est, year, ws, technology_name), group in dataframe.groupby( + ["est", "year", "ws", "Technology"] + ): + parameters = {} + for _, row in group.iterrows(): + parameters[row["par"]] = Parameter( + magnitude=row["val"], + units=row["unit"], + sources=sources, + provenance="Parsed from Excel file", + ) + list_techs.append( + Technology( + name=ws, + region="EU", + year=year, + parameters=parameters, + case=est, + detailed_technology=technology_name, + ) + ) + return TechnologyCollection(technologies=list_techs) + + +@pydantic.validate_call +def parse_input_arguments() -> argparse.Namespace: + """ + Parse command line arguments. + + Returns + ------- + argparse.Namespace + Parsed command line arguments containing: + - Number of significant digits + - Store source flag + + """ + # Create the parser + parser = argparse.ArgumentParser( + description="Parse the DEA technology storage dataset", + formatter_class=argparse.RawTextHelpFormatter, + ) + + # Define arguments + parser.add_argument( + "--num_digits", + type=int, + default=4, + help="Name of significant digits to round the values. ", + ) + + parser.add_argument( + "--store_source", + action="store_true", + help="store_source, store the source object on the wayback machine. Default: false", + ) + + parser.add_argument( + "--filter_params", + action="store_true", + help="filter_params. Filter the parameters stored to technologies.json. Default: false", + ) + + parser.add_argument( + "--export_schema", + action="store_true", + help="export_schema. Export the Source/TechnologyCollection schemas. Default: false", + ) + + # Parse arguments + args = parser.parse_args() + + return args + + +if __name__ == "__main__": + # Parse input arguments + input_args = parse_input_arguments() + logger.info("Command line arguments parsed.") + + # Read the raw data + dea_energy_storage_file_path = pathlib.Path( + path_cwd, + "src", + "technologydata", + "package_data", + "raw", + "Technology_datasheet_for_energy_storage.xlsx", + ) + + dea_energy_storage_df = pd.read_excel( + dea_energy_storage_file_path, + sheet_name="alldata_flat", + engine="calamine", + dtype=str, + ) + logger.info("Input file read-in.") + + # Drop unnecessary rows + cleaned_df = drop_invalid_rows(dea_energy_storage_df) + logger.info("Unnecessary rows dropped.") + + # Clean technology (Technology) column + cleaned_df["Technology"] = cleaned_df["Technology"].apply(clean_technology_string) + + # Clean ws column + cleaned_df["ws"] = cleaned_df["ws"].apply(clean_technology_string) + logger.info("`Technology` and `ws` cleaned.") + + # Clean year column + cleaned_df["year"] = cleaned_df["year"].apply(extract_year) + logger.info("`year` column cleaned.") + + # Clean parameter (par) column + cleaned_df["par"] = cleaned_df["par"].apply(clean_parameter_string) + logger.info("`par` column cleaned.") + + # Complete missing units based on parameter names and replace incorrect units. + cleaned_df[["par", "unit"]] = cleaned_df[["par", "unit"]].apply( + standardize_units, axis=1 + ) + logger.info("Missing units added and wrong units replaced.") + + # Include priceyear in unit if applicable + cleaned_df["unit"] = cleaned_df.apply( + lambda row: Commons.update_unit_with_currency_year( + row["unit"], row["priceyear"] + ), + axis=1, + ) + logger.info("`priceyear` included in `unit` column.") + + # Format value (val) column + cleaned_df["val"] = cleaned_df["val"].apply( + lambda x: format_val_number(x, input_args.num_digits) + ) + logger.info("`val` column formatted.") + + # Replace "MEUR_2020" with "EUR_2020" and multiply val by 1_000_000 + mask_meur = cleaned_df["unit"].str.contains("MEUR_2020") + cleaned_df.loc[mask_meur, "unit"] = cleaned_df.loc[mask_meur, "unit"].str.replace( + "MEUR_2020", "EUR_2020" + ) + cleaned_df.loc[mask_meur, "val"] = ( + cleaned_df.loc[mask_meur, "val"] * 1_000_000.0 + ).round(input_args.num_digits) + + # Replace "kEUR_2020" with "EUR_2020" and multiply val by 1_000 + mask_lower_keur = cleaned_df["unit"].str.contains("kEUR_2020") + cleaned_df.loc[mask_lower_keur, "unit"] = cleaned_df.loc[ + mask_lower_keur, "unit" + ].str.replace("kEUR_2020", "EUR_2020") + cleaned_df.loc[mask_lower_keur, "val"] = ( + cleaned_df.loc[mask_lower_keur, "val"] * 1_000.0 + ).round(input_args.num_digits) + + # Replace "KEUR_2020" with "EUR_2020" and multiply val by 1_000 + mask_upper_keur = cleaned_df["unit"].str.contains("KEUR_2020") + cleaned_df.loc[mask_upper_keur, "unit"] = cleaned_df.loc[ + mask_upper_keur, "unit" + ].str.replace("KEUR_2020", "EUR_2020") + cleaned_df.loc[mask_upper_keur, "val"] = ( + cleaned_df.loc[mask_upper_keur, "val"] * 1_000.0 + ).round(input_args.num_digits) + + # Replace "mol/s/m/MPa1/2" with "mol/s/m/Pa" and multiply val by 1_000_000 + mask_mols = cleaned_df["unit"].str.contains("mol/s/m/MPa1/2") + cleaned_df.loc[mask_mols, "unit"] = cleaned_df.loc[mask_mols, "unit"].str.replace( + "mol/s/m/MPa1/2", "mol/s/m/Pa" + ) + cleaned_df.loc[mask_mols, "val"] = cleaned_df.loc[mask_mols, "val"] * 1_000_000.0 + + # Replace, in column `par`, `energy storage capacity for one unit` and `tank volume of example` with `capacity` + mask_capacity = cleaned_df["par"].isin( + [ + "energy storage capacity for one unit", + "tank volume of example", + ] + ) + cleaned_df.loc[mask_capacity, "par"] = "capacity" + + # Clean est column + cleaned_df["est"] = cleaned_df["est"].apply(clean_est_string) + logger.info("`est` column cleaned.") + + # Drop unnecessary columns + columns_to_drop = ["cat", "priceyear", "ref", "note"] + cleaned_df = cleaned_df.drop(columns=columns_to_drop, errors="ignore") + logger.info("Unnecessary columns dropped.") + + filtered_df = filter_parameters(cleaned_df, input_args.filter_params) + + # Build TechnologyCollection + dea_storage_path = pathlib.Path( + path_cwd, + "src", + "technologydata", + "package_data", + "dea_energy_storage", + ) + output_technologies_path = pathlib.Path( + dea_storage_path, + "technologies.json", + ) + output_sources_path = pathlib.Path( + dea_storage_path, + "sources.json", + ) + + tech_col = build_technology_collection( + filtered_df, + output_sources_path, + store_source=input_args.store_source, + output_schema=input_args.export_schema, + ) + logger.info("TechnologyCollection object instantiated.") + tech_col.to_json(output_technologies_path, output_schema=input_args.export_schema) + logger.info("TechnologyCollection object exported to json.") + + if input_args.export_schema: + # Move schema files if they exist + schema_folder = pathlib.Path( + path_cwd, "src", "technologydata", "package_data", "schemas" + ) + sources_schema = pathlib.Path(dea_storage_path, "sources.schema.json") + technologies_schema = pathlib.Path(dea_storage_path, "technologies.schema.json") + + schema_folder.mkdir(parents=True, exist_ok=True) + + if sources_schema.exists(): + sources_schema.rename(schema_folder / "sources.schema.json") + logger.info(f"Moved {sources_schema} to {schema_folder}") + if technologies_schema.exists(): + technologies_schema.rename(schema_folder / "technologies.schema.json") + logger.info(f"Moved {technologies_schema} to {schema_folder}") diff --git a/src/technologydata/package_data/dea_energy_storage/sources.json b/src/technologydata/package_data/dea_energy_storage/sources.json new file mode 100644 index 00000000..7b84d367 --- /dev/null +++ b/src/technologydata/package_data/dea_energy_storage/sources.json @@ -0,0 +1,12 @@ +{ + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] +} diff --git a/src/technologydata/package_data/dea_energy_storage/technologies.json b/src/technologydata/package_data/dea_energy_storage/technologies.json new file mode 100644 index 00000000..7d197591 --- /dev/null +++ b/src/technologydata/package_data/dea_energy_storage/technologies.json @@ -0,0 +1,17508 @@ +{ + "technologies": [ + { + "name": "caes", + "detailed_technology": "compressed air energy storage", + "case": "control", + "region": "EU", + "year": 2015, + "parameters": { + "charge efficiency": { + "magnitude": 80.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 69.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 40.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2615.964, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 680.576, + "units": "EUR_2020 / kilowatt", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 2.616, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - caverns", + "detailed_technology": "hydrogen storage - caverns", + "case": "control", + "region": "EU", + "year": 2015, + "parameters": { + "charge efficiency": { + "magnitude": 0.99, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 150000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 100.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 3000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - lohc", + "detailed_technology": "hydrogen storage - lohc", + "case": "control", + "region": "EU", + "year": 2015, + "parameters": { + "charge efficiency": { + "magnitude": 0.72, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 7.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 1000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "large hot water tank", + "detailed_technology": "large-scale hot water tanks (steel)", + "case": "control", + "region": "EU", + "year": 2015, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 40.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 8.807, + "units": "EUR_2020 / megawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 3036000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-nicl2 battery", + "detailed_technology": "na-nicl2 battery", + "case": "control", + "region": "EU", + "year": 2015, + "parameters": { + "capacity": { + "magnitude": 4.43, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 15.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 1063000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.638, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-s battery", + "detailed_technology": "nas battery", + "case": "control", + "region": "EU", + "year": 2015, + "parameters": { + "capacity": { + "magnitude": 250.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 15.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 489000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 1.914, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "pumped hydro storage", + "detailed_technology": "pumped hydro storage", + "case": "control", + "region": "EU", + "year": 2015, + "parameters": { + "technical lifetime": { + "magnitude": 50.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 8507.2, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "small scale hot water tank", + "detailed_technology": "small-scale hot water tanks (steel)", + "case": "control", + "region": "EU", + "year": 2015, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 90.0, + "units": "liter", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 51.203, + "units": "EUR_2020 / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 419.862, + "units": "EUR_2020 / kilowatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.614, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "flywheels", + "detailed_technology": "flywheels", + "case": "control", + "region": "EU", + "year": 2018, + "parameters": { + "charge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 0.1, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 797.55, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 174000.0, + "units": "EUR_2020 / megawatt", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - tanks", + "detailed_technology": "pressurized hydrogen gas storage system (compressor & type i tanks @ 200bar)", + "case": "control", + "region": "EU", + "year": 2019, + "parameters": { + "charge efficiency": { + "magnitude": 0.883, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 16.7, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 638.04, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 61000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "caes", + "detailed_technology": "compressed air energy storage", + "case": "control", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 80.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 80.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 40.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2615.964, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 680.576, + "units": "EUR_2020 / kilowatt", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 2.616, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "flywheels", + "detailed_technology": "flywheels", + "case": "control", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 0.1, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 797.55, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 154000.0, + "units": "EUR_2020 / megawatt", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - caverns", + "detailed_technology": "hydrogen storage - caverns", + "case": "control", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 0.99, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 150000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 100.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 3000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - lohc", + "detailed_technology": "hydrogen storage - lohc", + "case": "control", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 0.72, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 7.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 1000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - tanks", + "detailed_technology": "pressurized hydrogen gas storage system (compressor & type i tanks @ 200bar)", + "case": "control", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 0.883, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 16.7, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 638.04, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 61000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "large hot water tank", + "detailed_technology": "large-scale hot water tanks (steel)", + "case": "control", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 40.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 8.807, + "units": "EUR_2020 / megawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 3036000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-nicl2 battery", + "detailed_technology": "na-nicl2 battery", + "case": "control", + "region": "EU", + "year": 2020, + "parameters": { + "capacity": { + "magnitude": 4.15, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 17.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 447000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.638, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-s battery", + "detailed_technology": "nas battery", + "case": "control", + "region": "EU", + "year": 2020, + "parameters": { + "capacity": { + "magnitude": 300.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 19.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 393000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 1.914, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "ptes seasonal", + "detailed_technology": "pit thermal energy storage [ptes]", + "case": "control", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4500.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2500000.0, + "units": "EUR_2020 / gigawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 1062000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "pumped hydro storage", + "detailed_technology": "pumped hydro storage", + "case": "control", + "region": "EU", + "year": 2020, + "parameters": { + "technical lifetime": { + "magnitude": 50.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 8507.2, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "small scale hot water tank", + "detailed_technology": "small-scale hot water tanks (steel)", + "case": "control", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 90.0, + "units": "liter", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 51.203, + "units": "EUR_2020 / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 419.862, + "units": "EUR_2020 / kilowatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.717, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "underground storage of gas", + "detailed_technology": "natural gas storage underground", + "case": "control", + "region": "EU", + "year": 2020, + "parameters": { + "capacity": { + "magnitude": 1100.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.27, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "vanadium redox flow battery", + "detailed_technology": "vanadium redox battery (vrb)", + "case": "control", + "region": "EU", + "year": 2020, + "parameters": { + "capacity": { + "magnitude": 0.5, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 6300.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 630000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "lithium ion battery", + "detailed_technology": "lithium-ion battery (utility-scale)", + "case": "control", + "region": "EU", + "year": 2025, + "parameters": { + "charge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 97.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 15.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 8352.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 288000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "molten salt carnot battery", + "detailed_technology": "carnot battery", + "case": "control", + "region": "EU", + "year": 2025, + "parameters": { + "charge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 95.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 500.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2.0, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 92220.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 2.0, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "ptes seasonal", + "detailed_technology": "pit thermal energy storage [ptes]", + "case": "control", + "region": "EU", + "year": 2025, + "parameters": { + "charge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4500.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2500000.0, + "units": "EUR_2020 / gigawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 1062000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "rock-based carnot battery", + "detailed_technology": "carnot battery", + "case": "control", + "region": "EU", + "year": 2025, + "parameters": { + "charge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 96.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 13048.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "vanadium redox flow battery", + "detailed_technology": "vanadium redox battery (vrb)", + "case": "control", + "region": "EU", + "year": 2025, + "parameters": { + "capacity": { + "magnitude": 0.5, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 3975.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 530000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "caes", + "detailed_technology": "compressed air energy storage", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "charge efficiency": { + "magnitude": 84.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 84.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 40.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2615.964, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 680.576, + "units": "EUR_2020 / kilowatt", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 2.616, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "flywheels", + "detailed_technology": "flywheels", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "charge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 0.1, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 797.55, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 145000.0, + "units": "EUR_2020 / megawatt", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - caverns", + "detailed_technology": "hydrogen storage - caverns", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "charge efficiency": { + "magnitude": 0.99, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 150000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 100.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 2000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - lohc", + "detailed_technology": "hydrogen storage - lohc", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "charge efficiency": { + "magnitude": 0.74, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 7.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 1000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - tanks", + "detailed_technology": "pressurized hydrogen gas storage system (compressor & type i tanks @ 200bar)", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "charge efficiency": { + "magnitude": 0.89, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 16.7, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 531.7, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 48000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "large hot water tank", + "detailed_technology": "large-scale hot water tanks (steel)", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 40.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 8.807, + "units": "EUR_2020 / megawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 3036000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "lithium ion battery", + "detailed_technology": "lithium-ion battery (utility-scale)", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "charge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 97.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3.6, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 8091.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 279000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "molten salt carnot battery", + "detailed_technology": "carnot battery", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "charge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 95.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.5, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 62710.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 1.5, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-nicl2 battery", + "detailed_technology": "na-nicl2 battery", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "capacity": { + "magnitude": 4.15, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 23.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 276000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.638, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-s battery", + "detailed_technology": "nas battery", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "capacity": { + "magnitude": 300.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 24.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 245000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 1.914, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "ptes seasonal", + "detailed_technology": "pit thermal energy storage [ptes]", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "charge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4500.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2500000.0, + "units": "EUR_2020 / gigawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 1062000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "pumped hydro storage", + "detailed_technology": "pumped hydro storage", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "technical lifetime": { + "magnitude": 50.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 8507.2, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "rock-based carnot battery", + "detailed_technology": "carnot battery", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "charge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 96.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 12396.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "small scale hot water tank", + "detailed_technology": "small-scale hot water tanks (steel)", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 90.0, + "units": "liter", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 51.203, + "units": "EUR_2020 / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 419.862, + "units": "EUR_2020 / kilowatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 1.024, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "underground storage of gas", + "detailed_technology": "natural gas storage underground", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "capacity": { + "magnitude": 1100.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.27, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "vanadium redox flow battery", + "detailed_technology": "vanadium redox battery (vrb)", + "case": "control", + "region": "EU", + "year": 2030, + "parameters": { + "capacity": { + "magnitude": 0.6, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 4088.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 545000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "lithium ion battery", + "detailed_technology": "lithium-ion battery (utility-scale)", + "case": "control", + "region": "EU", + "year": 2035, + "parameters": { + "charge efficiency": { + "magnitude": 98.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 97.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4.1, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 8139.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 281000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "molten salt carnot battery", + "detailed_technology": "carnot battery", + "case": "control", + "region": "EU", + "year": 2035, + "parameters": { + "charge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 95.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.5, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 55332.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 1.5, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "ptes seasonal", + "detailed_technology": "pit thermal energy storage [ptes]", + "case": "control", + "region": "EU", + "year": 2035, + "parameters": { + "charge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4500.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2500000.0, + "units": "EUR_2020 / gigawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 1062000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "rock-based carnot battery", + "detailed_technology": "carnot battery", + "case": "control", + "region": "EU", + "year": 2035, + "parameters": { + "charge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 96.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 11776.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "vanadium redox flow battery", + "detailed_technology": "vanadium redox battery (vrb)", + "case": "control", + "region": "EU", + "year": 2035, + "parameters": { + "capacity": { + "magnitude": 0.63, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 3467.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 462000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - caverns", + "detailed_technology": "hydrogen storage - caverns", + "case": "control", + "region": "EU", + "year": 2040, + "parameters": { + "charge efficiency": { + "magnitude": 0.99, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 150000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 100.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 2000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - lohc", + "detailed_technology": "hydrogen storage - lohc", + "case": "control", + "region": "EU", + "year": 2040, + "parameters": { + "charge efficiency": { + "magnitude": 0.75, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 7.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - tanks", + "detailed_technology": "pressurized hydrogen gas storage system (compressor & type i tanks @ 200bar)", + "case": "control", + "region": "EU", + "year": 2040, + "parameters": { + "charge efficiency": { + "magnitude": 0.896, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 16.7, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 531.7, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 29000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "large hot water tank", + "detailed_technology": "large-scale hot water tanks (steel)", + "case": "control", + "region": "EU", + "year": 2040, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 40.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 8.807, + "units": "EUR_2020 / megawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 3036000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "lithium ion battery", + "detailed_technology": "lithium-ion battery (utility-scale)", + "case": "control", + "region": "EU", + "year": 2040, + "parameters": { + "charge efficiency": { + "magnitude": 98.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 97.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4.5, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 8676.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 299000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "molten salt carnot battery", + "detailed_technology": "carnot battery", + "case": "control", + "region": "EU", + "year": 2040, + "parameters": { + "charge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 95.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.0, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 48822.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 1.5, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "ptes seasonal", + "detailed_technology": "pit thermal energy storage [ptes]", + "case": "control", + "region": "EU", + "year": 2040, + "parameters": { + "charge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4500.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2500000.0, + "units": "EUR_2020 / gigawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 983000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "rock-based carnot battery", + "detailed_technology": "carnot battery", + "case": "control", + "region": "EU", + "year": 2040, + "parameters": { + "charge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 96.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 11187.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "small scale hot water tank", + "detailed_technology": "small-scale hot water tanks (steel)", + "case": "control", + "region": "EU", + "year": 2040, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 90.0, + "units": "liter", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 51.203, + "units": "EUR_2020 / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 419.862, + "units": "EUR_2020 / kilowatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 1.229, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "underground storage of gas", + "detailed_technology": "natural gas storage underground", + "case": "control", + "region": "EU", + "year": 2040, + "parameters": { + "capacity": { + "magnitude": 1100.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.27, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "vanadium redox flow battery", + "detailed_technology": "vanadium redox battery (vrb)", + "case": "control", + "region": "EU", + "year": 2040, + "parameters": { + "capacity": { + "magnitude": 0.65, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 35.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2927.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 390000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "caes", + "detailed_technology": "compressed air energy storage", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 85.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 85.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 40.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2615.964, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 680.576, + "units": "EUR_2020 / kilowatt", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 2.616, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "flywheels", + "detailed_technology": "flywheels", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 0.1, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 797.55, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 139000.0, + "units": "EUR_2020 / megawatt", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - caverns", + "detailed_technology": "hydrogen storage - caverns", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 0.99, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 150000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 100.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 1000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - lohc", + "detailed_technology": "hydrogen storage - lohc", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 0.75, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 7.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - tanks", + "detailed_technology": "pressurized hydrogen gas storage system (compressor & type i tanks @ 200bar)", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 0.902, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 16.7, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 425.36, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 22000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "large hot water tank", + "detailed_technology": "large-scale hot water tanks (steel)", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 40.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 8.807, + "units": "EUR_2020 / megawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 3036000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "lithium ion battery", + "detailed_technology": "lithium-ion battery (utility-scale)", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 98.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 97.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4.8, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 9222.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 318000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "molten salt carnot battery", + "detailed_technology": "carnot battery", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 95.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.0, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 38010.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 1.5, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-nicl2 battery", + "detailed_technology": "na-nicl2 battery", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "capacity": { + "magnitude": 4.15, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 23.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 245000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.638, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-s battery", + "detailed_technology": "nas battery", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "capacity": { + "magnitude": 300.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 24.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 213000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 1.914, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "ptes seasonal", + "detailed_technology": "pit thermal energy storage [ptes]", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4500.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2500000.0, + "units": "EUR_2020 / gigawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 903000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "pumped hydro storage", + "detailed_technology": "pumped hydro storage", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "technical lifetime": { + "magnitude": 50.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 8507.2, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "rock-based carnot battery", + "detailed_technology": "carnot battery", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 96.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 10068.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "small scale hot water tank", + "detailed_technology": "small-scale hot water tanks (steel)", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 90.0, + "units": "liter", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 51.203, + "units": "EUR_2020 / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 419.862, + "units": "EUR_2020 / kilowatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 1.229, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "underground storage of gas", + "detailed_technology": "natural gas storage underground", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "capacity": { + "magnitude": 1100.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.27, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "vanadium redox flow battery", + "detailed_technology": "vanadium redox battery (vrb)", + "case": "control", + "region": "EU", + "year": 2050, + "parameters": { + "capacity": { + "magnitude": 0.75, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 40.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2388.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 318000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "caes", + "detailed_technology": "compressed air energy storage", + "case": "lower", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 80.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 69.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 35.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2126.8, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 319000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 2.127, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "flywheels", + "detailed_technology": "flywheels", + "case": "lower", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 0.1, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 797.55, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 149000.0, + "units": "EUR_2020 / megawatt", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - caverns", + "detailed_technology": "hydrogen storage - caverns", + "case": "lower", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 0.98, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 150000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 100.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 3000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - lohc", + "detailed_technology": "hydrogen storage - lohc", + "case": "lower", + "region": "EU", + "year": 2020, + "parameters": { + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 7.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 1000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - tanks", + "detailed_technology": "pressurized hydrogen gas storage system (compressor & type i tanks @ 200bar)", + "case": "lower", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 0.883, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 16.7, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 638.04, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 61000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "large hot water tank", + "detailed_technology": "large-scale hot water tanks (steel)", + "case": "lower", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 1500.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 4.876, + "units": "EUR_2020 / megawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 2211000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-nicl2 battery", + "detailed_technology": "na-nicl2 battery", + "case": "lower", + "region": "EU", + "year": 2020, + "parameters": { + "capacity": { + "magnitude": 3.11, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 9.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.9, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 340000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.425, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-s battery", + "detailed_technology": "nas battery", + "case": "lower", + "region": "EU", + "year": 2020, + "parameters": { + "capacity": { + "magnitude": 30.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 10.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.8, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 266000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.319, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "ptes seasonal", + "detailed_technology": "pit thermal energy storage [ptes]", + "case": "lower", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4500.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2500000.0, + "units": "EUR_2020 / gigawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 903000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "pumped hydro storage", + "detailed_technology": "pumped hydro storage", + "case": "lower", + "region": "EU", + "year": 2020, + "parameters": { + "fixed o&m": { + "magnitude": 6380.4, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "small scale hot water tank", + "detailed_technology": "small-scale hot water tanks (steel)", + "case": "lower", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 50.0, + "units": "liter", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 15.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 25.601, + "units": "EUR_2020 / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 522.268, + "units": "EUR_2020 / kilowatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "molten salt carnot battery", + "detailed_technology": "carnot battery", + "case": "lower", + "region": "EU", + "year": 2025, + "parameters": { + "charge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 95.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 400.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 1.0, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 76125.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 1.0, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "rock-based carnot battery", + "detailed_technology": "carnot battery", + "case": "lower", + "region": "EU", + "year": 2025, + "parameters": { + "charge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 93.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 1000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 5655.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "lithium ion battery", + "detailed_technology": "lithium-ion battery (utility-scale)", + "case": "lower", + "region": "EU", + "year": 2030, + "parameters": { + "charge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 97.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 8.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 5365.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 185000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "vanadium redox flow battery", + "detailed_technology": "vanadium redox battery (vrb)", + "case": "lower", + "region": "EU", + "year": 2030, + "parameters": { + "capacity": { + "magnitude": 0.5, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2320.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 464000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "caes", + "detailed_technology": "compressed air energy storage", + "case": "lower", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 80.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 80.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 3000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 35.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2126.8, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 584.87, + "units": "EUR_2020 / kilowatt", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 2.127, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "flywheels", + "detailed_technology": "flywheels", + "case": "lower", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 0.1, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 797.55, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 138000.0, + "units": "EUR_2020 / megawatt", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - caverns", + "detailed_technology": "hydrogen storage - caverns", + "case": "lower", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 0.99, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 150000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 100.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 2000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - lohc", + "detailed_technology": "hydrogen storage - lohc", + "case": "lower", + "region": "EU", + "year": 2050, + "parameters": { + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 7.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - tanks", + "detailed_technology": "pressurized hydrogen gas storage system (compressor & type i tanks @ 200bar)", + "case": "lower", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 0.897, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 16.7, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 478.53, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 37000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "large hot water tank", + "detailed_technology": "large-scale hot water tanks (steel)", + "case": "lower", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 1500.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 4.876, + "units": "EUR_2020 / megawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 2211000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "lithium ion battery", + "detailed_technology": "lithium-ion battery (utility-scale)", + "case": "lower", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 97.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4.5, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 5755.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 198000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "molten salt carnot battery", + "detailed_technology": "carnot battery", + "case": "lower", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 95.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 400.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.5, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 31377.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.05, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-nicl2 battery", + "detailed_technology": "na-nicl2 battery", + "case": "lower", + "region": "EU", + "year": 2050, + "parameters": { + "capacity": { + "magnitude": 3.11, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 12.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.9, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 191000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.425, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-s battery", + "detailed_technology": "nas battery", + "case": "lower", + "region": "EU", + "year": 2050, + "parameters": { + "capacity": { + "magnitude": 30.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 14.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.8, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 138000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.319, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "ptes seasonal", + "detailed_technology": "pit thermal energy storage [ptes]", + "case": "lower", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4500.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2500000.0, + "units": "EUR_2020 / gigawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 744000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "pumped hydro storage", + "detailed_technology": "pumped hydro storage", + "case": "lower", + "region": "EU", + "year": 2050, + "parameters": { + "fixed o&m": { + "magnitude": 6380.4, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "rock-based carnot battery", + "detailed_technology": "carnot battery", + "case": "lower", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 93.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 1000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 4364.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "small scale hot water tank", + "detailed_technology": "small-scale hot water tanks (steel)", + "case": "lower", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 50.0, + "units": "liter", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 15.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 25.601, + "units": "EUR_2020 / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 522.268, + "units": "EUR_2020 / kilowatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "vanadium redox flow battery", + "detailed_technology": "vanadium redox battery (vrb)", + "case": "lower", + "region": "EU", + "year": 2050, + "parameters": { + "capacity": { + "magnitude": 0.7, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 743.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 186000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "caes", + "detailed_technology": "compressed air energy storage", + "case": "upper", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 80.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 69.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 45.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 4253.6, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 1276000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 3.19, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "flywheels", + "detailed_technology": "flywheels", + "case": "upper", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 99.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 99.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 0.1, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 797.55, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 160000.0, + "units": "EUR_2020 / megawatt", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - caverns", + "detailed_technology": "hydrogen storage - caverns", + "case": "upper", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 0.99, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 150000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 100.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 3000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - lohc", + "detailed_technology": "hydrogen storage - lohc", + "case": "upper", + "region": "EU", + "year": 2020, + "parameters": { + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 7.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 1000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - tanks", + "detailed_technology": "pressurized hydrogen gas storage system (compressor & type i tanks @ 200bar)", + "case": "upper", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 0.883, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 16.7, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 638.04, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 61000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "large hot water tank", + "detailed_technology": "large-scale hot water tanks (steel)", + "case": "upper", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 5000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 50.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 34.135, + "units": "EUR_2020 / megawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 8177000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-nicl2 battery", + "detailed_technology": "na-nicl2 battery", + "case": "upper", + "region": "EU", + "year": 2020, + "parameters": { + "capacity": { + "magnitude": 5.19, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 564000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 2.233, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-s battery", + "detailed_technology": "nas battery", + "case": "upper", + "region": "EU", + "year": 2020, + "parameters": { + "capacity": { + "magnitude": 3000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 28.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 7.2, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 776000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 5.955, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "ptes seasonal", + "detailed_technology": "pit thermal energy storage [ptes]", + "case": "upper", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4500.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 40.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2500000.0, + "units": "EUR_2020 / gigawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 1222000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "pumped hydro storage", + "detailed_technology": "pumped hydro storage", + "case": "upper", + "region": "EU", + "year": 2020, + "parameters": { + "fixed o&m": { + "magnitude": 12760.8, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "small scale hot water tank", + "detailed_technology": "small-scale hot water tanks (steel)", + "case": "upper", + "region": "EU", + "year": 2020, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 300.0, + "units": "liter", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 50.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 81.924, + "units": "EUR_2020 / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 133.127, + "units": "EUR_2020 / kilowatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.717, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "molten salt carnot battery", + "detailed_technology": "carnot battery", + "case": "upper", + "region": "EU", + "year": 2025, + "parameters": { + "charge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 95.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 500.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 3.0, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 108750.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 3.0, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "rock-based carnot battery", + "detailed_technology": "carnot battery", + "case": "upper", + "region": "EU", + "year": 2025, + "parameters": { + "charge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 97.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 5000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 18096.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "lithium ion battery", + "detailed_technology": "lithium-ion battery (utility-scale)", + "case": "upper", + "region": "EU", + "year": 2030, + "parameters": { + "charge efficiency": { + "magnitude": 98.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4.1, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 10254.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 354000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "vanadium redox flow battery", + "detailed_technology": "vanadium redox battery (vrb)", + "case": "upper", + "region": "EU", + "year": 2030, + "parameters": { + "capacity": { + "magnitude": 0.7, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 35.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 6557.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 656000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "caes", + "detailed_technology": "compressed air energy storage", + "case": "upper", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 85.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 85.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 10000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 45.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 4253.6, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 680.576, + "units": "EUR_2020 / kilowatt", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 3.19, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "flywheels", + "detailed_technology": "flywheels", + "case": "upper", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 99.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 99.5, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 0.15, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 797.55, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 149000.0, + "units": "EUR_2020 / megawatt", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - caverns", + "detailed_technology": "hydrogen storage - caverns", + "case": "upper", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 0.99, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 150000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 100.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 1000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - lohc", + "detailed_technology": "hydrogen storage - lohc", + "case": "upper", + "region": "EU", + "year": 2050, + "parameters": { + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 7.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 20.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "hydrogen storage - tanks", + "detailed_technology": "pressurized hydrogen gas storage system (compressor & type i tanks @ 200bar)", + "case": "upper", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 0.902, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 16.7, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 319.02, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 22000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "large hot water tank", + "detailed_technology": "large-scale hot water tanks (steel)", + "case": "upper", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 5000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 50.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 34.135, + "units": "EUR_2020 / megawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 8177000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "lithium ion battery", + "detailed_technology": "lithium-ion battery (utility-scale)", + "case": "upper", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 5.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 30.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 11258.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 388000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "molten salt carnot battery", + "detailed_technology": "carnot battery", + "case": "upper", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 98.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 95.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2.0, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 51521.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 2.5, + "units": "percent / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-nicl2 battery", + "detailed_technology": "na-nicl2 battery", + "case": "upper", + "region": "EU", + "year": 2050, + "parameters": { + "capacity": { + "magnitude": 5.19, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 33.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 319000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 2.233, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "na-s battery", + "detailed_technology": "nas battery", + "case": "upper", + "region": "EU", + "year": 2050, + "parameters": { + "capacity": { + "magnitude": 3000.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 36.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 7.2, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 415000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 5.955, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "ptes seasonal", + "detailed_technology": "pit thermal energy storage [ptes]", + "case": "upper", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 1.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 4500.0, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 50.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 2500000.0, + "units": "EUR_2020 / gigawatt_hour / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 1062000.0, + "units": "EUR_2020 / gigawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "pumped hydro storage", + "detailed_technology": "pumped hydro storage", + "case": "upper", + "region": "EU", + "year": 2050, + "parameters": { + "fixed o&m": { + "magnitude": 12760.8, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "rock-based carnot battery", + "detailed_technology": "carnot battery", + "case": "upper", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 99.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 97.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 5000.0, + "units": "meter ** 3", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 25.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 13964.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "small scale hot water tank", + "detailed_technology": "small-scale hot water tanks (steel)", + "case": "upper", + "region": "EU", + "year": 2050, + "parameters": { + "charge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "discharge efficiency": { + "magnitude": 100.0, + "units": "percent", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "capacity": { + "magnitude": 300.0, + "units": "liter", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 50.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 81.924, + "units": "EUR_2020 / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 133.127, + "units": "EUR_2020 / kilowatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 1.229, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + }, + { + "name": "vanadium redox flow battery", + "detailed_technology": "vanadium redox battery (vrb)", + "case": "upper", + "region": "EU", + "year": 2050, + "parameters": { + "capacity": { + "magnitude": 0.8, + "units": "megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "technical lifetime": { + "magnitude": 50.0, + "units": "year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "fixed o&m": { + "magnitude": 3875.0, + "units": "EUR_2020 / megawatt / year", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "specific investment": { + "magnitude": 388000.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + }, + "variable o&m": { + "magnitude": 0.0, + "units": "EUR_2020 / megawatt_hour", + "carrier": null, + "heating_value": null, + "provenance": "Parsed from Excel file", + "note": null, + "sources": { + "sources": [ + { + "title": "Technology Data for Energy storage (May 2025)", + "authors": "Danish Energy Agency", + "url": "https://ens.dk/media/6589/download", + "url_archive": "https://web.archive.org/web/20251008092400/https://ens.dk/media/6589/download", + "url_date": "2025-10-08 09:24:00", + "url_date_archive": "2025-10-08 09:24:00" + } + ] + } + } + } + } + ] +} diff --git a/src/technologydata/package_data/raw/Technology_datasheet_for_energy_storage.xlsx b/src/technologydata/package_data/raw/Technology_datasheet_for_energy_storage.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..dcdcff61d6b887ecad9e17aa530e9fa97c068064 GIT binary patch literal 329612 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%0ASwI4?*uUsAu? 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%0Ar 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 `jJhaap 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%0Dn1zYI>@u4N<-I17D?oj<#j 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 literal 0 HcmV?d00001 diff --git a/src/technologydata/technology.py b/src/technologydata/technology.py index 6f94a5cb..eafb5811 100644 --- a/src/technologydata/technology.py +++ b/src/technologydata/technology.py @@ -2,9 +2,6 @@ # # SPDX-License-Identifier: MIT - -# TODO replaceholder - """Technology class for representing a technology with parameters and transformation methods.""" from typing import Annotated, Any, Self diff --git a/src/technologydata/utils/commons.py b/src/technologydata/utils/commons.py index 9e91398f..64b829f9 100644 --- a/src/technologydata/utils/commons.py +++ b/src/technologydata/utils/commons.py @@ -10,9 +10,14 @@ from typing import Any import dateutil +import pandas as pd + +from technologydata.utils.units import CURRENCY_UNIT_PATTERN, get_iso3_to_currency_codes logger = logging.getLogger(__name__) +all_currency_codes = set(get_iso3_to_currency_codes().values()) + class DateFormatEnum(str, enum.Enum): """ @@ -267,3 +272,39 @@ def replace_special_characters(input_string: str) -> str: # Lower case the string replaced = replaced.casefold() return replaced + + @staticmethod + def update_unit_with_currency_year(unit: str, currency_year: str) -> str: + """ + Update unit string to include currency year for currency-based units. + + Parameters + ---------- + unit : str + A unit string + currency_year: str + A currency year string + + Returns + ------- + str + Updated unit + + """ + # Check if the units contain a currency-like string, defined as "{3-letter currency code}_{year as YYYY}" + matches = CURRENCY_UNIT_PATTERN.findall(unit) + + # Check if unit is a string, contains the currency, and currency_year is not null + if isinstance(unit, str) and pd.notna(currency_year): + for currency_code in all_currency_codes: + if ( + pd.notna(currency_code) + and currency_code in unit + and len(matches) == 0 + ): + # Replace currency with currency_currency_year + unit = unit.replace( + currency_code, f"{currency_code}_{currency_year}" + ) + + return unit diff --git a/test/test_commons.py b/test/test_commons.py index c242f863..1c302f56 100644 --- a/test/test_commons.py +++ b/test/test_commons.py @@ -151,3 +151,20 @@ def test_search_file_extension_in_url( technologydata.FileExtensionEnum.search_file_extension_in_url(input_string) == expected_string ) + + @pytest.mark.parametrize( + "input_unit, input_year, expected_string", + [ + ("EUR/kWh", "2020", "EUR_2020/kWh"), + ("USD/kWh", "2020", "USD_2020/kWh"), + ("USD_2023/kWh", "2020", "USD_2023/kWh"), + ], + ) # type: ignore + def test_update_unit_with_currency_year( + self, input_unit: str, input_year: str, expected_string: str + ) -> None: + """Check if update_unit_with_currency_year works as expected.""" + result = technologydata.Commons.update_unit_with_currency_year( + input_unit, input_year + ) + assert result == expected_string diff --git a/test/test_dea_energy_storage.py b/test/test_dea_energy_storage.py new file mode 100644 index 00000000..7a74e1ad --- /dev/null +++ b/test/test_dea_energy_storage.py @@ -0,0 +1,230 @@ +# SPDX-FileCopyrightText: The technology-data authors +# +# SPDX-License-Identifier: MIT + +"""Test the functions of the DEA energy storage parser.""" + +import pathlib +import typing + +import pandas +import pytest + +from technologydata.package_data.dea_energy_storage.dea_energy_storage import ( + build_technology_collection, + clean_est_string, + clean_parameter_string, + clean_technology_string, + drop_invalid_rows, + extract_year, + filter_parameters, + format_val_number, + standardize_units, +) + + +class TestDEAEnergyStorage: + """Test suite for the functions of the DEA energy storage parser.""" + + @pytest.mark.parametrize( + "input_string, expected_string", + [ + ("- Discharge efficiency [%]", "discharge efficiency"), + ("Construction time [years]", "construction time"), + ("- Another example [with brackets]", "another example"), + ("No brackets or hyphen here", "no brackets or hyphen here"), + ("- Another example [with brackets)", "another example"), + ], + ) # type: ignore + def test_clean_parameter_string( + self, input_string: str, expected_string: str + ) -> None: + """Check if the clean_parameter_string works as expected.""" + assert clean_parameter_string(input_string) == expected_string + + def test_drop_invalid_rows(self) -> None: + """Check if the drop_invalid_rows works as expected.""" + input_dataframe = pandas.DataFrame( + { + "Technology": ["AI", "", "ML", "new_tech", "Tech", "Tech_1", "Tech_2"], + "par": ["p1", "p2", "", "p4", None, "p5", "p6"], + "val": ["<1", " ", None, "abc", "456", "456,1", "1,1x10^3"], + "year": [ + "almost 2020", + "2021", + "2020", + "2022", + "", + "nearly 2020", + "2024", + ], + } + ) + expected_dataframe = pandas.DataFrame( + { + "Technology": ["Tech_1", "Tech_2"], + "par": ["p5", "p6"], + "val": ["456,1", "1,1x10^3"], + "year": ["nearly 2020", "2024"], + } + ) + output_dataframe = drop_invalid_rows(input_dataframe).reset_index(drop=True) + comparison_df = output_dataframe.compare(expected_dataframe) + assert comparison_df.empty + + @pytest.mark.parametrize( + "input_string, expected_string", + [ + ("192 string", "string"), + (" STRING 123 ", "string 123"), + (" string 123a ", "string 123a"), + (" 123b string ", "string"), + (" 123c ", ""), + ], + ) # type: ignore + def test_clean_technology_string( + self, input_string: str, expected_string: str + ) -> None: + """Check if clean_technology_string works as expected.""" + result = clean_technology_string(input_string) + assert result == expected_string + assert isinstance(result, str) + + @pytest.mark.parametrize( + "input_year, expected_year", + [ + ("some 1999", 1999), + ("maybe 1", 1), + ("1", 1), + ], + ) # type: ignore + def test_extract_year(self, input_year: str, expected_year: int) -> None: + """Check if extract_year works as expected.""" + result = extract_year(input_year) + assert result == expected_year + assert isinstance(result, int) + + @pytest.mark.parametrize( + "input_number, expected_number", + [ + ("1,1", 1.1), + ("1", 1.0), + ("1.31Γ—10-23", 1.31e-23), + ], + ) # type: ignore + def test_format_val_number( + self, input_number: str, expected_number: int | None | typing.Any + ) -> None: + """Check if format_val_number works as expected, including exception handling.""" + result = format_val_number(input_number, 2) + assert isinstance(result, float) + assert result == expected_number + + @pytest.mark.parametrize( + "input_string, expected_string", + [ + ("ctrl", "control"), + ("Upper", "upper"), + (" Yeah ", "yeah"), + ], + ) # type: ignore + def test_clean_est_string(self, input_string: str, expected_string: str) -> None: + """Check if clean_est_string works as expected.""" + result = clean_est_string(input_string) + assert isinstance(result, str) + assert result == expected_string + + def test_standardize_units(self) -> None: + """Check if standardize_units works as expected.""" + input_dataframe = pandas.DataFrame( + { + "par": [ + "energy storage capacity for one unit", + "typical temperature difference in storage", + "fixed o&m", + "lifetime in total number of cycles", + "cycle life", + "p1", + "p2", + "p3", + "p4", + "p5", + ], + "unit": [ + "", + "", + "", + None, + None, + "unit*pct./period", + "unit/⁰C", + "pct./30sec", + "m3", + "EUR_2020/tank/year", + ], + } + ) + expected_dataframe = pandas.DataFrame( + { + "par": [ + "energy storage capacity for one unit", + "typical temperature difference in storage", + "fixed o&m", + "lifetime in total number of cycles", + "cycle life", + "p1", + "p2", + "p3", + "p4", + "p5", + ], + "unit": [ + "MWh", + "K", + "percent/year", + "cycles", + "cycles", + "unit*percent", + "unit/C", + "percent", + "meter**3", + "EUR_2020/year", + ], + } + ) + input_dataframe[["par", "unit"]] = ( + input_dataframe[["par", "unit"]] + .apply(standardize_units, axis=1) + .reset_index(drop=True) + ) + comparison_df = input_dataframe.compare(expected_dataframe) + assert comparison_df.empty + + def test_filter_parameters_true_false(self) -> None: + """Check if filter_parameters works as expected.""" + dataframe = pandas.DataFrame( + {"par": ["technical lifetime", "other"], "Technology": ["A", "B"]} + ) + filtered = filter_parameters(dataframe, True) + assert all(filtered["par"] == "technical lifetime") + filtered2 = filter_parameters(dataframe, False) + assert len(filtered2) == 2 + + @pytest.mark.webarchive # type: ignore + def test_build_technology_collection(self, tmp_path: pathlib.Path) -> None: + """Check if build_technology_collection works as expected.""" + dataframe = pandas.DataFrame( + { + "est": ["base"], + "year": [2020], + "ws": ["Tech1"], + "Technology": ["Solar PV"], + "par": ["specific_investment"], + "val": [1000], + "unit": ["EUR_2020/kW"], + } + ) + sources_path = pathlib.Path(tmp_path, "sources.json") + tech_collection = build_technology_collection(dataframe, sources_path) + assert len(tech_collection.technologies) == 1 + assert "specific_investment" in tech_collection.technologies[0].parameters From 5d9c3de39d63c4a3bc3a5b314879a44e1a43f52d Mon Sep 17 00:00:00 2001 From: Fabrizio Finozzi <167071962+finozzifa@users.noreply.github.com> Date: Mon, 8 Dec 2025 16:57:12 +0100 Subject: [PATCH 30/30] Update pydeflate dependency (#79) --- .gitignore | 3 + pyproject.toml | 2 +- src/technologydata/utils/units.py | 2 + uv.lock | 2749 +++++++++++++++-------------- 4 files changed, 1430 insertions(+), 1326 deletions(-) diff --git a/.gitignore b/.gitignore index 63839d78..ff3150b2 100644 --- a/.gitignore +++ b/.gitignore @@ -75,3 +75,6 @@ coverage.xml # folder for misc developments dev/ + +# pydeflate cache +pydeflate_data/ diff --git a/pyproject.toml b/pyproject.toml index 7e168f7d..0303bd82 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,7 @@ dependencies = [ "pandas>=2.2.3", "pint>=0.24.4", "pydantic>=2.11.7", - "pydeflate>=2.1.3", + "pydeflate>=2.3.3", "requests>=2.32.3", "savepagenow>=1.3.0", "scipy>=1.16.1", diff --git a/src/technologydata/utils/units.py b/src/technologydata/utils/units.py index 548d1ef9..47ce8131 100644 --- a/src/technologydata/utils/units.py +++ b/src/technologydata/utils/units.py @@ -20,6 +20,8 @@ logger = logging.getLogger(__name__) +pydeflate.set_pydeflate_path("./pydeflate_data") + CURRENCY_UNIT_PATTERN = re.compile(r"\b(?P[A-Z]{3})_(?P\d{4})\b") # Set up cache directory and file for currency codes diff --git a/uv.lock b/uv.lock index 6f09e707..2a4a3923 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 1 +revision = 2 requires-python = ">=3.12" resolution-markers = [ "python_full_version >= '3.14' and platform_python_implementation != 'PyPy'", @@ -11,59 +11,59 @@ resolution-markers = [ name = "annotated-types" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081 } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload_time = "2024-05-20T21:33:25.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload_time = "2024-05-20T21:33:24.1Z" }, ] [[package]] name = "appnope" version = "0.1.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170 } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload_time = "2024-02-06T09:43:11.258Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload_time = "2024-02-06T09:43:09.663Z" }, ] [[package]] name = "asttokens" version = "3.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978 } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978, upload_time = "2024-11-30T04:30:14.439Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload_time = "2024-11-30T04:30:10.946Z" }, ] [[package]] name = "attrs" version = "25.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload_time = "2025-03-13T11:10:22.779Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload_time = "2025-03-13T11:10:21.14Z" }, ] [[package]] name = "babel" version = "2.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload_time = "2025-02-01T15:17:41.026Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload_time = "2025-02-01T15:17:37.39Z" }, ] [[package]] name = "backrefs" version = "5.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/eb/a7/312f673df6a79003279e1f55619abbe7daebbb87c17c976ddc0345c04c7b/backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59", size = 5765857 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/a7/312f673df6a79003279e1f55619abbe7daebbb87c17c976ddc0345c04c7b/backrefs-5.9.tar.gz", hash = "sha256:808548cb708d66b82ee231f962cb36faaf4f2baab032f2fbb783e9c2fdddaa59", size = 5765857, upload_time = "2025-06-22T19:34:13.97Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/4d/798dc1f30468134906575156c089c492cf79b5a5fd373f07fe26c4d046bf/backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f", size = 380267 }, - { url = "https://files.pythonhosted.org/packages/55/07/f0b3375bf0d06014e9787797e6b7cc02b38ac9ff9726ccfe834d94e9991e/backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf", size = 392072 }, - { url = "https://files.pythonhosted.org/packages/9d/12/4f345407259dd60a0997107758ba3f221cf89a9b5a0f8ed5b961aef97253/backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa", size = 397947 }, - { url = "https://files.pythonhosted.org/packages/10/bf/fa31834dc27a7f05e5290eae47c82690edc3a7b37d58f7fb35a1bdbf355b/backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b", size = 399843 }, - { url = "https://files.pythonhosted.org/packages/fc/24/b29af34b2c9c41645a9f4ff117bae860291780d73880f449e0b5d948c070/backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9", size = 411762 }, - { url = "https://files.pythonhosted.org/packages/41/ff/392bff89415399a979be4a65357a41d92729ae8580a66073d8ec8d810f98/backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60", size = 380265 }, + { url = "https://files.pythonhosted.org/packages/19/4d/798dc1f30468134906575156c089c492cf79b5a5fd373f07fe26c4d046bf/backrefs-5.9-py310-none-any.whl", hash = "sha256:db8e8ba0e9de81fcd635f440deab5ae5f2591b54ac1ebe0550a2ca063488cd9f", size = 380267, upload_time = "2025-06-22T19:34:05.252Z" }, + { url = "https://files.pythonhosted.org/packages/55/07/f0b3375bf0d06014e9787797e6b7cc02b38ac9ff9726ccfe834d94e9991e/backrefs-5.9-py311-none-any.whl", hash = "sha256:6907635edebbe9b2dc3de3a2befff44d74f30a4562adbb8b36f21252ea19c5cf", size = 392072, upload_time = "2025-06-22T19:34:06.743Z" }, + { url = "https://files.pythonhosted.org/packages/9d/12/4f345407259dd60a0997107758ba3f221cf89a9b5a0f8ed5b961aef97253/backrefs-5.9-py312-none-any.whl", hash = "sha256:7fdf9771f63e6028d7fee7e0c497c81abda597ea45d6b8f89e8ad76994f5befa", size = 397947, upload_time = "2025-06-22T19:34:08.172Z" }, + { url = "https://files.pythonhosted.org/packages/10/bf/fa31834dc27a7f05e5290eae47c82690edc3a7b37d58f7fb35a1bdbf355b/backrefs-5.9-py313-none-any.whl", hash = "sha256:cc37b19fa219e93ff825ed1fed8879e47b4d89aa7a1884860e2db64ccd7c676b", size = 399843, upload_time = "2025-06-22T19:34:09.68Z" }, + { url = "https://files.pythonhosted.org/packages/fc/24/b29af34b2c9c41645a9f4ff117bae860291780d73880f449e0b5d948c070/backrefs-5.9-py314-none-any.whl", hash = "sha256:df5e169836cc8acb5e440ebae9aad4bf9d15e226d3bad049cf3f6a5c20cc8dc9", size = 411762, upload_time = "2025-06-22T19:34:11.037Z" }, + { url = "https://files.pythonhosted.org/packages/41/ff/392bff89415399a979be4a65357a41d92729ae8580a66073d8ec8d810f98/backrefs-5.9-py39-none-any.whl", hash = "sha256:f48ee18f6252b8f5777a22a00a09a85de0ca931658f1dd96d4406a34f3748c60", size = 380265, upload_time = "2025-06-22T19:34:12.405Z" }, ] [[package]] @@ -74,9 +74,9 @@ dependencies = [ { name = "soupsieve" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/85/2e/3e5079847e653b1f6dc647aa24549d68c6addb4c595cc0d902d1b19308ad/beautifulsoup4-4.13.5.tar.gz", hash = "sha256:5e70131382930e7c3de33450a2f54a63d5e4b19386eab43a5b34d594268f3695", size = 622954 } +sdist = { url = "https://files.pythonhosted.org/packages/85/2e/3e5079847e653b1f6dc647aa24549d68c6addb4c595cc0d902d1b19308ad/beautifulsoup4-4.13.5.tar.gz", hash = "sha256:5e70131382930e7c3de33450a2f54a63d5e4b19386eab43a5b34d594268f3695", size = 622954, upload_time = "2025-08-24T14:06:13.168Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/eb/f4151e0c7377a6e08a38108609ba5cede57986802757848688aeedd1b9e8/beautifulsoup4-4.13.5-py3-none-any.whl", hash = "sha256:642085eaa22233aceadff9c69651bc51e8bf3f874fb6d7104ece2beb24b47c4a", size = 105113 }, + { url = "https://files.pythonhosted.org/packages/04/eb/f4151e0c7377a6e08a38108609ba5cede57986802757848688aeedd1b9e8/beautifulsoup4-4.13.5-py3-none-any.whl", hash = "sha256:642085eaa22233aceadff9c69651bc51e8bf3f874fb6d7104ece2beb24b47c4a", size = 105113, upload_time = "2025-08-24T14:06:14.884Z" }, ] [[package]] @@ -86,9 +86,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "chardet" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a7/fe/7ebfec74d49f97fc55cd38240c7a7d08134002b1e14be8c3897c0dd5e49b/binaryornot-0.4.4.tar.gz", hash = "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", size = 371054 } +sdist = { url = "https://files.pythonhosted.org/packages/a7/fe/7ebfec74d49f97fc55cd38240c7a7d08134002b1e14be8c3897c0dd5e49b/binaryornot-0.4.4.tar.gz", hash = "sha256:359501dfc9d40632edc9fac890e19542db1a287bbcfa58175b66658392018061", size = 371054, upload_time = "2017-08-03T15:55:25.08Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/24/7e/f7b6f453e6481d1e233540262ccbfcf89adcd43606f44a028d7f5fae5eb2/binaryornot-0.4.4-py2.py3-none-any.whl", hash = "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4", size = 9006 }, + { url = "https://files.pythonhosted.org/packages/24/7e/f7b6f453e6481d1e233540262ccbfcf89adcd43606f44a028d7f5fae5eb2/binaryornot-0.4.4-py2.py3-none-any.whl", hash = "sha256:b8b71173c917bddcd2c16070412e369c3ed7f0528926f70cac18a6c97fd563e4", size = 9006, upload_time = "2017-08-03T15:55:31.23Z" }, ] [[package]] @@ -98,9 +98,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083 } +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083, upload_time = "2024-10-29T18:30:40.477Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406 }, + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406, upload_time = "2024-10-29T18:30:38.186Z" }, ] [package.optional-dependencies] @@ -112,9 +112,9 @@ css = [ name = "boolean-py" version = "5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c4/cf/85379f13b76f3a69bca86b60237978af17d6aa0bc5998978c3b8cf05abb2/boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95", size = 37047 } +sdist = { url = "https://files.pythonhosted.org/packages/c4/cf/85379f13b76f3a69bca86b60237978af17d6aa0bc5998978c3b8cf05abb2/boolean_py-5.0.tar.gz", hash = "sha256:60cbc4bad079753721d32649545505362c754e121570ada4658b852a3a318d95", size = 37047, upload_time = "2025-04-03T10:39:49.734Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/ca/78d423b324b8d77900030fa59c4aa9054261ef0925631cd2501dd015b7b7/boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9", size = 26577 }, + { url = "https://files.pythonhosted.org/packages/e5/ca/78d423b324b8d77900030fa59c4aa9054261ef0925631cd2501dd015b7b7/boolean_py-5.0-py3-none-any.whl", hash = "sha256:ef28a70bd43115208441b53a045d1549e2f0ec6e3d08a9d142cbc41c1938e8d9", size = 26577, upload_time = "2025-04-03T10:39:48.449Z" }, ] [[package]] @@ -124,9 +124,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096 } +sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096, upload_time = "2024-06-18T10:56:06.741Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611 }, + { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611, upload_time = "2024-06-18T10:55:59.489Z" }, ] [[package]] @@ -140,18 +140,31 @@ dependencies = [ { name = "pillow" }, { name = "tinycss2" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/b9/5106168bd43d7cd8b7cc2a2ee465b385f14b63f4c092bb89eee2d48c8e67/cairosvg-2.8.2.tar.gz", hash = "sha256:07cbf4e86317b27a92318a4cac2a4bb37a5e9c1b8a27355d06874b22f85bef9f", size = 8398590 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/b9/5106168bd43d7cd8b7cc2a2ee465b385f14b63f4c092bb89eee2d48c8e67/cairosvg-2.8.2.tar.gz", hash = "sha256:07cbf4e86317b27a92318a4cac2a4bb37a5e9c1b8a27355d06874b22f85bef9f", size = 8398590, upload_time = "2025-05-15T06:56:32.653Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/67/48/816bd4aaae93dbf9e408c58598bc32f4a8c65f4b86ab560864cb3ee60adb/cairosvg-2.8.2-py3-none-any.whl", hash = "sha256:eab46dad4674f33267a671dce39b64be245911c901c70d65d2b7b0821e852bf5", size = 45773 }, + { url = "https://files.pythonhosted.org/packages/67/48/816bd4aaae93dbf9e408c58598bc32f4a8c65f4b86ab560864cb3ee60adb/cairosvg-2.8.2-py3-none-any.whl", hash = "sha256:eab46dad4674f33267a671dce39b64be245911c901c70d65d2b7b0821e852bf5", size = 45773, upload_time = "2025-05-15T06:56:28.552Z" }, +] + +[[package]] +name = "cattrs" +version = "25.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e3/42/988b3a667967e9d2d32346e7ed7edee540ef1cee829b53ef80aa8d4a0222/cattrs-25.2.0.tar.gz", hash = "sha256:f46c918e955db0177be6aa559068390f71988e877c603ae2e56c71827165cc06", size = 506531, upload_time = "2025-08-31T20:41:59.301Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/a5/b3771ac30b590026b9d721187110194ade05bfbea3d98b423a9cafd80959/cattrs-25.2.0-py3-none-any.whl", hash = "sha256:539d7eedee7d2f0706e4e109182ad096d608ba84633c32c75ef3458f1d11e8f1", size = 70040, upload_time = "2025-08-31T20:41:57.543Z" }, ] [[package]] name = "certifi" version = "2025.8.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/dc/67/960ebe6bf230a96cda2e0abcf73af550ec4f090005363542f0765df162e0/certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", size = 162386 } +sdist = { url = "https://files.pythonhosted.org/packages/dc/67/960ebe6bf230a96cda2e0abcf73af550ec4f090005363542f0765df162e0/certifi-2025.8.3.tar.gz", hash = "sha256:e564105f78ded564e3ae7c923924435e1daa7463faeab5bb932bc53ffae63407", size = 162386, upload_time = "2025-08-03T03:07:47.08Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c948d2ad169c1c8cdbae65bc450d6cd753d124b17c8cd32/certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5", size = 161216 }, + { url = "https://files.pythonhosted.org/packages/e5/48/1549795ba7742c948d2ad169c1c8cdbae65bc450d6cd753d124b17c8cd32/certifi-2025.8.3-py3-none-any.whl", hash = "sha256:f6c12493cfb1b06ba2ff328595af9350c65d6644968e5d3a2ffd78699af217a5", size = 161216, upload_time = "2025-08-03T03:07:45.777Z" }, ] [[package]] @@ -161,114 +174,114 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pycparser", marker = "implementation_name != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271 }, - { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048 }, - { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529 }, - { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097 }, - { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983 }, - { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519 }, - { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572 }, - { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963 }, - { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361 }, - { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932 }, - { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557 }, - { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762 }, - { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230 }, - { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043 }, - { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446 }, - { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101 }, - { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948 }, - { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422 }, - { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499 }, - { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928 }, - { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302 }, - { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909 }, - { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402 }, - { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780 }, - { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320 }, - { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487 }, - { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049 }, - { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793 }, - { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300 }, - { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244 }, - { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828 }, - { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926 }, - { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328 }, - { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650 }, - { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687 }, - { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773 }, - { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013 }, - { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593 }, - { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354 }, - { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480 }, - { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584 }, - { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443 }, - { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437 }, - { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487 }, - { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726 }, - { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195 }, +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload_time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload_time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload_time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload_time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload_time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload_time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload_time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload_time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload_time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload_time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload_time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload_time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload_time = "2025-09-08T23:22:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload_time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload_time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload_time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload_time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload_time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload_time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload_time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload_time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload_time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload_time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload_time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload_time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload_time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload_time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload_time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload_time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload_time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload_time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload_time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload_time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload_time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload_time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload_time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload_time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload_time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload_time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload_time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload_time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload_time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload_time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload_time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload_time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload_time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload_time = "2025-09-08T23:23:43.004Z" }, ] [[package]] name = "cfgv" version = "3.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114 } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload_time = "2023-08-12T20:38:17.776Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload_time = "2023-08-12T20:38:16.269Z" }, ] [[package]] name = "chardet" version = "5.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618 } +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/f7b6ab21ec75897ed80c17d79b15951a719226b9fababf1e40ea74d69079/chardet-5.2.0.tar.gz", hash = "sha256:1b3b6ff479a8c414bc3fa2c0852995695c4a026dcd6d0633b2dd092ca39c1cf7", size = 2069618, upload_time = "2023-08-01T19:23:02.662Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385 }, + { url = "https://files.pythonhosted.org/packages/38/6f/f5fbc992a329ee4e0f288c1fe0e2ad9485ed064cac731ed2fe47dcc38cbf/chardet-5.2.0-py3-none-any.whl", hash = "sha256:e1cf59446890a00105fe7b7912492ea04b6e6f06d4b742b2c788469e34c82970", size = 199385, upload_time = "2023-08-01T19:23:00.661Z" }, ] [[package]] name = "charset-normalizer" version = "3.4.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/83/2d/5fd176ceb9b2fc619e63405525573493ca23441330fcdaee6bef9460e924/charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14", size = 122371 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/5e/14c94999e418d9b87682734589404a25854d5f5d0408df68bc15b6ff54bb/charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1", size = 205655 }, - { url = "https://files.pythonhosted.org/packages/7d/a8/c6ec5d389672521f644505a257f50544c074cf5fc292d5390331cd6fc9c3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884", size = 146223 }, - { url = "https://files.pythonhosted.org/packages/fc/eb/a2ffb08547f4e1e5415fb69eb7db25932c52a52bed371429648db4d84fb1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018", size = 159366 }, - { url = "https://files.pythonhosted.org/packages/82/10/0fd19f20c624b278dddaf83b8464dcddc2456cb4b02bb902a6da126b87a1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392", size = 157104 }, - { url = "https://files.pythonhosted.org/packages/16/ab/0233c3231af734f5dfcf0844aa9582d5a1466c985bbed6cedab85af9bfe3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f", size = 151830 }, - { url = "https://files.pythonhosted.org/packages/ae/02/e29e22b4e02839a0e4a06557b1999d0a47db3567e82989b5bb21f3fbbd9f/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154", size = 148854 }, - { url = "https://files.pythonhosted.org/packages/05/6b/e2539a0a4be302b481e8cafb5af8792da8093b486885a1ae4d15d452bcec/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491", size = 160670 }, - { url = "https://files.pythonhosted.org/packages/31/e7/883ee5676a2ef217a40ce0bffcc3d0dfbf9e64cbcfbdf822c52981c3304b/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93", size = 158501 }, - { url = "https://files.pythonhosted.org/packages/c1/35/6525b21aa0db614cf8b5792d232021dca3df7f90a1944db934efa5d20bb1/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f", size = 153173 }, - { url = "https://files.pythonhosted.org/packages/50/ee/f4704bad8201de513fdc8aac1cabc87e38c5818c93857140e06e772b5892/charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37", size = 99822 }, - { url = "https://files.pythonhosted.org/packages/39/f5/3b3836ca6064d0992c58c7561c6b6eee1b3892e9665d650c803bd5614522/charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc", size = 107543 }, - { url = "https://files.pythonhosted.org/packages/65/ca/2135ac97709b400c7654b4b764daf5c5567c2da45a30cdd20f9eefe2d658/charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe", size = 205326 }, - { url = "https://files.pythonhosted.org/packages/71/11/98a04c3c97dd34e49c7d247083af03645ca3730809a5509443f3c37f7c99/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8", size = 146008 }, - { url = "https://files.pythonhosted.org/packages/60/f5/4659a4cb3c4ec146bec80c32d8bb16033752574c20b1252ee842a95d1a1e/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9", size = 159196 }, - { url = "https://files.pythonhosted.org/packages/86/9e/f552f7a00611f168b9a5865a1414179b2c6de8235a4fa40189f6f79a1753/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31", size = 156819 }, - { url = "https://files.pythonhosted.org/packages/7e/95/42aa2156235cbc8fa61208aded06ef46111c4d3f0de233107b3f38631803/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f", size = 151350 }, - { url = "https://files.pythonhosted.org/packages/c2/a9/3865b02c56f300a6f94fc631ef54f0a8a29da74fb45a773dfd3dcd380af7/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927", size = 148644 }, - { url = "https://files.pythonhosted.org/packages/77/d9/cbcf1a2a5c7d7856f11e7ac2d782aec12bdfea60d104e60e0aa1c97849dc/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9", size = 160468 }, - { url = "https://files.pythonhosted.org/packages/f6/42/6f45efee8697b89fda4d50580f292b8f7f9306cb2971d4b53f8914e4d890/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5", size = 158187 }, - { url = "https://files.pythonhosted.org/packages/70/99/f1c3bdcfaa9c45b3ce96f70b14f070411366fa19549c1d4832c935d8e2c3/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc", size = 152699 }, - { url = "https://files.pythonhosted.org/packages/a3/ad/b0081f2f99a4b194bcbb1934ef3b12aa4d9702ced80a37026b7607c72e58/charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce", size = 99580 }, - { url = "https://files.pythonhosted.org/packages/9a/8f/ae790790c7b64f925e5c953b924aaa42a243fb778fed9e41f147b2a5715a/charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef", size = 107366 }, - { url = "https://files.pythonhosted.org/packages/8e/91/b5a06ad970ddc7a0e513112d40113e834638f4ca1120eb727a249fb2715e/charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15", size = 204342 }, - { url = "https://files.pythonhosted.org/packages/ce/ec/1edc30a377f0a02689342f214455c3f6c2fbedd896a1d2f856c002fc3062/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db", size = 145995 }, - { url = "https://files.pythonhosted.org/packages/17/e5/5e67ab85e6d22b04641acb5399c8684f4d37caf7558a53859f0283a650e9/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d", size = 158640 }, - { url = "https://files.pythonhosted.org/packages/f1/e5/38421987f6c697ee3722981289d554957c4be652f963d71c5e46a262e135/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096", size = 156636 }, - { url = "https://files.pythonhosted.org/packages/a0/e4/5a075de8daa3ec0745a9a3b54467e0c2967daaaf2cec04c845f73493e9a1/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa", size = 150939 }, - { url = "https://files.pythonhosted.org/packages/02/f7/3611b32318b30974131db62b4043f335861d4d9b49adc6d57c1149cc49d4/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049", size = 148580 }, - { url = "https://files.pythonhosted.org/packages/7e/61/19b36f4bd67f2793ab6a99b979b4e4f3d8fc754cbdffb805335df4337126/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0", size = 159870 }, - { url = "https://files.pythonhosted.org/packages/06/57/84722eefdd338c04cf3030ada66889298eaedf3e7a30a624201e0cbe424a/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92", size = 157797 }, - { url = "https://files.pythonhosted.org/packages/72/2a/aff5dd112b2f14bcc3462c312dce5445806bfc8ab3a7328555da95330e4b/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16", size = 152224 }, - { url = "https://files.pythonhosted.org/packages/b7/8c/9839225320046ed279c6e839d51f028342eb77c91c89b8ef2549f951f3ec/charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce", size = 100086 }, - { url = "https://files.pythonhosted.org/packages/ee/7a/36fbcf646e41f710ce0a563c1c9a343c6edf9be80786edeb15b6f62e17db/charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c", size = 107400 }, - { url = "https://files.pythonhosted.org/packages/8a/1f/f041989e93b001bc4e44bb1669ccdcf54d3f00e628229a85b08d330615c5/charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a", size = 53175 }, +sdist = { url = "https://files.pythonhosted.org/packages/83/2d/5fd176ceb9b2fc619e63405525573493ca23441330fcdaee6bef9460e924/charset_normalizer-3.4.3.tar.gz", hash = "sha256:6fce4b8500244f6fcb71465d4a4930d132ba9ab8e71a7859e6a5d59851068d14", size = 122371, upload_time = "2025-08-09T07:57:28.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/5e/14c94999e418d9b87682734589404a25854d5f5d0408df68bc15b6ff54bb/charset_normalizer-3.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e28e334d3ff134e88989d90ba04b47d84382a828c061d0d1027b1b12a62b39b1", size = 205655, upload_time = "2025-08-09T07:56:08.475Z" }, + { url = "https://files.pythonhosted.org/packages/7d/a8/c6ec5d389672521f644505a257f50544c074cf5fc292d5390331cd6fc9c3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0cacf8f7297b0c4fcb74227692ca46b4a5852f8f4f24b3c766dd94a1075c4884", size = 146223, upload_time = "2025-08-09T07:56:09.708Z" }, + { url = "https://files.pythonhosted.org/packages/fc/eb/a2ffb08547f4e1e5415fb69eb7db25932c52a52bed371429648db4d84fb1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c6fd51128a41297f5409deab284fecbe5305ebd7e5a1f959bee1c054622b7018", size = 159366, upload_time = "2025-08-09T07:56:11.326Z" }, + { url = "https://files.pythonhosted.org/packages/82/10/0fd19f20c624b278dddaf83b8464dcddc2456cb4b02bb902a6da126b87a1/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:3cfb2aad70f2c6debfbcb717f23b7eb55febc0bb23dcffc0f076009da10c6392", size = 157104, upload_time = "2025-08-09T07:56:13.014Z" }, + { url = "https://files.pythonhosted.org/packages/16/ab/0233c3231af734f5dfcf0844aa9582d5a1466c985bbed6cedab85af9bfe3/charset_normalizer-3.4.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1606f4a55c0fd363d754049cdf400175ee96c992b1f8018b993941f221221c5f", size = 151830, upload_time = "2025-08-09T07:56:14.428Z" }, + { url = "https://files.pythonhosted.org/packages/ae/02/e29e22b4e02839a0e4a06557b1999d0a47db3567e82989b5bb21f3fbbd9f/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:027b776c26d38b7f15b26a5da1044f376455fb3766df8fc38563b4efbc515154", size = 148854, upload_time = "2025-08-09T07:56:16.051Z" }, + { url = "https://files.pythonhosted.org/packages/05/6b/e2539a0a4be302b481e8cafb5af8792da8093b486885a1ae4d15d452bcec/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:42e5088973e56e31e4fa58eb6bd709e42fc03799c11c42929592889a2e54c491", size = 160670, upload_time = "2025-08-09T07:56:17.314Z" }, + { url = "https://files.pythonhosted.org/packages/31/e7/883ee5676a2ef217a40ce0bffcc3d0dfbf9e64cbcfbdf822c52981c3304b/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:cc34f233c9e71701040d772aa7490318673aa7164a0efe3172b2981218c26d93", size = 158501, upload_time = "2025-08-09T07:56:18.641Z" }, + { url = "https://files.pythonhosted.org/packages/c1/35/6525b21aa0db614cf8b5792d232021dca3df7f90a1944db934efa5d20bb1/charset_normalizer-3.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:320e8e66157cc4e247d9ddca8e21f427efc7a04bbd0ac8a9faf56583fa543f9f", size = 153173, upload_time = "2025-08-09T07:56:20.289Z" }, + { url = "https://files.pythonhosted.org/packages/50/ee/f4704bad8201de513fdc8aac1cabc87e38c5818c93857140e06e772b5892/charset_normalizer-3.4.3-cp312-cp312-win32.whl", hash = "sha256:fb6fecfd65564f208cbf0fba07f107fb661bcd1a7c389edbced3f7a493f70e37", size = 99822, upload_time = "2025-08-09T07:56:21.551Z" }, + { url = "https://files.pythonhosted.org/packages/39/f5/3b3836ca6064d0992c58c7561c6b6eee1b3892e9665d650c803bd5614522/charset_normalizer-3.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:86df271bf921c2ee3818f0522e9a5b8092ca2ad8b065ece5d7d9d0e9f4849bcc", size = 107543, upload_time = "2025-08-09T07:56:23.115Z" }, + { url = "https://files.pythonhosted.org/packages/65/ca/2135ac97709b400c7654b4b764daf5c5567c2da45a30cdd20f9eefe2d658/charset_normalizer-3.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:14c2a87c65b351109f6abfc424cab3927b3bdece6f706e4d12faaf3d52ee5efe", size = 205326, upload_time = "2025-08-09T07:56:24.721Z" }, + { url = "https://files.pythonhosted.org/packages/71/11/98a04c3c97dd34e49c7d247083af03645ca3730809a5509443f3c37f7c99/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41d1fc408ff5fdfb910200ec0e74abc40387bccb3252f3f27c0676731df2b2c8", size = 146008, upload_time = "2025-08-09T07:56:26.004Z" }, + { url = "https://files.pythonhosted.org/packages/60/f5/4659a4cb3c4ec146bec80c32d8bb16033752574c20b1252ee842a95d1a1e/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:1bb60174149316da1c35fa5233681f7c0f9f514509b8e399ab70fea5f17e45c9", size = 159196, upload_time = "2025-08-09T07:56:27.25Z" }, + { url = "https://files.pythonhosted.org/packages/86/9e/f552f7a00611f168b9a5865a1414179b2c6de8235a4fa40189f6f79a1753/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:30d006f98569de3459c2fc1f2acde170b7b2bd265dc1943e87e1a4efe1b67c31", size = 156819, upload_time = "2025-08-09T07:56:28.515Z" }, + { url = "https://files.pythonhosted.org/packages/7e/95/42aa2156235cbc8fa61208aded06ef46111c4d3f0de233107b3f38631803/charset_normalizer-3.4.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:416175faf02e4b0810f1f38bcb54682878a4af94059a1cd63b8747244420801f", size = 151350, upload_time = "2025-08-09T07:56:29.716Z" }, + { url = "https://files.pythonhosted.org/packages/c2/a9/3865b02c56f300a6f94fc631ef54f0a8a29da74fb45a773dfd3dcd380af7/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:6aab0f181c486f973bc7262a97f5aca3ee7e1437011ef0c2ec04b5a11d16c927", size = 148644, upload_time = "2025-08-09T07:56:30.984Z" }, + { url = "https://files.pythonhosted.org/packages/77/d9/cbcf1a2a5c7d7856f11e7ac2d782aec12bdfea60d104e60e0aa1c97849dc/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabf8315679312cfa71302f9bd509ded4f2f263fb5b765cf1433b39106c3cc9", size = 160468, upload_time = "2025-08-09T07:56:32.252Z" }, + { url = "https://files.pythonhosted.org/packages/f6/42/6f45efee8697b89fda4d50580f292b8f7f9306cb2971d4b53f8914e4d890/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:bd28b817ea8c70215401f657edef3a8aa83c29d447fb0b622c35403780ba11d5", size = 158187, upload_time = "2025-08-09T07:56:33.481Z" }, + { url = "https://files.pythonhosted.org/packages/70/99/f1c3bdcfaa9c45b3ce96f70b14f070411366fa19549c1d4832c935d8e2c3/charset_normalizer-3.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:18343b2d246dc6761a249ba1fb13f9ee9a2bcd95decc767319506056ea4ad4dc", size = 152699, upload_time = "2025-08-09T07:56:34.739Z" }, + { url = "https://files.pythonhosted.org/packages/a3/ad/b0081f2f99a4b194bcbb1934ef3b12aa4d9702ced80a37026b7607c72e58/charset_normalizer-3.4.3-cp313-cp313-win32.whl", hash = "sha256:6fb70de56f1859a3f71261cbe41005f56a7842cc348d3aeb26237560bfa5e0ce", size = 99580, upload_time = "2025-08-09T07:56:35.981Z" }, + { url = "https://files.pythonhosted.org/packages/9a/8f/ae790790c7b64f925e5c953b924aaa42a243fb778fed9e41f147b2a5715a/charset_normalizer-3.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:cf1ebb7d78e1ad8ec2a8c4732c7be2e736f6e5123a4146c5b89c9d1f585f8cef", size = 107366, upload_time = "2025-08-09T07:56:37.339Z" }, + { url = "https://files.pythonhosted.org/packages/8e/91/b5a06ad970ddc7a0e513112d40113e834638f4ca1120eb727a249fb2715e/charset_normalizer-3.4.3-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:3cd35b7e8aedeb9e34c41385fda4f73ba609e561faedfae0a9e75e44ac558a15", size = 204342, upload_time = "2025-08-09T07:56:38.687Z" }, + { url = "https://files.pythonhosted.org/packages/ce/ec/1edc30a377f0a02689342f214455c3f6c2fbedd896a1d2f856c002fc3062/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b89bc04de1d83006373429975f8ef9e7932534b8cc9ca582e4db7d20d91816db", size = 145995, upload_time = "2025-08-09T07:56:40.048Z" }, + { url = "https://files.pythonhosted.org/packages/17/e5/5e67ab85e6d22b04641acb5399c8684f4d37caf7558a53859f0283a650e9/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:2001a39612b241dae17b4687898843f254f8748b796a2e16f1051a17078d991d", size = 158640, upload_time = "2025-08-09T07:56:41.311Z" }, + { url = "https://files.pythonhosted.org/packages/f1/e5/38421987f6c697ee3722981289d554957c4be652f963d71c5e46a262e135/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dcfc373f888e4fb39a7bc57e93e3b845e7f462dacc008d9749568b1c4ece096", size = 156636, upload_time = "2025-08-09T07:56:43.195Z" }, + { url = "https://files.pythonhosted.org/packages/a0/e4/5a075de8daa3ec0745a9a3b54467e0c2967daaaf2cec04c845f73493e9a1/charset_normalizer-3.4.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:18b97b8404387b96cdbd30ad660f6407799126d26a39ca65729162fd810a99aa", size = 150939, upload_time = "2025-08-09T07:56:44.819Z" }, + { url = "https://files.pythonhosted.org/packages/02/f7/3611b32318b30974131db62b4043f335861d4d9b49adc6d57c1149cc49d4/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:ccf600859c183d70eb47e05a44cd80a4ce77394d1ac0f79dbd2dd90a69a3a049", size = 148580, upload_time = "2025-08-09T07:56:46.684Z" }, + { url = "https://files.pythonhosted.org/packages/7e/61/19b36f4bd67f2793ab6a99b979b4e4f3d8fc754cbdffb805335df4337126/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:53cd68b185d98dde4ad8990e56a58dea83a4162161b1ea9272e5c9182ce415e0", size = 159870, upload_time = "2025-08-09T07:56:47.941Z" }, + { url = "https://files.pythonhosted.org/packages/06/57/84722eefdd338c04cf3030ada66889298eaedf3e7a30a624201e0cbe424a/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:30a96e1e1f865f78b030d65241c1ee850cdf422d869e9028e2fc1d5e4db73b92", size = 157797, upload_time = "2025-08-09T07:56:49.756Z" }, + { url = "https://files.pythonhosted.org/packages/72/2a/aff5dd112b2f14bcc3462c312dce5445806bfc8ab3a7328555da95330e4b/charset_normalizer-3.4.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d716a916938e03231e86e43782ca7878fb602a125a91e7acb8b5112e2e96ac16", size = 152224, upload_time = "2025-08-09T07:56:51.369Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8c/9839225320046ed279c6e839d51f028342eb77c91c89b8ef2549f951f3ec/charset_normalizer-3.4.3-cp314-cp314-win32.whl", hash = "sha256:c6dbd0ccdda3a2ba7c2ecd9d77b37f3b5831687d8dc1b6ca5f56a4880cc7b7ce", size = 100086, upload_time = "2025-08-09T07:56:52.722Z" }, + { url = "https://files.pythonhosted.org/packages/ee/7a/36fbcf646e41f710ce0a563c1c9a343c6edf9be80786edeb15b6f62e17db/charset_normalizer-3.4.3-cp314-cp314-win_amd64.whl", hash = "sha256:73dc19b562516fc9bcf6e5d6e596df0b4eb98d87e4f79f3ae71840e6ed21361c", size = 107400, upload_time = "2025-08-09T07:56:55.172Z" }, + { url = "https://files.pythonhosted.org/packages/8a/1f/f041989e93b001bc4e44bb1669ccdcf54d3f00e628229a85b08d330615c5/charset_normalizer-3.4.3-py3-none-any.whl", hash = "sha256:ce571ab16d890d23b5c278547ba694193a45011ff86a9162a71307ed9f86759a", size = 53175, upload_time = "2025-08-09T07:57:26.864Z" }, ] [[package]] @@ -278,101 +291,101 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342 } +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload_time = "2025-05-20T23:19:49.832Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215 }, + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload_time = "2025-05-20T23:19:47.796Z" }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload_time = "2022-10-25T02:36:22.414Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload_time = "2022-10-25T02:36:20.889Z" }, ] [[package]] name = "comm" version = "0.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4c/13/7d740c5849255756bc17888787313b61fd38a0a8304fc4f073dfc46122aa/comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971", size = 6319 } +sdist = { url = "https://files.pythonhosted.org/packages/4c/13/7d740c5849255756bc17888787313b61fd38a0a8304fc4f073dfc46122aa/comm-0.2.3.tar.gz", hash = "sha256:2dc8048c10962d55d7ad693be1e7045d891b7ce8d999c97963a5e3e99c055971", size = 6319, upload_time = "2025-07-25T14:02:04.452Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294 }, + { url = "https://files.pythonhosted.org/packages/60/97/891a0971e1e4a8c5d2b20bbe0e524dc04548d2307fee33cdeba148fd4fc7/comm-0.2.3-py3-none-any.whl", hash = "sha256:c615d91d75f7f04f095b30d1c1711babd43bdc6419c1be9886a85f2f4e489417", size = 7294, upload_time = "2025-07-25T14:02:02.896Z" }, ] [[package]] name = "coverage" version = "7.10.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/26/d22c300112504f5f9a9fd2297ce33c35f3d353e4aeb987c8419453b2a7c2/coverage-7.10.7.tar.gz", hash = "sha256:f4ab143ab113be368a3e9b795f9cd7906c5ef407d6173fe9675a902e1fffc239", size = 827704 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/13/e4/eb12450f71b542a53972d19117ea5a5cea1cab3ac9e31b0b5d498df1bd5a/coverage-7.10.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7bb3b9ddb87ef7725056572368040c32775036472d5a033679d1fa6c8dc08417", size = 218290 }, - { url = "https://files.pythonhosted.org/packages/37/66/593f9be12fc19fb36711f19a5371af79a718537204d16ea1d36f16bd78d2/coverage-7.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:18afb24843cbc175687225cab1138c95d262337f5473512010e46831aa0c2973", size = 218515 }, - { url = "https://files.pythonhosted.org/packages/66/80/4c49f7ae09cafdacc73fbc30949ffe77359635c168f4e9ff33c9ebb07838/coverage-7.10.7-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:399a0b6347bcd3822be369392932884b8216d0944049ae22925631a9b3d4ba4c", size = 250020 }, - { url = "https://files.pythonhosted.org/packages/a6/90/a64aaacab3b37a17aaedd83e8000142561a29eb262cede42d94a67f7556b/coverage-7.10.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:314f2c326ded3f4b09be11bc282eb2fc861184bc95748ae67b360ac962770be7", size = 252769 }, - { url = "https://files.pythonhosted.org/packages/98/2e/2dda59afd6103b342e096f246ebc5f87a3363b5412609946c120f4e7750d/coverage-7.10.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c41e71c9cfb854789dee6fc51e46743a6d138b1803fab6cb860af43265b42ea6", size = 253901 }, - { url = "https://files.pythonhosted.org/packages/53/dc/8d8119c9051d50f3119bb4a75f29f1e4a6ab9415cd1fa8bf22fcc3fb3b5f/coverage-7.10.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc01f57ca26269c2c706e838f6422e2a8788e41b3e3c65e2f41148212e57cd59", size = 250413 }, - { url = "https://files.pythonhosted.org/packages/98/b3/edaff9c5d79ee4d4b6d3fe046f2b1d799850425695b789d491a64225d493/coverage-7.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a6442c59a8ac8b85812ce33bc4d05bde3fb22321fa8294e2a5b487c3505f611b", size = 251820 }, - { url = "https://files.pythonhosted.org/packages/11/25/9a0728564bb05863f7e513e5a594fe5ffef091b325437f5430e8cfb0d530/coverage-7.10.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:78a384e49f46b80fb4c901d52d92abe098e78768ed829c673fbb53c498bef73a", size = 249941 }, - { url = "https://files.pythonhosted.org/packages/e0/fd/ca2650443bfbef5b0e74373aac4df67b08180d2f184b482c41499668e258/coverage-7.10.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:5e1e9802121405ede4b0133aa4340ad8186a1d2526de5b7c3eca519db7bb89fb", size = 249519 }, - { url = "https://files.pythonhosted.org/packages/24/79/f692f125fb4299b6f963b0745124998ebb8e73ecdfce4ceceb06a8c6bec5/coverage-7.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d41213ea25a86f69efd1575073d34ea11aabe075604ddf3d148ecfec9e1e96a1", size = 251375 }, - { url = "https://files.pythonhosted.org/packages/5e/75/61b9bbd6c7d24d896bfeec57acba78e0f8deac68e6baf2d4804f7aae1f88/coverage-7.10.7-cp312-cp312-win32.whl", hash = "sha256:77eb4c747061a6af8d0f7bdb31f1e108d172762ef579166ec84542f711d90256", size = 220699 }, - { url = "https://files.pythonhosted.org/packages/ca/f3/3bf7905288b45b075918d372498f1cf845b5b579b723c8fd17168018d5f5/coverage-7.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:f51328ffe987aecf6d09f3cd9d979face89a617eacdaea43e7b3080777f647ba", size = 221512 }, - { url = "https://files.pythonhosted.org/packages/5c/44/3e32dbe933979d05cf2dac5e697c8599cfe038aaf51223ab901e208d5a62/coverage-7.10.7-cp312-cp312-win_arm64.whl", hash = "sha256:bda5e34f8a75721c96085903c6f2197dc398c20ffd98df33f866a9c8fd95f4bf", size = 220147 }, - { url = "https://files.pythonhosted.org/packages/9a/94/b765c1abcb613d103b64fcf10395f54d69b0ef8be6a0dd9c524384892cc7/coverage-7.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:981a651f543f2854abd3b5fcb3263aac581b18209be49863ba575de6edf4c14d", size = 218320 }, - { url = "https://files.pythonhosted.org/packages/72/4f/732fff31c119bb73b35236dd333030f32c4bfe909f445b423e6c7594f9a2/coverage-7.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:73ab1601f84dc804f7812dc297e93cd99381162da39c47040a827d4e8dafe63b", size = 218575 }, - { url = "https://files.pythonhosted.org/packages/87/02/ae7e0af4b674be47566707777db1aa375474f02a1d64b9323e5813a6cdd5/coverage-7.10.7-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a8b6f03672aa6734e700bbcd65ff050fd19cddfec4b031cc8cf1c6967de5a68e", size = 249568 }, - { url = "https://files.pythonhosted.org/packages/a2/77/8c6d22bf61921a59bce5471c2f1f7ac30cd4ac50aadde72b8c48d5727902/coverage-7.10.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10b6ba00ab1132a0ce4428ff68cf50a25efd6840a42cdf4239c9b99aad83be8b", size = 252174 }, - { url = "https://files.pythonhosted.org/packages/b1/20/b6ea4f69bbb52dac0aebd62157ba6a9dddbfe664f5af8122dac296c3ee15/coverage-7.10.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c79124f70465a150e89340de5963f936ee97097d2ef76c869708c4248c63ca49", size = 253447 }, - { url = "https://files.pythonhosted.org/packages/f9/28/4831523ba483a7f90f7b259d2018fef02cb4d5b90bc7c1505d6e5a84883c/coverage-7.10.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:69212fbccdbd5b0e39eac4067e20a4a5256609e209547d86f740d68ad4f04911", size = 249779 }, - { url = "https://files.pythonhosted.org/packages/a7/9f/4331142bc98c10ca6436d2d620c3e165f31e6c58d43479985afce6f3191c/coverage-7.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7ea7c6c9d0d286d04ed3541747e6597cbe4971f22648b68248f7ddcd329207f0", size = 251604 }, - { url = "https://files.pythonhosted.org/packages/ce/60/bda83b96602036b77ecf34e6393a3836365481b69f7ed7079ab85048202b/coverage-7.10.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b9be91986841a75042b3e3243d0b3cb0b2434252b977baaf0cd56e960fe1e46f", size = 249497 }, - { url = "https://files.pythonhosted.org/packages/5f/af/152633ff35b2af63977edd835d8e6430f0caef27d171edf2fc76c270ef31/coverage-7.10.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:b281d5eca50189325cfe1f365fafade89b14b4a78d9b40b05ddd1fc7d2a10a9c", size = 249350 }, - { url = "https://files.pythonhosted.org/packages/9d/71/d92105d122bd21cebba877228990e1646d862e34a98bb3374d3fece5a794/coverage-7.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:99e4aa63097ab1118e75a848a28e40d68b08a5e19ce587891ab7fd04475e780f", size = 251111 }, - { url = "https://files.pythonhosted.org/packages/a2/9e/9fdb08f4bf476c912f0c3ca292e019aab6712c93c9344a1653986c3fd305/coverage-7.10.7-cp313-cp313-win32.whl", hash = "sha256:dc7c389dce432500273eaf48f410b37886be9208b2dd5710aaf7c57fd442c698", size = 220746 }, - { url = "https://files.pythonhosted.org/packages/b1/b1/a75fd25df44eab52d1931e89980d1ada46824c7a3210be0d3c88a44aaa99/coverage-7.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:cac0fdca17b036af3881a9d2729a850b76553f3f716ccb0360ad4dbc06b3b843", size = 221541 }, - { url = "https://files.pythonhosted.org/packages/14/3a/d720d7c989562a6e9a14b2c9f5f2876bdb38e9367126d118495b89c99c37/coverage-7.10.7-cp313-cp313-win_arm64.whl", hash = "sha256:4b6f236edf6e2f9ae8fcd1332da4e791c1b6ba0dc16a2dc94590ceccb482e546", size = 220170 }, - { url = "https://files.pythonhosted.org/packages/bb/22/e04514bf2a735d8b0add31d2b4ab636fc02370730787c576bb995390d2d5/coverage-7.10.7-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a0ec07fd264d0745ee396b666d47cef20875f4ff2375d7c4f58235886cc1ef0c", size = 219029 }, - { url = "https://files.pythonhosted.org/packages/11/0b/91128e099035ece15da3445d9015e4b4153a6059403452d324cbb0a575fa/coverage-7.10.7-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:dd5e856ebb7bfb7672b0086846db5afb4567a7b9714b8a0ebafd211ec7ce6a15", size = 219259 }, - { url = "https://files.pythonhosted.org/packages/8b/51/66420081e72801536a091a0c8f8c1f88a5c4bf7b9b1bdc6222c7afe6dc9b/coverage-7.10.7-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f57b2a3c8353d3e04acf75b3fed57ba41f5c0646bbf1d10c7c282291c97936b4", size = 260592 }, - { url = "https://files.pythonhosted.org/packages/5d/22/9b8d458c2881b22df3db5bb3e7369e63d527d986decb6c11a591ba2364f7/coverage-7.10.7-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1ef2319dd15a0b009667301a3f84452a4dc6fddfd06b0c5c53ea472d3989fbf0", size = 262768 }, - { url = "https://files.pythonhosted.org/packages/f7/08/16bee2c433e60913c610ea200b276e8eeef084b0d200bdcff69920bd5828/coverage-7.10.7-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:83082a57783239717ceb0ad584de3c69cf581b2a95ed6bf81ea66034f00401c0", size = 264995 }, - { url = "https://files.pythonhosted.org/packages/20/9d/e53eb9771d154859b084b90201e5221bca7674ba449a17c101a5031d4054/coverage-7.10.7-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:50aa94fb1fb9a397eaa19c0d5ec15a5edd03a47bf1a3a6111a16b36e190cff65", size = 259546 }, - { url = "https://files.pythonhosted.org/packages/ad/b0/69bc7050f8d4e56a89fb550a1577d5d0d1db2278106f6f626464067b3817/coverage-7.10.7-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2120043f147bebb41c85b97ac45dd173595ff14f2a584f2963891cbcc3091541", size = 262544 }, - { url = "https://files.pythonhosted.org/packages/ef/4b/2514b060dbd1bc0aaf23b852c14bb5818f244c664cb16517feff6bb3a5ab/coverage-7.10.7-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2fafd773231dd0378fdba66d339f84904a8e57a262f583530f4f156ab83863e6", size = 260308 }, - { url = "https://files.pythonhosted.org/packages/54/78/7ba2175007c246d75e496f64c06e94122bdb914790a1285d627a918bd271/coverage-7.10.7-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:0b944ee8459f515f28b851728ad224fa2d068f1513ef6b7ff1efafeb2185f999", size = 258920 }, - { url = "https://files.pythonhosted.org/packages/c0/b3/fac9f7abbc841409b9a410309d73bfa6cfb2e51c3fada738cb607ce174f8/coverage-7.10.7-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4b583b97ab2e3efe1b3e75248a9b333bd3f8b0b1b8e5b45578e05e5850dfb2c2", size = 261434 }, - { url = "https://files.pythonhosted.org/packages/ee/51/a03bec00d37faaa891b3ff7387192cef20f01604e5283a5fabc95346befa/coverage-7.10.7-cp313-cp313t-win32.whl", hash = "sha256:2a78cd46550081a7909b3329e2266204d584866e8d97b898cd7fb5ac8d888b1a", size = 221403 }, - { url = "https://files.pythonhosted.org/packages/53/22/3cf25d614e64bf6d8e59c7c669b20d6d940bb337bdee5900b9ca41c820bb/coverage-7.10.7-cp313-cp313t-win_amd64.whl", hash = "sha256:33a5e6396ab684cb43dc7befa386258acb2d7fae7f67330ebb85ba4ea27938eb", size = 222469 }, - { url = "https://files.pythonhosted.org/packages/49/a1/00164f6d30d8a01c3c9c48418a7a5be394de5349b421b9ee019f380df2a0/coverage-7.10.7-cp313-cp313t-win_arm64.whl", hash = "sha256:86b0e7308289ddde73d863b7683f596d8d21c7d8664ce1dee061d0bcf3fbb4bb", size = 220731 }, - { url = "https://files.pythonhosted.org/packages/23/9c/5844ab4ca6a4dd97a1850e030a15ec7d292b5c5cb93082979225126e35dd/coverage-7.10.7-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b06f260b16ead11643a5a9f955bd4b5fd76c1a4c6796aeade8520095b75de520", size = 218302 }, - { url = "https://files.pythonhosted.org/packages/f0/89/673f6514b0961d1f0e20ddc242e9342f6da21eaba3489901b565c0689f34/coverage-7.10.7-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:212f8f2e0612778f09c55dd4872cb1f64a1f2b074393d139278ce902064d5b32", size = 218578 }, - { url = "https://files.pythonhosted.org/packages/05/e8/261cae479e85232828fb17ad536765c88dd818c8470aca690b0ac6feeaa3/coverage-7.10.7-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3445258bcded7d4aa630ab8296dea4d3f15a255588dd535f980c193ab6b95f3f", size = 249629 }, - { url = "https://files.pythonhosted.org/packages/82/62/14ed6546d0207e6eda876434e3e8475a3e9adbe32110ce896c9e0c06bb9a/coverage-7.10.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bb45474711ba385c46a0bfe696c695a929ae69ac636cda8f532be9e8c93d720a", size = 252162 }, - { url = "https://files.pythonhosted.org/packages/ff/49/07f00db9ac6478e4358165a08fb41b469a1b053212e8a00cb02f0d27a05f/coverage-7.10.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:813922f35bd800dca9994c5971883cbc0d291128a5de6b167c7aa697fcf59360", size = 253517 }, - { url = "https://files.pythonhosted.org/packages/a2/59/c5201c62dbf165dfbc91460f6dbbaa85a8b82cfa6131ac45d6c1bfb52deb/coverage-7.10.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:93c1b03552081b2a4423091d6fb3787265b8f86af404cff98d1b5342713bdd69", size = 249632 }, - { url = "https://files.pythonhosted.org/packages/07/ae/5920097195291a51fb00b3a70b9bbd2edbfe3c84876a1762bd1ef1565ebc/coverage-7.10.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:cc87dd1b6eaf0b848eebb1c86469b9f72a1891cb42ac7adcfbce75eadb13dd14", size = 251520 }, - { url = "https://files.pythonhosted.org/packages/b9/3c/a815dde77a2981f5743a60b63df31cb322c944843e57dbd579326625a413/coverage-7.10.7-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:39508ffda4f343c35f3236fe8d1a6634a51f4581226a1262769d7f970e73bffe", size = 249455 }, - { url = "https://files.pythonhosted.org/packages/aa/99/f5cdd8421ea656abefb6c0ce92556709db2265c41e8f9fc6c8ae0f7824c9/coverage-7.10.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:925a1edf3d810537c5a3abe78ec5530160c5f9a26b1f4270b40e62cc79304a1e", size = 249287 }, - { url = "https://files.pythonhosted.org/packages/c3/7a/e9a2da6a1fc5d007dd51fca083a663ab930a8c4d149c087732a5dbaa0029/coverage-7.10.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2c8b9a0636f94c43cd3576811e05b89aa9bc2d0a85137affc544ae5cb0e4bfbd", size = 250946 }, - { url = "https://files.pythonhosted.org/packages/ef/5b/0b5799aa30380a949005a353715095d6d1da81927d6dbed5def2200a4e25/coverage-7.10.7-cp314-cp314-win32.whl", hash = "sha256:b7b8288eb7cdd268b0304632da8cb0bb93fadcfec2fe5712f7b9cc8f4d487be2", size = 221009 }, - { url = "https://files.pythonhosted.org/packages/da/b0/e802fbb6eb746de006490abc9bb554b708918b6774b722bb3a0e6aa1b7de/coverage-7.10.7-cp314-cp314-win_amd64.whl", hash = "sha256:1ca6db7c8807fb9e755d0379ccc39017ce0a84dcd26d14b5a03b78563776f681", size = 221804 }, - { url = "https://files.pythonhosted.org/packages/9e/e8/71d0c8e374e31f39e3389bb0bd19e527d46f00ea8571ec7ec8fd261d8b44/coverage-7.10.7-cp314-cp314-win_arm64.whl", hash = "sha256:097c1591f5af4496226d5783d036bf6fd6cd0cbc132e071b33861de756efb880", size = 220384 }, - { url = "https://files.pythonhosted.org/packages/62/09/9a5608d319fa3eba7a2019addeacb8c746fb50872b57a724c9f79f146969/coverage-7.10.7-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:a62c6ef0d50e6de320c270ff91d9dd0a05e7250cac2a800b7784bae474506e63", size = 219047 }, - { url = "https://files.pythonhosted.org/packages/f5/6f/f58d46f33db9f2e3647b2d0764704548c184e6f5e014bef528b7f979ef84/coverage-7.10.7-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9fa6e4dd51fe15d8738708a973470f67a855ca50002294852e9571cdbd9433f2", size = 219266 }, - { url = "https://files.pythonhosted.org/packages/74/5c/183ffc817ba68e0b443b8c934c8795553eb0c14573813415bd59941ee165/coverage-7.10.7-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8fb190658865565c549b6b4706856d6a7b09302c797eb2cf8e7fe9dabb043f0d", size = 260767 }, - { url = "https://files.pythonhosted.org/packages/0f/48/71a8abe9c1ad7e97548835e3cc1adbf361e743e9d60310c5f75c9e7bf847/coverage-7.10.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:affef7c76a9ef259187ef31599a9260330e0335a3011732c4b9effa01e1cd6e0", size = 262931 }, - { url = "https://files.pythonhosted.org/packages/84/fd/193a8fb132acfc0a901f72020e54be5e48021e1575bb327d8ee1097a28fd/coverage-7.10.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e16e07d85ca0cf8bafe5f5d23a0b850064e8e945d5677492b06bbe6f09cc699", size = 265186 }, - { url = "https://files.pythonhosted.org/packages/b1/8f/74ecc30607dd95ad50e3034221113ccb1c6d4e8085cc761134782995daae/coverage-7.10.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:03ffc58aacdf65d2a82bbeb1ffe4d01ead4017a21bfd0454983b88ca73af94b9", size = 259470 }, - { url = "https://files.pythonhosted.org/packages/0f/55/79ff53a769f20d71b07023ea115c9167c0bb56f281320520cf64c5298a96/coverage-7.10.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1b4fd784344d4e52647fd7857b2af5b3fbe6c239b0b5fa63e94eb67320770e0f", size = 262626 }, - { url = "https://files.pythonhosted.org/packages/88/e2/dac66c140009b61ac3fc13af673a574b00c16efdf04f9b5c740703e953c0/coverage-7.10.7-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:0ebbaddb2c19b71912c6f2518e791aa8b9f054985a0769bdb3a53ebbc765c6a1", size = 260386 }, - { url = "https://files.pythonhosted.org/packages/a2/f1/f48f645e3f33bb9ca8a496bc4a9671b52f2f353146233ebd7c1df6160440/coverage-7.10.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:a2d9a3b260cc1d1dbdb1c582e63ddcf5363426a1a68faa0f5da28d8ee3c722a0", size = 258852 }, - { url = "https://files.pythonhosted.org/packages/bb/3b/8442618972c51a7affeead957995cfa8323c0c9bcf8fa5a027421f720ff4/coverage-7.10.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a3cc8638b2480865eaa3926d192e64ce6c51e3d29c849e09d5b4ad95efae5399", size = 261534 }, - { url = "https://files.pythonhosted.org/packages/b2/dc/101f3fa3a45146db0cb03f5b4376e24c0aac818309da23e2de0c75295a91/coverage-7.10.7-cp314-cp314t-win32.whl", hash = "sha256:67f8c5cbcd3deb7a60b3345dffc89a961a484ed0af1f6f73de91705cc6e31235", size = 221784 }, - { url = "https://files.pythonhosted.org/packages/4c/a1/74c51803fc70a8a40d7346660379e144be772bab4ac7bb6e6b905152345c/coverage-7.10.7-cp314-cp314t-win_amd64.whl", hash = "sha256:e1ed71194ef6dea7ed2d5cb5f7243d4bcd334bfb63e59878519be558078f848d", size = 222905 }, - { url = "https://files.pythonhosted.org/packages/12/65/f116a6d2127df30bcafbceef0302d8a64ba87488bf6f73a6d8eebf060873/coverage-7.10.7-cp314-cp314t-win_arm64.whl", hash = "sha256:7fe650342addd8524ca63d77b2362b02345e5f1a093266787d210c70a50b471a", size = 220922 }, - { url = "https://files.pythonhosted.org/packages/ec/16/114df1c291c22cac3b0c127a73e0af5c12ed7bbb6558d310429a0ae24023/coverage-7.10.7-py3-none-any.whl", hash = "sha256:f7941f6f2fe6dd6807a1208737b8a0cbcf1cc6d7b07d24998ad2d63590868260", size = 209952 }, +sdist = { url = "https://files.pythonhosted.org/packages/51/26/d22c300112504f5f9a9fd2297ce33c35f3d353e4aeb987c8419453b2a7c2/coverage-7.10.7.tar.gz", hash = "sha256:f4ab143ab113be368a3e9b795f9cd7906c5ef407d6173fe9675a902e1fffc239", size = 827704, upload_time = "2025-09-21T20:03:56.815Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/13/e4/eb12450f71b542a53972d19117ea5a5cea1cab3ac9e31b0b5d498df1bd5a/coverage-7.10.7-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7bb3b9ddb87ef7725056572368040c32775036472d5a033679d1fa6c8dc08417", size = 218290, upload_time = "2025-09-21T20:01:36.455Z" }, + { url = "https://files.pythonhosted.org/packages/37/66/593f9be12fc19fb36711f19a5371af79a718537204d16ea1d36f16bd78d2/coverage-7.10.7-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:18afb24843cbc175687225cab1138c95d262337f5473512010e46831aa0c2973", size = 218515, upload_time = "2025-09-21T20:01:37.982Z" }, + { url = "https://files.pythonhosted.org/packages/66/80/4c49f7ae09cafdacc73fbc30949ffe77359635c168f4e9ff33c9ebb07838/coverage-7.10.7-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:399a0b6347bcd3822be369392932884b8216d0944049ae22925631a9b3d4ba4c", size = 250020, upload_time = "2025-09-21T20:01:39.617Z" }, + { url = "https://files.pythonhosted.org/packages/a6/90/a64aaacab3b37a17aaedd83e8000142561a29eb262cede42d94a67f7556b/coverage-7.10.7-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:314f2c326ded3f4b09be11bc282eb2fc861184bc95748ae67b360ac962770be7", size = 252769, upload_time = "2025-09-21T20:01:41.341Z" }, + { url = "https://files.pythonhosted.org/packages/98/2e/2dda59afd6103b342e096f246ebc5f87a3363b5412609946c120f4e7750d/coverage-7.10.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c41e71c9cfb854789dee6fc51e46743a6d138b1803fab6cb860af43265b42ea6", size = 253901, upload_time = "2025-09-21T20:01:43.042Z" }, + { url = "https://files.pythonhosted.org/packages/53/dc/8d8119c9051d50f3119bb4a75f29f1e4a6ab9415cd1fa8bf22fcc3fb3b5f/coverage-7.10.7-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:bc01f57ca26269c2c706e838f6422e2a8788e41b3e3c65e2f41148212e57cd59", size = 250413, upload_time = "2025-09-21T20:01:44.469Z" }, + { url = "https://files.pythonhosted.org/packages/98/b3/edaff9c5d79ee4d4b6d3fe046f2b1d799850425695b789d491a64225d493/coverage-7.10.7-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a6442c59a8ac8b85812ce33bc4d05bde3fb22321fa8294e2a5b487c3505f611b", size = 251820, upload_time = "2025-09-21T20:01:45.915Z" }, + { url = "https://files.pythonhosted.org/packages/11/25/9a0728564bb05863f7e513e5a594fe5ffef091b325437f5430e8cfb0d530/coverage-7.10.7-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:78a384e49f46b80fb4c901d52d92abe098e78768ed829c673fbb53c498bef73a", size = 249941, upload_time = "2025-09-21T20:01:47.296Z" }, + { url = "https://files.pythonhosted.org/packages/e0/fd/ca2650443bfbef5b0e74373aac4df67b08180d2f184b482c41499668e258/coverage-7.10.7-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:5e1e9802121405ede4b0133aa4340ad8186a1d2526de5b7c3eca519db7bb89fb", size = 249519, upload_time = "2025-09-21T20:01:48.73Z" }, + { url = "https://files.pythonhosted.org/packages/24/79/f692f125fb4299b6f963b0745124998ebb8e73ecdfce4ceceb06a8c6bec5/coverage-7.10.7-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d41213ea25a86f69efd1575073d34ea11aabe075604ddf3d148ecfec9e1e96a1", size = 251375, upload_time = "2025-09-21T20:01:50.529Z" }, + { url = "https://files.pythonhosted.org/packages/5e/75/61b9bbd6c7d24d896bfeec57acba78e0f8deac68e6baf2d4804f7aae1f88/coverage-7.10.7-cp312-cp312-win32.whl", hash = "sha256:77eb4c747061a6af8d0f7bdb31f1e108d172762ef579166ec84542f711d90256", size = 220699, upload_time = "2025-09-21T20:01:51.941Z" }, + { url = "https://files.pythonhosted.org/packages/ca/f3/3bf7905288b45b075918d372498f1cf845b5b579b723c8fd17168018d5f5/coverage-7.10.7-cp312-cp312-win_amd64.whl", hash = "sha256:f51328ffe987aecf6d09f3cd9d979face89a617eacdaea43e7b3080777f647ba", size = 221512, upload_time = "2025-09-21T20:01:53.481Z" }, + { url = "https://files.pythonhosted.org/packages/5c/44/3e32dbe933979d05cf2dac5e697c8599cfe038aaf51223ab901e208d5a62/coverage-7.10.7-cp312-cp312-win_arm64.whl", hash = "sha256:bda5e34f8a75721c96085903c6f2197dc398c20ffd98df33f866a9c8fd95f4bf", size = 220147, upload_time = "2025-09-21T20:01:55.2Z" }, + { url = "https://files.pythonhosted.org/packages/9a/94/b765c1abcb613d103b64fcf10395f54d69b0ef8be6a0dd9c524384892cc7/coverage-7.10.7-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:981a651f543f2854abd3b5fcb3263aac581b18209be49863ba575de6edf4c14d", size = 218320, upload_time = "2025-09-21T20:01:56.629Z" }, + { url = "https://files.pythonhosted.org/packages/72/4f/732fff31c119bb73b35236dd333030f32c4bfe909f445b423e6c7594f9a2/coverage-7.10.7-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:73ab1601f84dc804f7812dc297e93cd99381162da39c47040a827d4e8dafe63b", size = 218575, upload_time = "2025-09-21T20:01:58.203Z" }, + { url = "https://files.pythonhosted.org/packages/87/02/ae7e0af4b674be47566707777db1aa375474f02a1d64b9323e5813a6cdd5/coverage-7.10.7-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:a8b6f03672aa6734e700bbcd65ff050fd19cddfec4b031cc8cf1c6967de5a68e", size = 249568, upload_time = "2025-09-21T20:01:59.748Z" }, + { url = "https://files.pythonhosted.org/packages/a2/77/8c6d22bf61921a59bce5471c2f1f7ac30cd4ac50aadde72b8c48d5727902/coverage-7.10.7-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:10b6ba00ab1132a0ce4428ff68cf50a25efd6840a42cdf4239c9b99aad83be8b", size = 252174, upload_time = "2025-09-21T20:02:01.192Z" }, + { url = "https://files.pythonhosted.org/packages/b1/20/b6ea4f69bbb52dac0aebd62157ba6a9dddbfe664f5af8122dac296c3ee15/coverage-7.10.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c79124f70465a150e89340de5963f936ee97097d2ef76c869708c4248c63ca49", size = 253447, upload_time = "2025-09-21T20:02:02.701Z" }, + { url = "https://files.pythonhosted.org/packages/f9/28/4831523ba483a7f90f7b259d2018fef02cb4d5b90bc7c1505d6e5a84883c/coverage-7.10.7-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:69212fbccdbd5b0e39eac4067e20a4a5256609e209547d86f740d68ad4f04911", size = 249779, upload_time = "2025-09-21T20:02:04.185Z" }, + { url = "https://files.pythonhosted.org/packages/a7/9f/4331142bc98c10ca6436d2d620c3e165f31e6c58d43479985afce6f3191c/coverage-7.10.7-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:7ea7c6c9d0d286d04ed3541747e6597cbe4971f22648b68248f7ddcd329207f0", size = 251604, upload_time = "2025-09-21T20:02:06.034Z" }, + { url = "https://files.pythonhosted.org/packages/ce/60/bda83b96602036b77ecf34e6393a3836365481b69f7ed7079ab85048202b/coverage-7.10.7-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b9be91986841a75042b3e3243d0b3cb0b2434252b977baaf0cd56e960fe1e46f", size = 249497, upload_time = "2025-09-21T20:02:07.619Z" }, + { url = "https://files.pythonhosted.org/packages/5f/af/152633ff35b2af63977edd835d8e6430f0caef27d171edf2fc76c270ef31/coverage-7.10.7-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:b281d5eca50189325cfe1f365fafade89b14b4a78d9b40b05ddd1fc7d2a10a9c", size = 249350, upload_time = "2025-09-21T20:02:10.34Z" }, + { url = "https://files.pythonhosted.org/packages/9d/71/d92105d122bd21cebba877228990e1646d862e34a98bb3374d3fece5a794/coverage-7.10.7-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:99e4aa63097ab1118e75a848a28e40d68b08a5e19ce587891ab7fd04475e780f", size = 251111, upload_time = "2025-09-21T20:02:12.122Z" }, + { url = "https://files.pythonhosted.org/packages/a2/9e/9fdb08f4bf476c912f0c3ca292e019aab6712c93c9344a1653986c3fd305/coverage-7.10.7-cp313-cp313-win32.whl", hash = "sha256:dc7c389dce432500273eaf48f410b37886be9208b2dd5710aaf7c57fd442c698", size = 220746, upload_time = "2025-09-21T20:02:13.919Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b1/a75fd25df44eab52d1931e89980d1ada46824c7a3210be0d3c88a44aaa99/coverage-7.10.7-cp313-cp313-win_amd64.whl", hash = "sha256:cac0fdca17b036af3881a9d2729a850b76553f3f716ccb0360ad4dbc06b3b843", size = 221541, upload_time = "2025-09-21T20:02:15.57Z" }, + { url = "https://files.pythonhosted.org/packages/14/3a/d720d7c989562a6e9a14b2c9f5f2876bdb38e9367126d118495b89c99c37/coverage-7.10.7-cp313-cp313-win_arm64.whl", hash = "sha256:4b6f236edf6e2f9ae8fcd1332da4e791c1b6ba0dc16a2dc94590ceccb482e546", size = 220170, upload_time = "2025-09-21T20:02:17.395Z" }, + { url = "https://files.pythonhosted.org/packages/bb/22/e04514bf2a735d8b0add31d2b4ab636fc02370730787c576bb995390d2d5/coverage-7.10.7-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a0ec07fd264d0745ee396b666d47cef20875f4ff2375d7c4f58235886cc1ef0c", size = 219029, upload_time = "2025-09-21T20:02:18.936Z" }, + { url = "https://files.pythonhosted.org/packages/11/0b/91128e099035ece15da3445d9015e4b4153a6059403452d324cbb0a575fa/coverage-7.10.7-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:dd5e856ebb7bfb7672b0086846db5afb4567a7b9714b8a0ebafd211ec7ce6a15", size = 219259, upload_time = "2025-09-21T20:02:20.44Z" }, + { url = "https://files.pythonhosted.org/packages/8b/51/66420081e72801536a091a0c8f8c1f88a5c4bf7b9b1bdc6222c7afe6dc9b/coverage-7.10.7-cp313-cp313t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:f57b2a3c8353d3e04acf75b3fed57ba41f5c0646bbf1d10c7c282291c97936b4", size = 260592, upload_time = "2025-09-21T20:02:22.313Z" }, + { url = "https://files.pythonhosted.org/packages/5d/22/9b8d458c2881b22df3db5bb3e7369e63d527d986decb6c11a591ba2364f7/coverage-7.10.7-cp313-cp313t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:1ef2319dd15a0b009667301a3f84452a4dc6fddfd06b0c5c53ea472d3989fbf0", size = 262768, upload_time = "2025-09-21T20:02:24.287Z" }, + { url = "https://files.pythonhosted.org/packages/f7/08/16bee2c433e60913c610ea200b276e8eeef084b0d200bdcff69920bd5828/coverage-7.10.7-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:83082a57783239717ceb0ad584de3c69cf581b2a95ed6bf81ea66034f00401c0", size = 264995, upload_time = "2025-09-21T20:02:26.133Z" }, + { url = "https://files.pythonhosted.org/packages/20/9d/e53eb9771d154859b084b90201e5221bca7674ba449a17c101a5031d4054/coverage-7.10.7-cp313-cp313t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:50aa94fb1fb9a397eaa19c0d5ec15a5edd03a47bf1a3a6111a16b36e190cff65", size = 259546, upload_time = "2025-09-21T20:02:27.716Z" }, + { url = "https://files.pythonhosted.org/packages/ad/b0/69bc7050f8d4e56a89fb550a1577d5d0d1db2278106f6f626464067b3817/coverage-7.10.7-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2120043f147bebb41c85b97ac45dd173595ff14f2a584f2963891cbcc3091541", size = 262544, upload_time = "2025-09-21T20:02:29.216Z" }, + { url = "https://files.pythonhosted.org/packages/ef/4b/2514b060dbd1bc0aaf23b852c14bb5818f244c664cb16517feff6bb3a5ab/coverage-7.10.7-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2fafd773231dd0378fdba66d339f84904a8e57a262f583530f4f156ab83863e6", size = 260308, upload_time = "2025-09-21T20:02:31.226Z" }, + { url = "https://files.pythonhosted.org/packages/54/78/7ba2175007c246d75e496f64c06e94122bdb914790a1285d627a918bd271/coverage-7.10.7-cp313-cp313t-musllinux_1_2_riscv64.whl", hash = "sha256:0b944ee8459f515f28b851728ad224fa2d068f1513ef6b7ff1efafeb2185f999", size = 258920, upload_time = "2025-09-21T20:02:32.823Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b3/fac9f7abbc841409b9a410309d73bfa6cfb2e51c3fada738cb607ce174f8/coverage-7.10.7-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4b583b97ab2e3efe1b3e75248a9b333bd3f8b0b1b8e5b45578e05e5850dfb2c2", size = 261434, upload_time = "2025-09-21T20:02:34.86Z" }, + { url = "https://files.pythonhosted.org/packages/ee/51/a03bec00d37faaa891b3ff7387192cef20f01604e5283a5fabc95346befa/coverage-7.10.7-cp313-cp313t-win32.whl", hash = "sha256:2a78cd46550081a7909b3329e2266204d584866e8d97b898cd7fb5ac8d888b1a", size = 221403, upload_time = "2025-09-21T20:02:37.034Z" }, + { url = "https://files.pythonhosted.org/packages/53/22/3cf25d614e64bf6d8e59c7c669b20d6d940bb337bdee5900b9ca41c820bb/coverage-7.10.7-cp313-cp313t-win_amd64.whl", hash = "sha256:33a5e6396ab684cb43dc7befa386258acb2d7fae7f67330ebb85ba4ea27938eb", size = 222469, upload_time = "2025-09-21T20:02:39.011Z" }, + { url = "https://files.pythonhosted.org/packages/49/a1/00164f6d30d8a01c3c9c48418a7a5be394de5349b421b9ee019f380df2a0/coverage-7.10.7-cp313-cp313t-win_arm64.whl", hash = "sha256:86b0e7308289ddde73d863b7683f596d8d21c7d8664ce1dee061d0bcf3fbb4bb", size = 220731, upload_time = "2025-09-21T20:02:40.939Z" }, + { url = "https://files.pythonhosted.org/packages/23/9c/5844ab4ca6a4dd97a1850e030a15ec7d292b5c5cb93082979225126e35dd/coverage-7.10.7-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:b06f260b16ead11643a5a9f955bd4b5fd76c1a4c6796aeade8520095b75de520", size = 218302, upload_time = "2025-09-21T20:02:42.527Z" }, + { url = "https://files.pythonhosted.org/packages/f0/89/673f6514b0961d1f0e20ddc242e9342f6da21eaba3489901b565c0689f34/coverage-7.10.7-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:212f8f2e0612778f09c55dd4872cb1f64a1f2b074393d139278ce902064d5b32", size = 218578, upload_time = "2025-09-21T20:02:44.468Z" }, + { url = "https://files.pythonhosted.org/packages/05/e8/261cae479e85232828fb17ad536765c88dd818c8470aca690b0ac6feeaa3/coverage-7.10.7-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:3445258bcded7d4aa630ab8296dea4d3f15a255588dd535f980c193ab6b95f3f", size = 249629, upload_time = "2025-09-21T20:02:46.503Z" }, + { url = "https://files.pythonhosted.org/packages/82/62/14ed6546d0207e6eda876434e3e8475a3e9adbe32110ce896c9e0c06bb9a/coverage-7.10.7-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:bb45474711ba385c46a0bfe696c695a929ae69ac636cda8f532be9e8c93d720a", size = 252162, upload_time = "2025-09-21T20:02:48.689Z" }, + { url = "https://files.pythonhosted.org/packages/ff/49/07f00db9ac6478e4358165a08fb41b469a1b053212e8a00cb02f0d27a05f/coverage-7.10.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:813922f35bd800dca9994c5971883cbc0d291128a5de6b167c7aa697fcf59360", size = 253517, upload_time = "2025-09-21T20:02:50.31Z" }, + { url = "https://files.pythonhosted.org/packages/a2/59/c5201c62dbf165dfbc91460f6dbbaa85a8b82cfa6131ac45d6c1bfb52deb/coverage-7.10.7-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:93c1b03552081b2a4423091d6fb3787265b8f86af404cff98d1b5342713bdd69", size = 249632, upload_time = "2025-09-21T20:02:51.971Z" }, + { url = "https://files.pythonhosted.org/packages/07/ae/5920097195291a51fb00b3a70b9bbd2edbfe3c84876a1762bd1ef1565ebc/coverage-7.10.7-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:cc87dd1b6eaf0b848eebb1c86469b9f72a1891cb42ac7adcfbce75eadb13dd14", size = 251520, upload_time = "2025-09-21T20:02:53.858Z" }, + { url = "https://files.pythonhosted.org/packages/b9/3c/a815dde77a2981f5743a60b63df31cb322c944843e57dbd579326625a413/coverage-7.10.7-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:39508ffda4f343c35f3236fe8d1a6634a51f4581226a1262769d7f970e73bffe", size = 249455, upload_time = "2025-09-21T20:02:55.807Z" }, + { url = "https://files.pythonhosted.org/packages/aa/99/f5cdd8421ea656abefb6c0ce92556709db2265c41e8f9fc6c8ae0f7824c9/coverage-7.10.7-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:925a1edf3d810537c5a3abe78ec5530160c5f9a26b1f4270b40e62cc79304a1e", size = 249287, upload_time = "2025-09-21T20:02:57.784Z" }, + { url = "https://files.pythonhosted.org/packages/c3/7a/e9a2da6a1fc5d007dd51fca083a663ab930a8c4d149c087732a5dbaa0029/coverage-7.10.7-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:2c8b9a0636f94c43cd3576811e05b89aa9bc2d0a85137affc544ae5cb0e4bfbd", size = 250946, upload_time = "2025-09-21T20:02:59.431Z" }, + { url = "https://files.pythonhosted.org/packages/ef/5b/0b5799aa30380a949005a353715095d6d1da81927d6dbed5def2200a4e25/coverage-7.10.7-cp314-cp314-win32.whl", hash = "sha256:b7b8288eb7cdd268b0304632da8cb0bb93fadcfec2fe5712f7b9cc8f4d487be2", size = 221009, upload_time = "2025-09-21T20:03:01.324Z" }, + { url = "https://files.pythonhosted.org/packages/da/b0/e802fbb6eb746de006490abc9bb554b708918b6774b722bb3a0e6aa1b7de/coverage-7.10.7-cp314-cp314-win_amd64.whl", hash = "sha256:1ca6db7c8807fb9e755d0379ccc39017ce0a84dcd26d14b5a03b78563776f681", size = 221804, upload_time = "2025-09-21T20:03:03.4Z" }, + { url = "https://files.pythonhosted.org/packages/9e/e8/71d0c8e374e31f39e3389bb0bd19e527d46f00ea8571ec7ec8fd261d8b44/coverage-7.10.7-cp314-cp314-win_arm64.whl", hash = "sha256:097c1591f5af4496226d5783d036bf6fd6cd0cbc132e071b33861de756efb880", size = 220384, upload_time = "2025-09-21T20:03:05.111Z" }, + { url = "https://files.pythonhosted.org/packages/62/09/9a5608d319fa3eba7a2019addeacb8c746fb50872b57a724c9f79f146969/coverage-7.10.7-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:a62c6ef0d50e6de320c270ff91d9dd0a05e7250cac2a800b7784bae474506e63", size = 219047, upload_time = "2025-09-21T20:03:06.795Z" }, + { url = "https://files.pythonhosted.org/packages/f5/6f/f58d46f33db9f2e3647b2d0764704548c184e6f5e014bef528b7f979ef84/coverage-7.10.7-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:9fa6e4dd51fe15d8738708a973470f67a855ca50002294852e9571cdbd9433f2", size = 219266, upload_time = "2025-09-21T20:03:08.495Z" }, + { url = "https://files.pythonhosted.org/packages/74/5c/183ffc817ba68e0b443b8c934c8795553eb0c14573813415bd59941ee165/coverage-7.10.7-cp314-cp314t-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl", hash = "sha256:8fb190658865565c549b6b4706856d6a7b09302c797eb2cf8e7fe9dabb043f0d", size = 260767, upload_time = "2025-09-21T20:03:10.172Z" }, + { url = "https://files.pythonhosted.org/packages/0f/48/71a8abe9c1ad7e97548835e3cc1adbf361e743e9d60310c5f75c9e7bf847/coverage-7.10.7-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl", hash = "sha256:affef7c76a9ef259187ef31599a9260330e0335a3011732c4b9effa01e1cd6e0", size = 262931, upload_time = "2025-09-21T20:03:11.861Z" }, + { url = "https://files.pythonhosted.org/packages/84/fd/193a8fb132acfc0a901f72020e54be5e48021e1575bb327d8ee1097a28fd/coverage-7.10.7-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6e16e07d85ca0cf8bafe5f5d23a0b850064e8e945d5677492b06bbe6f09cc699", size = 265186, upload_time = "2025-09-21T20:03:13.539Z" }, + { url = "https://files.pythonhosted.org/packages/b1/8f/74ecc30607dd95ad50e3034221113ccb1c6d4e8085cc761134782995daae/coverage-7.10.7-cp314-cp314t-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:03ffc58aacdf65d2a82bbeb1ffe4d01ead4017a21bfd0454983b88ca73af94b9", size = 259470, upload_time = "2025-09-21T20:03:15.584Z" }, + { url = "https://files.pythonhosted.org/packages/0f/55/79ff53a769f20d71b07023ea115c9167c0bb56f281320520cf64c5298a96/coverage-7.10.7-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:1b4fd784344d4e52647fd7857b2af5b3fbe6c239b0b5fa63e94eb67320770e0f", size = 262626, upload_time = "2025-09-21T20:03:17.673Z" }, + { url = "https://files.pythonhosted.org/packages/88/e2/dac66c140009b61ac3fc13af673a574b00c16efdf04f9b5c740703e953c0/coverage-7.10.7-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:0ebbaddb2c19b71912c6f2518e791aa8b9f054985a0769bdb3a53ebbc765c6a1", size = 260386, upload_time = "2025-09-21T20:03:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/a2/f1/f48f645e3f33bb9ca8a496bc4a9671b52f2f353146233ebd7c1df6160440/coverage-7.10.7-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:a2d9a3b260cc1d1dbdb1c582e63ddcf5363426a1a68faa0f5da28d8ee3c722a0", size = 258852, upload_time = "2025-09-21T20:03:21.007Z" }, + { url = "https://files.pythonhosted.org/packages/bb/3b/8442618972c51a7affeead957995cfa8323c0c9bcf8fa5a027421f720ff4/coverage-7.10.7-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a3cc8638b2480865eaa3926d192e64ce6c51e3d29c849e09d5b4ad95efae5399", size = 261534, upload_time = "2025-09-21T20:03:23.12Z" }, + { url = "https://files.pythonhosted.org/packages/b2/dc/101f3fa3a45146db0cb03f5b4376e24c0aac818309da23e2de0c75295a91/coverage-7.10.7-cp314-cp314t-win32.whl", hash = "sha256:67f8c5cbcd3deb7a60b3345dffc89a961a484ed0af1f6f73de91705cc6e31235", size = 221784, upload_time = "2025-09-21T20:03:24.769Z" }, + { url = "https://files.pythonhosted.org/packages/4c/a1/74c51803fc70a8a40d7346660379e144be772bab4ac7bb6e6b905152345c/coverage-7.10.7-cp314-cp314t-win_amd64.whl", hash = "sha256:e1ed71194ef6dea7ed2d5cb5f7243d4bcd334bfb63e59878519be558078f848d", size = 222905, upload_time = "2025-09-21T20:03:26.93Z" }, + { url = "https://files.pythonhosted.org/packages/12/65/f116a6d2127df30bcafbceef0302d8a64ba87488bf6f73a6d8eebf060873/coverage-7.10.7-cp314-cp314t-win_arm64.whl", hash = "sha256:7fe650342addd8524ca63d77b2362b02345e5f1a093266787d210c70a50b471a", size = 220922, upload_time = "2025-09-21T20:03:28.672Z" }, + { url = "https://files.pythonhosted.org/packages/ec/16/114df1c291c22cac3b0c127a73e0af5c12ed7bbb6558d310429a0ae24023/coverage-7.10.7-py3-none-any.whl", hash = "sha256:f7941f6f2fe6dd6807a1208737b8a0cbcf1cc6d7b07d24998ad2d63590868260", size = 209952, upload_time = "2025-09-21T20:03:53.918Z" }, ] [[package]] @@ -382,60 +395,60 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a9/62/e3664e6ffd7743e1694b244dde70b43a394f6f7fbcacf7014a8ff5197c73/cryptography-46.0.1.tar.gz", hash = "sha256:ed570874e88f213437f5cf758f9ef26cbfc3f336d889b1e592ee11283bb8d1c7", size = 749198 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4c/8c/44ee01267ec01e26e43ebfdae3f120ec2312aa72fa4c0507ebe41a26739f/cryptography-46.0.1-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:1cd6d50c1a8b79af1a6f703709d8973845f677c8e97b1268f5ff323d38ce8475", size = 7285044 }, - { url = "https://files.pythonhosted.org/packages/22/59/9ae689a25047e0601adfcb159ec4f83c0b4149fdb5c3030cc94cd218141d/cryptography-46.0.1-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0ff483716be32690c14636e54a1f6e2e1b7bf8e22ca50b989f88fa1b2d287080", size = 4308182 }, - { url = "https://files.pythonhosted.org/packages/c4/ee/ca6cc9df7118f2fcd142c76b1da0f14340d77518c05b1ebfbbabca6b9e7d/cryptography-46.0.1-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9873bf7c1f2a6330bdfe8621e7ce64b725784f9f0c3a6a55c3047af5849f920e", size = 4572393 }, - { url = "https://files.pythonhosted.org/packages/7f/a3/0f5296f63815d8e985922b05c31f77ce44787b3127a67c0b7f70f115c45f/cryptography-46.0.1-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0dfb7c88d4462a0cfdd0d87a3c245a7bc3feb59de101f6ff88194f740f72eda6", size = 4308400 }, - { url = "https://files.pythonhosted.org/packages/5d/8c/74fcda3e4e01be1d32775d5b4dd841acaac3c1b8fa4d0774c7ac8d52463d/cryptography-46.0.1-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e22801b61613ebdebf7deb18b507919e107547a1d39a3b57f5f855032dd7cfb8", size = 4015786 }, - { url = "https://files.pythonhosted.org/packages/dc/b8/85d23287baeef273b0834481a3dd55bbed3a53587e3b8d9f0898235b8f91/cryptography-46.0.1-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:757af4f6341ce7a1e47c326ca2a81f41d236070217e5fbbad61bbfe299d55d28", size = 4982606 }, - { url = "https://files.pythonhosted.org/packages/e5/d3/de61ad5b52433b389afca0bc70f02a7a1f074651221f599ce368da0fe437/cryptography-46.0.1-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f7a24ea78de345cfa7f6a8d3bde8b242c7fac27f2bd78fa23474ca38dfaeeab9", size = 4604234 }, - { url = "https://files.pythonhosted.org/packages/dc/1f/dbd4d6570d84748439237a7478d124ee0134bf166ad129267b7ed8ea6d22/cryptography-46.0.1-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e8776dac9e660c22241b6587fae51a67b4b0147daa4d176b172c3ff768ad736", size = 4307669 }, - { url = "https://files.pythonhosted.org/packages/ec/fd/ca0a14ce7f0bfe92fa727aacaf2217eb25eb7e4ed513b14d8e03b26e63ed/cryptography-46.0.1-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9f40642a140c0c8649987027867242b801486865277cbabc8c6059ddef16dc8b", size = 4947579 }, - { url = "https://files.pythonhosted.org/packages/89/6b/09c30543bb93401f6f88fce556b3bdbb21e55ae14912c04b7bf355f5f96c/cryptography-46.0.1-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:449ef2b321bec7d97ef2c944173275ebdab78f3abdd005400cc409e27cd159ab", size = 4603669 }, - { url = "https://files.pythonhosted.org/packages/23/9a/38cb01cb09ce0adceda9fc627c9cf98eb890fc8d50cacbe79b011df20f8a/cryptography-46.0.1-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2dd339ba3345b908fa3141ddba4025568fa6fd398eabce3ef72a29ac2d73ad75", size = 4435828 }, - { url = "https://files.pythonhosted.org/packages/0f/53/435b5c36a78d06ae0bef96d666209b0ecd8f8181bfe4dda46536705df59e/cryptography-46.0.1-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7411c910fb2a412053cf33cfad0153ee20d27e256c6c3f14d7d7d1d9fec59fd5", size = 4709553 }, - { url = "https://files.pythonhosted.org/packages/f5/c4/0da6e55595d9b9cd3b6eb5dc22f3a07ded7f116a3ea72629cab595abb804/cryptography-46.0.1-cp311-abi3-win32.whl", hash = "sha256:cbb8e769d4cac884bb28e3ff620ef1001b75588a5c83c9c9f1fdc9afbe7f29b0", size = 3058327 }, - { url = "https://files.pythonhosted.org/packages/95/0f/cd29a35e0d6e78a0ee61793564c8cff0929c38391cb0de27627bdc7525aa/cryptography-46.0.1-cp311-abi3-win_amd64.whl", hash = "sha256:92e8cfe8bd7dd86eac0a677499894862cd5cc2fd74de917daa881d00871ac8e7", size = 3523893 }, - { url = "https://files.pythonhosted.org/packages/f2/dd/eea390f3e78432bc3d2f53952375f8b37cb4d37783e626faa6a51e751719/cryptography-46.0.1-cp311-abi3-win_arm64.whl", hash = "sha256:db5597a4c7353b2e5fb05a8e6cb74b56a4658a2b7bf3cb6b1821ae7e7fd6eaa0", size = 2932145 }, - { url = "https://files.pythonhosted.org/packages/0a/fb/c73588561afcd5e24b089952bd210b14676c0c5bf1213376350ae111945c/cryptography-46.0.1-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:4c49eda9a23019e11d32a0eb51a27b3e7ddedde91e099c0ac6373e3aacc0d2ee", size = 7193928 }, - { url = "https://files.pythonhosted.org/packages/26/34/0ff0bb2d2c79f25a2a63109f3b76b9108a906dd2a2eb5c1d460b9938adbb/cryptography-46.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9babb7818fdd71394e576cf26c5452df77a355eac1a27ddfa24096665a27f8fd", size = 4293515 }, - { url = "https://files.pythonhosted.org/packages/df/b7/d4f848aee24ecd1be01db6c42c4a270069a4f02a105d9c57e143daf6cf0f/cryptography-46.0.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9f2c4cc63be3ef43c0221861177cee5d14b505cd4d4599a89e2cd273c4d3542a", size = 4545619 }, - { url = "https://files.pythonhosted.org/packages/44/a5/42fedefc754fd1901e2d95a69815ea4ec8a9eed31f4c4361fcab80288661/cryptography-46.0.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:41c281a74df173876da1dc9a9b6953d387f06e3d3ed9284e3baae3ab3f40883a", size = 4299160 }, - { url = "https://files.pythonhosted.org/packages/86/a1/cd21174f56e769c831fbbd6399a1b7519b0ff6280acec1b826d7b072640c/cryptography-46.0.1-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0a17377fa52563d730248ba1f68185461fff36e8bc75d8787a7dd2e20a802b7a", size = 3994491 }, - { url = "https://files.pythonhosted.org/packages/8d/2f/a8cbfa1c029987ddc746fd966711d4fa71efc891d37fbe9f030fe5ab4eec/cryptography-46.0.1-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:0d1922d9280e08cde90b518a10cd66831f632960a8d08cb3418922d83fce6f12", size = 4960157 }, - { url = "https://files.pythonhosted.org/packages/67/ae/63a84e6789e0d5a2502edf06b552bcb0fa9ff16147265d5c44a211942abe/cryptography-46.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:af84e8e99f1a82cea149e253014ea9dc89f75b82c87bb6c7242203186f465129", size = 4577263 }, - { url = "https://files.pythonhosted.org/packages/ef/8f/1b9fa8e92bd9cbcb3b7e1e593a5232f2c1e6f9bd72b919c1a6b37d315f92/cryptography-46.0.1-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:ef648d2c690703501714588b2ba640facd50fd16548133b11b2859e8655a69da", size = 4298703 }, - { url = "https://files.pythonhosted.org/packages/c3/af/bb95db070e73fea3fae31d8a69ac1463d89d1c084220f549b00dd01094a8/cryptography-46.0.1-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:e94eb5fa32a8a9f9bf991f424f002913e3dd7c699ef552db9b14ba6a76a6313b", size = 4926363 }, - { url = "https://files.pythonhosted.org/packages/f5/3b/d8fb17ffeb3a83157a1cc0aa5c60691d062aceecba09c2e5e77ebfc1870c/cryptography-46.0.1-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:534b96c0831855e29fc3b069b085fd185aa5353033631a585d5cd4dd5d40d657", size = 4576958 }, - { url = "https://files.pythonhosted.org/packages/d9/46/86bc3a05c10c8aa88c8ae7e953a8b4e407c57823ed201dbcba55c4d655f4/cryptography-46.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:f9b55038b5c6c47559aa33626d8ecd092f354e23de3c6975e4bb205df128a2a0", size = 4422507 }, - { url = "https://files.pythonhosted.org/packages/a8/4e/387e5a21dfd2b4198e74968a541cfd6128f66f8ec94ed971776e15091ac3/cryptography-46.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ec13b7105117dbc9afd023300fb9954d72ca855c274fe563e72428ece10191c0", size = 4683964 }, - { url = "https://files.pythonhosted.org/packages/25/a3/f9f5907b166adb8f26762071474b38bbfcf89858a5282f032899075a38a1/cryptography-46.0.1-cp314-cp314t-win32.whl", hash = "sha256:504e464944f2c003a0785b81668fe23c06f3b037e9cb9f68a7c672246319f277", size = 3029705 }, - { url = "https://files.pythonhosted.org/packages/12/66/4d3a4f1850db2e71c2b1628d14b70b5e4c1684a1bd462f7fffb93c041c38/cryptography-46.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c52fded6383f7e20eaf70a60aeddd796b3677c3ad2922c801be330db62778e05", size = 3502175 }, - { url = "https://files.pythonhosted.org/packages/52/c7/9f10ad91435ef7d0d99a0b93c4360bea3df18050ff5b9038c489c31ac2f5/cryptography-46.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:9495d78f52c804b5ec8878b5b8c7873aa8e63db9cd9ee387ff2db3fffe4df784", size = 2912354 }, - { url = "https://files.pythonhosted.org/packages/98/e5/fbd632385542a3311915976f88e0dfcf09e62a3fc0aff86fb6762162a24d/cryptography-46.0.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:d84c40bdb8674c29fa192373498b6cb1e84f882889d21a471b45d1f868d8d44b", size = 7255677 }, - { url = "https://files.pythonhosted.org/packages/56/3e/13ce6eab9ad6eba1b15a7bd476f005a4c1b3f299f4c2f32b22408b0edccf/cryptography-46.0.1-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9ed64e5083fa806709e74fc5ea067dfef9090e5b7a2320a49be3c9df3583a2d8", size = 4301110 }, - { url = "https://files.pythonhosted.org/packages/a2/67/65dc233c1ddd688073cf7b136b06ff4b84bf517ba5529607c9d79720fc67/cryptography-46.0.1-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:341fb7a26bc9d6093c1b124b9f13acc283d2d51da440b98b55ab3f79f2522ead", size = 4562369 }, - { url = "https://files.pythonhosted.org/packages/17/db/d64ae4c6f4e98c3dac5bf35dd4d103f4c7c345703e43560113e5e8e31b2b/cryptography-46.0.1-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6ef1488967e729948d424d09c94753d0167ce59afba8d0f6c07a22b629c557b2", size = 4302126 }, - { url = "https://files.pythonhosted.org/packages/3d/19/5f1eea17d4805ebdc2e685b7b02800c4f63f3dd46cfa8d4c18373fea46c8/cryptography-46.0.1-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7823bc7cdf0b747ecfb096d004cc41573c2f5c7e3a29861603a2871b43d3ef32", size = 4009431 }, - { url = "https://files.pythonhosted.org/packages/81/b5/229ba6088fe7abccbfe4c5edb96c7a5ad547fac5fdd0d40aa6ea540b2985/cryptography-46.0.1-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:f736ab8036796f5a119ff8211deda416f8c15ce03776db704a7a4e17381cb2ef", size = 4980739 }, - { url = "https://files.pythonhosted.org/packages/3a/9c/50aa38907b201e74bc43c572f9603fa82b58e831bd13c245613a23cff736/cryptography-46.0.1-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:e46710a240a41d594953012213ea8ca398cd2448fbc5d0f1be8160b5511104a0", size = 4592289 }, - { url = "https://files.pythonhosted.org/packages/5a/33/229858f8a5bb22f82468bb285e9f4c44a31978d5f5830bb4ea1cf8a4e454/cryptography-46.0.1-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:84ef1f145de5aee82ea2447224dc23f065ff4cc5791bb3b506615957a6ba8128", size = 4301815 }, - { url = "https://files.pythonhosted.org/packages/52/cb/b76b2c87fbd6ed4a231884bea3ce073406ba8e2dae9defad910d33cbf408/cryptography-46.0.1-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9394c7d5a7565ac5f7d9ba38b2617448eba384d7b107b262d63890079fad77ca", size = 4943251 }, - { url = "https://files.pythonhosted.org/packages/94/0f/f66125ecf88e4cb5b8017ff43f3a87ede2d064cb54a1c5893f9da9d65093/cryptography-46.0.1-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:ed957044e368ed295257ae3d212b95456bd9756df490e1ac4538857f67531fcc", size = 4591247 }, - { url = "https://files.pythonhosted.org/packages/f6/22/9f3134ae436b63b463cfdf0ff506a0570da6873adb4bf8c19b8a5b4bac64/cryptography-46.0.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f7de12fa0eee6234de9a9ce0ffcfa6ce97361db7a50b09b65c63ac58e5f22fc7", size = 4428534 }, - { url = "https://files.pythonhosted.org/packages/89/39/e6042bcb2638650b0005c752c38ea830cbfbcbb1830e4d64d530000aa8dc/cryptography-46.0.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7fab1187b6c6b2f11a326f33b036f7168f5b996aedd0c059f9738915e4e8f53a", size = 4699541 }, - { url = "https://files.pythonhosted.org/packages/68/46/753d457492d15458c7b5a653fc9a84a1c9c7a83af6ebdc94c3fc373ca6e8/cryptography-46.0.1-cp38-abi3-win32.whl", hash = "sha256:45f790934ac1018adeba46a0f7289b2b8fe76ba774a88c7f1922213a56c98bc1", size = 3043779 }, - { url = "https://files.pythonhosted.org/packages/2f/50/b6f3b540c2f6ee712feeb5fa780bb11fad76634e71334718568e7695cb55/cryptography-46.0.1-cp38-abi3-win_amd64.whl", hash = "sha256:7176a5ab56fac98d706921f6416a05e5aff7df0e4b91516f450f8627cda22af3", size = 3517226 }, - { url = "https://files.pythonhosted.org/packages/ff/e8/77d17d00981cdd27cc493e81e1749a0b8bbfb843780dbd841e30d7f50743/cryptography-46.0.1-cp38-abi3-win_arm64.whl", hash = "sha256:efc9e51c3e595267ff84adf56e9b357db89ab2279d7e375ffcaf8f678606f3d9", size = 2923149 }, +sdist = { url = "https://files.pythonhosted.org/packages/a9/62/e3664e6ffd7743e1694b244dde70b43a394f6f7fbcacf7014a8ff5197c73/cryptography-46.0.1.tar.gz", hash = "sha256:ed570874e88f213437f5cf758f9ef26cbfc3f336d889b1e592ee11283bb8d1c7", size = 749198, upload_time = "2025-09-17T00:10:35.797Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/8c/44ee01267ec01e26e43ebfdae3f120ec2312aa72fa4c0507ebe41a26739f/cryptography-46.0.1-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:1cd6d50c1a8b79af1a6f703709d8973845f677c8e97b1268f5ff323d38ce8475", size = 7285044, upload_time = "2025-09-17T00:08:36.807Z" }, + { url = "https://files.pythonhosted.org/packages/22/59/9ae689a25047e0601adfcb159ec4f83c0b4149fdb5c3030cc94cd218141d/cryptography-46.0.1-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0ff483716be32690c14636e54a1f6e2e1b7bf8e22ca50b989f88fa1b2d287080", size = 4308182, upload_time = "2025-09-17T00:08:39.388Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ee/ca6cc9df7118f2fcd142c76b1da0f14340d77518c05b1ebfbbabca6b9e7d/cryptography-46.0.1-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9873bf7c1f2a6330bdfe8621e7ce64b725784f9f0c3a6a55c3047af5849f920e", size = 4572393, upload_time = "2025-09-17T00:08:41.663Z" }, + { url = "https://files.pythonhosted.org/packages/7f/a3/0f5296f63815d8e985922b05c31f77ce44787b3127a67c0b7f70f115c45f/cryptography-46.0.1-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:0dfb7c88d4462a0cfdd0d87a3c245a7bc3feb59de101f6ff88194f740f72eda6", size = 4308400, upload_time = "2025-09-17T00:08:43.559Z" }, + { url = "https://files.pythonhosted.org/packages/5d/8c/74fcda3e4e01be1d32775d5b4dd841acaac3c1b8fa4d0774c7ac8d52463d/cryptography-46.0.1-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:e22801b61613ebdebf7deb18b507919e107547a1d39a3b57f5f855032dd7cfb8", size = 4015786, upload_time = "2025-09-17T00:08:45.758Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b8/85d23287baeef273b0834481a3dd55bbed3a53587e3b8d9f0898235b8f91/cryptography-46.0.1-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:757af4f6341ce7a1e47c326ca2a81f41d236070217e5fbbad61bbfe299d55d28", size = 4982606, upload_time = "2025-09-17T00:08:47.602Z" }, + { url = "https://files.pythonhosted.org/packages/e5/d3/de61ad5b52433b389afca0bc70f02a7a1f074651221f599ce368da0fe437/cryptography-46.0.1-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:f7a24ea78de345cfa7f6a8d3bde8b242c7fac27f2bd78fa23474ca38dfaeeab9", size = 4604234, upload_time = "2025-09-17T00:08:49.879Z" }, + { url = "https://files.pythonhosted.org/packages/dc/1f/dbd4d6570d84748439237a7478d124ee0134bf166ad129267b7ed8ea6d22/cryptography-46.0.1-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:9e8776dac9e660c22241b6587fae51a67b4b0147daa4d176b172c3ff768ad736", size = 4307669, upload_time = "2025-09-17T00:08:52.321Z" }, + { url = "https://files.pythonhosted.org/packages/ec/fd/ca0a14ce7f0bfe92fa727aacaf2217eb25eb7e4ed513b14d8e03b26e63ed/cryptography-46.0.1-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9f40642a140c0c8649987027867242b801486865277cbabc8c6059ddef16dc8b", size = 4947579, upload_time = "2025-09-17T00:08:54.697Z" }, + { url = "https://files.pythonhosted.org/packages/89/6b/09c30543bb93401f6f88fce556b3bdbb21e55ae14912c04b7bf355f5f96c/cryptography-46.0.1-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:449ef2b321bec7d97ef2c944173275ebdab78f3abdd005400cc409e27cd159ab", size = 4603669, upload_time = "2025-09-17T00:08:57.16Z" }, + { url = "https://files.pythonhosted.org/packages/23/9a/38cb01cb09ce0adceda9fc627c9cf98eb890fc8d50cacbe79b011df20f8a/cryptography-46.0.1-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:2dd339ba3345b908fa3141ddba4025568fa6fd398eabce3ef72a29ac2d73ad75", size = 4435828, upload_time = "2025-09-17T00:08:59.606Z" }, + { url = "https://files.pythonhosted.org/packages/0f/53/435b5c36a78d06ae0bef96d666209b0ecd8f8181bfe4dda46536705df59e/cryptography-46.0.1-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7411c910fb2a412053cf33cfad0153ee20d27e256c6c3f14d7d7d1d9fec59fd5", size = 4709553, upload_time = "2025-09-17T00:09:01.832Z" }, + { url = "https://files.pythonhosted.org/packages/f5/c4/0da6e55595d9b9cd3b6eb5dc22f3a07ded7f116a3ea72629cab595abb804/cryptography-46.0.1-cp311-abi3-win32.whl", hash = "sha256:cbb8e769d4cac884bb28e3ff620ef1001b75588a5c83c9c9f1fdc9afbe7f29b0", size = 3058327, upload_time = "2025-09-17T00:09:03.726Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/cd29a35e0d6e78a0ee61793564c8cff0929c38391cb0de27627bdc7525aa/cryptography-46.0.1-cp311-abi3-win_amd64.whl", hash = "sha256:92e8cfe8bd7dd86eac0a677499894862cd5cc2fd74de917daa881d00871ac8e7", size = 3523893, upload_time = "2025-09-17T00:09:06.272Z" }, + { url = "https://files.pythonhosted.org/packages/f2/dd/eea390f3e78432bc3d2f53952375f8b37cb4d37783e626faa6a51e751719/cryptography-46.0.1-cp311-abi3-win_arm64.whl", hash = "sha256:db5597a4c7353b2e5fb05a8e6cb74b56a4658a2b7bf3cb6b1821ae7e7fd6eaa0", size = 2932145, upload_time = "2025-09-17T00:09:08.568Z" }, + { url = "https://files.pythonhosted.org/packages/0a/fb/c73588561afcd5e24b089952bd210b14676c0c5bf1213376350ae111945c/cryptography-46.0.1-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:4c49eda9a23019e11d32a0eb51a27b3e7ddedde91e099c0ac6373e3aacc0d2ee", size = 7193928, upload_time = "2025-09-17T00:09:10.595Z" }, + { url = "https://files.pythonhosted.org/packages/26/34/0ff0bb2d2c79f25a2a63109f3b76b9108a906dd2a2eb5c1d460b9938adbb/cryptography-46.0.1-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9babb7818fdd71394e576cf26c5452df77a355eac1a27ddfa24096665a27f8fd", size = 4293515, upload_time = "2025-09-17T00:09:12.861Z" }, + { url = "https://files.pythonhosted.org/packages/df/b7/d4f848aee24ecd1be01db6c42c4a270069a4f02a105d9c57e143daf6cf0f/cryptography-46.0.1-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9f2c4cc63be3ef43c0221861177cee5d14b505cd4d4599a89e2cd273c4d3542a", size = 4545619, upload_time = "2025-09-17T00:09:15.397Z" }, + { url = "https://files.pythonhosted.org/packages/44/a5/42fedefc754fd1901e2d95a69815ea4ec8a9eed31f4c4361fcab80288661/cryptography-46.0.1-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:41c281a74df173876da1dc9a9b6953d387f06e3d3ed9284e3baae3ab3f40883a", size = 4299160, upload_time = "2025-09-17T00:09:17.155Z" }, + { url = "https://files.pythonhosted.org/packages/86/a1/cd21174f56e769c831fbbd6399a1b7519b0ff6280acec1b826d7b072640c/cryptography-46.0.1-cp314-cp314t-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:0a17377fa52563d730248ba1f68185461fff36e8bc75d8787a7dd2e20a802b7a", size = 3994491, upload_time = "2025-09-17T00:09:18.971Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2f/a8cbfa1c029987ddc746fd966711d4fa71efc891d37fbe9f030fe5ab4eec/cryptography-46.0.1-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:0d1922d9280e08cde90b518a10cd66831f632960a8d08cb3418922d83fce6f12", size = 4960157, upload_time = "2025-09-17T00:09:20.923Z" }, + { url = "https://files.pythonhosted.org/packages/67/ae/63a84e6789e0d5a2502edf06b552bcb0fa9ff16147265d5c44a211942abe/cryptography-46.0.1-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:af84e8e99f1a82cea149e253014ea9dc89f75b82c87bb6c7242203186f465129", size = 4577263, upload_time = "2025-09-17T00:09:23.356Z" }, + { url = "https://files.pythonhosted.org/packages/ef/8f/1b9fa8e92bd9cbcb3b7e1e593a5232f2c1e6f9bd72b919c1a6b37d315f92/cryptography-46.0.1-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:ef648d2c690703501714588b2ba640facd50fd16548133b11b2859e8655a69da", size = 4298703, upload_time = "2025-09-17T00:09:25.566Z" }, + { url = "https://files.pythonhosted.org/packages/c3/af/bb95db070e73fea3fae31d8a69ac1463d89d1c084220f549b00dd01094a8/cryptography-46.0.1-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:e94eb5fa32a8a9f9bf991f424f002913e3dd7c699ef552db9b14ba6a76a6313b", size = 4926363, upload_time = "2025-09-17T00:09:27.451Z" }, + { url = "https://files.pythonhosted.org/packages/f5/3b/d8fb17ffeb3a83157a1cc0aa5c60691d062aceecba09c2e5e77ebfc1870c/cryptography-46.0.1-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:534b96c0831855e29fc3b069b085fd185aa5353033631a585d5cd4dd5d40d657", size = 4576958, upload_time = "2025-09-17T00:09:29.924Z" }, + { url = "https://files.pythonhosted.org/packages/d9/46/86bc3a05c10c8aa88c8ae7e953a8b4e407c57823ed201dbcba55c4d655f4/cryptography-46.0.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:f9b55038b5c6c47559aa33626d8ecd092f354e23de3c6975e4bb205df128a2a0", size = 4422507, upload_time = "2025-09-17T00:09:32.222Z" }, + { url = "https://files.pythonhosted.org/packages/a8/4e/387e5a21dfd2b4198e74968a541cfd6128f66f8ec94ed971776e15091ac3/cryptography-46.0.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:ec13b7105117dbc9afd023300fb9954d72ca855c274fe563e72428ece10191c0", size = 4683964, upload_time = "2025-09-17T00:09:34.118Z" }, + { url = "https://files.pythonhosted.org/packages/25/a3/f9f5907b166adb8f26762071474b38bbfcf89858a5282f032899075a38a1/cryptography-46.0.1-cp314-cp314t-win32.whl", hash = "sha256:504e464944f2c003a0785b81668fe23c06f3b037e9cb9f68a7c672246319f277", size = 3029705, upload_time = "2025-09-17T00:09:36.381Z" }, + { url = "https://files.pythonhosted.org/packages/12/66/4d3a4f1850db2e71c2b1628d14b70b5e4c1684a1bd462f7fffb93c041c38/cryptography-46.0.1-cp314-cp314t-win_amd64.whl", hash = "sha256:c52fded6383f7e20eaf70a60aeddd796b3677c3ad2922c801be330db62778e05", size = 3502175, upload_time = "2025-09-17T00:09:38.261Z" }, + { url = "https://files.pythonhosted.org/packages/52/c7/9f10ad91435ef7d0d99a0b93c4360bea3df18050ff5b9038c489c31ac2f5/cryptography-46.0.1-cp314-cp314t-win_arm64.whl", hash = "sha256:9495d78f52c804b5ec8878b5b8c7873aa8e63db9cd9ee387ff2db3fffe4df784", size = 2912354, upload_time = "2025-09-17T00:09:40.078Z" }, + { url = "https://files.pythonhosted.org/packages/98/e5/fbd632385542a3311915976f88e0dfcf09e62a3fc0aff86fb6762162a24d/cryptography-46.0.1-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:d84c40bdb8674c29fa192373498b6cb1e84f882889d21a471b45d1f868d8d44b", size = 7255677, upload_time = "2025-09-17T00:09:42.407Z" }, + { url = "https://files.pythonhosted.org/packages/56/3e/13ce6eab9ad6eba1b15a7bd476f005a4c1b3f299f4c2f32b22408b0edccf/cryptography-46.0.1-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9ed64e5083fa806709e74fc5ea067dfef9090e5b7a2320a49be3c9df3583a2d8", size = 4301110, upload_time = "2025-09-17T00:09:45.614Z" }, + { url = "https://files.pythonhosted.org/packages/a2/67/65dc233c1ddd688073cf7b136b06ff4b84bf517ba5529607c9d79720fc67/cryptography-46.0.1-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:341fb7a26bc9d6093c1b124b9f13acc283d2d51da440b98b55ab3f79f2522ead", size = 4562369, upload_time = "2025-09-17T00:09:47.601Z" }, + { url = "https://files.pythonhosted.org/packages/17/db/d64ae4c6f4e98c3dac5bf35dd4d103f4c7c345703e43560113e5e8e31b2b/cryptography-46.0.1-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6ef1488967e729948d424d09c94753d0167ce59afba8d0f6c07a22b629c557b2", size = 4302126, upload_time = "2025-09-17T00:09:49.335Z" }, + { url = "https://files.pythonhosted.org/packages/3d/19/5f1eea17d4805ebdc2e685b7b02800c4f63f3dd46cfa8d4c18373fea46c8/cryptography-46.0.1-cp38-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7823bc7cdf0b747ecfb096d004cc41573c2f5c7e3a29861603a2871b43d3ef32", size = 4009431, upload_time = "2025-09-17T00:09:51.239Z" }, + { url = "https://files.pythonhosted.org/packages/81/b5/229ba6088fe7abccbfe4c5edb96c7a5ad547fac5fdd0d40aa6ea540b2985/cryptography-46.0.1-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:f736ab8036796f5a119ff8211deda416f8c15ce03776db704a7a4e17381cb2ef", size = 4980739, upload_time = "2025-09-17T00:09:54.181Z" }, + { url = "https://files.pythonhosted.org/packages/3a/9c/50aa38907b201e74bc43c572f9603fa82b58e831bd13c245613a23cff736/cryptography-46.0.1-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:e46710a240a41d594953012213ea8ca398cd2448fbc5d0f1be8160b5511104a0", size = 4592289, upload_time = "2025-09-17T00:09:56.731Z" }, + { url = "https://files.pythonhosted.org/packages/5a/33/229858f8a5bb22f82468bb285e9f4c44a31978d5f5830bb4ea1cf8a4e454/cryptography-46.0.1-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:84ef1f145de5aee82ea2447224dc23f065ff4cc5791bb3b506615957a6ba8128", size = 4301815, upload_time = "2025-09-17T00:09:58.548Z" }, + { url = "https://files.pythonhosted.org/packages/52/cb/b76b2c87fbd6ed4a231884bea3ce073406ba8e2dae9defad910d33cbf408/cryptography-46.0.1-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:9394c7d5a7565ac5f7d9ba38b2617448eba384d7b107b262d63890079fad77ca", size = 4943251, upload_time = "2025-09-17T00:10:00.475Z" }, + { url = "https://files.pythonhosted.org/packages/94/0f/f66125ecf88e4cb5b8017ff43f3a87ede2d064cb54a1c5893f9da9d65093/cryptography-46.0.1-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:ed957044e368ed295257ae3d212b95456bd9756df490e1ac4538857f67531fcc", size = 4591247, upload_time = "2025-09-17T00:10:02.874Z" }, + { url = "https://files.pythonhosted.org/packages/f6/22/9f3134ae436b63b463cfdf0ff506a0570da6873adb4bf8c19b8a5b4bac64/cryptography-46.0.1-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:f7de12fa0eee6234de9a9ce0ffcfa6ce97361db7a50b09b65c63ac58e5f22fc7", size = 4428534, upload_time = "2025-09-17T00:10:04.994Z" }, + { url = "https://files.pythonhosted.org/packages/89/39/e6042bcb2638650b0005c752c38ea830cbfbcbb1830e4d64d530000aa8dc/cryptography-46.0.1-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:7fab1187b6c6b2f11a326f33b036f7168f5b996aedd0c059f9738915e4e8f53a", size = 4699541, upload_time = "2025-09-17T00:10:06.925Z" }, + { url = "https://files.pythonhosted.org/packages/68/46/753d457492d15458c7b5a653fc9a84a1c9c7a83af6ebdc94c3fc373ca6e8/cryptography-46.0.1-cp38-abi3-win32.whl", hash = "sha256:45f790934ac1018adeba46a0f7289b2b8fe76ba774a88c7f1922213a56c98bc1", size = 3043779, upload_time = "2025-09-17T00:10:08.951Z" }, + { url = "https://files.pythonhosted.org/packages/2f/50/b6f3b540c2f6ee712feeb5fa780bb11fad76634e71334718568e7695cb55/cryptography-46.0.1-cp38-abi3-win_amd64.whl", hash = "sha256:7176a5ab56fac98d706921f6416a05e5aff7df0e4b91516f450f8627cda22af3", size = 3517226, upload_time = "2025-09-17T00:10:10.769Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e8/77d17d00981cdd27cc493e81e1749a0b8bbfb843780dbd841e30d7f50743/cryptography-46.0.1-cp38-abi3-win_arm64.whl", hash = "sha256:efc9e51c3e595267ff84adf56e9b357db89ab2279d7e375ffcaf8f678606f3d9", size = 2923149, upload_time = "2025-09-17T00:10:13.236Z" }, ] [[package]] name = "csscompressor" version = "0.9.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/2a/8c3ac3d8bc94e6de8d7ae270bb5bc437b210bb9d6d9e46630c98f4abd20c/csscompressor-0.9.5.tar.gz", hash = "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05", size = 237808 } +sdist = { url = "https://files.pythonhosted.org/packages/f1/2a/8c3ac3d8bc94e6de8d7ae270bb5bc437b210bb9d6d9e46630c98f4abd20c/csscompressor-0.9.5.tar.gz", hash = "sha256:afa22badbcf3120a4f392e4d22f9fff485c044a1feda4a950ecc5eba9dd31a05", size = 237808, upload_time = "2017-11-26T21:13:08.238Z" } [[package]] name = "cssselect2" @@ -445,102 +458,111 @@ dependencies = [ { name = "tinycss2" }, { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9f/86/fd7f58fc498b3166f3a7e8e0cddb6e620fe1da35b02248b1bd59e95dbaaa/cssselect2-0.8.0.tar.gz", hash = "sha256:7674ffb954a3b46162392aee2a3a0aedb2e14ecf99fcc28644900f4e6e3e9d3a", size = 35716 } +sdist = { url = "https://files.pythonhosted.org/packages/9f/86/fd7f58fc498b3166f3a7e8e0cddb6e620fe1da35b02248b1bd59e95dbaaa/cssselect2-0.8.0.tar.gz", hash = "sha256:7674ffb954a3b46162392aee2a3a0aedb2e14ecf99fcc28644900f4e6e3e9d3a", size = 35716, upload_time = "2025-03-05T14:46:07.988Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/e7/aa315e6a749d9b96c2504a1ba0ba031ba2d0517e972ce22682e3fccecb09/cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e", size = 15454 }, + { url = "https://files.pythonhosted.org/packages/0f/e7/aa315e6a749d9b96c2504a1ba0ba031ba2d0517e972ce22682e3fccecb09/cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e", size = 15454, upload_time = "2025-03-05T14:46:06.463Z" }, ] [[package]] name = "debugpy" version = "1.8.17" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/15/ad/71e708ff4ca377c4230530d6a7aa7992592648c122a2cd2b321cf8b35a76/debugpy-1.8.17.tar.gz", hash = "sha256:fd723b47a8c08892b1a16b2c6239a8b96637c62a59b94bb5dab4bac592a58a8e", size = 1644129 } +sdist = { url = "https://files.pythonhosted.org/packages/15/ad/71e708ff4ca377c4230530d6a7aa7992592648c122a2cd2b321cf8b35a76/debugpy-1.8.17.tar.gz", hash = "sha256:fd723b47a8c08892b1a16b2c6239a8b96637c62a59b94bb5dab4bac592a58a8e", size = 1644129, upload_time = "2025-09-17T16:33:20.633Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/2b/9d8e65beb2751876c82e1aceb32f328c43ec872711fa80257c7674f45650/debugpy-1.8.17-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:f14467edef672195c6f6b8e27ce5005313cb5d03c9239059bc7182b60c176e2d", size = 2549522 }, - { url = "https://files.pythonhosted.org/packages/b4/78/eb0d77f02971c05fca0eb7465b18058ba84bd957062f5eec82f941ac792a/debugpy-1.8.17-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:24693179ef9dfa20dca8605905a42b392be56d410c333af82f1c5dff807a64cc", size = 4309417 }, - { url = "https://files.pythonhosted.org/packages/37/42/c40f1d8cc1fed1e75ea54298a382395b8b937d923fcf41ab0797a554f555/debugpy-1.8.17-cp312-cp312-win32.whl", hash = "sha256:6a4e9dacf2cbb60d2514ff7b04b4534b0139facbf2abdffe0639ddb6088e59cf", size = 5277130 }, - { url = "https://files.pythonhosted.org/packages/72/22/84263b205baad32b81b36eac076de0cdbe09fe2d0637f5b32243dc7c925b/debugpy-1.8.17-cp312-cp312-win_amd64.whl", hash = "sha256:e8f8f61c518952fb15f74a302e068b48d9c4691768ade433e4adeea961993464", size = 5319053 }, - { url = "https://files.pythonhosted.org/packages/50/76/597e5cb97d026274ba297af8d89138dfd9e695767ba0e0895edb20963f40/debugpy-1.8.17-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:857c1dd5d70042502aef1c6d1c2801211f3ea7e56f75e9c335f434afb403e464", size = 2538386 }, - { url = "https://files.pythonhosted.org/packages/5f/60/ce5c34fcdfec493701f9d1532dba95b21b2f6394147234dce21160bd923f/debugpy-1.8.17-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:3bea3b0b12f3946e098cce9b43c3c46e317b567f79570c3f43f0b96d00788088", size = 4292100 }, - { url = "https://files.pythonhosted.org/packages/e8/95/7873cf2146577ef71d2a20bf553f12df865922a6f87b9e8ee1df04f01785/debugpy-1.8.17-cp313-cp313-win32.whl", hash = "sha256:e34ee844c2f17b18556b5bbe59e1e2ff4e86a00282d2a46edab73fd7f18f4a83", size = 5277002 }, - { url = "https://files.pythonhosted.org/packages/46/11/18c79a1cee5ff539a94ec4aa290c1c069a5580fd5cfd2fb2e282f8e905da/debugpy-1.8.17-cp313-cp313-win_amd64.whl", hash = "sha256:6c5cd6f009ad4fca8e33e5238210dc1e5f42db07d4b6ab21ac7ffa904a196420", size = 5319047 }, - { url = "https://files.pythonhosted.org/packages/de/45/115d55b2a9da6de812696064ceb505c31e952c5d89c4ed1d9bb983deec34/debugpy-1.8.17-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:045290c010bcd2d82bc97aa2daf6837443cd52f6328592698809b4549babcee1", size = 2536899 }, - { url = "https://files.pythonhosted.org/packages/5a/73/2aa00c7f1f06e997ef57dc9b23d61a92120bec1437a012afb6d176585197/debugpy-1.8.17-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:b69b6bd9dba6a03632534cdf67c760625760a215ae289f7489a452af1031fe1f", size = 4268254 }, - { url = "https://files.pythonhosted.org/packages/86/b5/ed3e65c63c68a6634e3ba04bd10255c8e46ec16ebed7d1c79e4816d8a760/debugpy-1.8.17-cp314-cp314-win32.whl", hash = "sha256:5c59b74aa5630f3a5194467100c3b3d1c77898f9ab27e3f7dc5d40fc2f122670", size = 5277203 }, - { url = "https://files.pythonhosted.org/packages/b0/26/394276b71c7538445f29e792f589ab7379ae70fd26ff5577dfde71158e96/debugpy-1.8.17-cp314-cp314-win_amd64.whl", hash = "sha256:893cba7bb0f55161de4365584b025f7064e1f88913551bcd23be3260b231429c", size = 5318493 }, - { url = "https://files.pythonhosted.org/packages/b0/d0/89247ec250369fc76db477720a26b2fce7ba079ff1380e4ab4529d2fe233/debugpy-1.8.17-py2.py3-none-any.whl", hash = "sha256:60c7dca6571efe660ccb7a9508d73ca14b8796c4ed484c2002abba714226cfef", size = 5283210 }, + { url = "https://files.pythonhosted.org/packages/08/2b/9d8e65beb2751876c82e1aceb32f328c43ec872711fa80257c7674f45650/debugpy-1.8.17-cp312-cp312-macosx_15_0_universal2.whl", hash = "sha256:f14467edef672195c6f6b8e27ce5005313cb5d03c9239059bc7182b60c176e2d", size = 2549522, upload_time = "2025-09-17T16:33:38.466Z" }, + { url = "https://files.pythonhosted.org/packages/b4/78/eb0d77f02971c05fca0eb7465b18058ba84bd957062f5eec82f941ac792a/debugpy-1.8.17-cp312-cp312-manylinux_2_34_x86_64.whl", hash = "sha256:24693179ef9dfa20dca8605905a42b392be56d410c333af82f1c5dff807a64cc", size = 4309417, upload_time = "2025-09-17T16:33:41.299Z" }, + { url = "https://files.pythonhosted.org/packages/37/42/c40f1d8cc1fed1e75ea54298a382395b8b937d923fcf41ab0797a554f555/debugpy-1.8.17-cp312-cp312-win32.whl", hash = "sha256:6a4e9dacf2cbb60d2514ff7b04b4534b0139facbf2abdffe0639ddb6088e59cf", size = 5277130, upload_time = "2025-09-17T16:33:43.554Z" }, + { url = "https://files.pythonhosted.org/packages/72/22/84263b205baad32b81b36eac076de0cdbe09fe2d0637f5b32243dc7c925b/debugpy-1.8.17-cp312-cp312-win_amd64.whl", hash = "sha256:e8f8f61c518952fb15f74a302e068b48d9c4691768ade433e4adeea961993464", size = 5319053, upload_time = "2025-09-17T16:33:53.033Z" }, + { url = "https://files.pythonhosted.org/packages/50/76/597e5cb97d026274ba297af8d89138dfd9e695767ba0e0895edb20963f40/debugpy-1.8.17-cp313-cp313-macosx_15_0_universal2.whl", hash = "sha256:857c1dd5d70042502aef1c6d1c2801211f3ea7e56f75e9c335f434afb403e464", size = 2538386, upload_time = "2025-09-17T16:33:54.594Z" }, + { url = "https://files.pythonhosted.org/packages/5f/60/ce5c34fcdfec493701f9d1532dba95b21b2f6394147234dce21160bd923f/debugpy-1.8.17-cp313-cp313-manylinux_2_34_x86_64.whl", hash = "sha256:3bea3b0b12f3946e098cce9b43c3c46e317b567f79570c3f43f0b96d00788088", size = 4292100, upload_time = "2025-09-17T16:33:56.353Z" }, + { url = "https://files.pythonhosted.org/packages/e8/95/7873cf2146577ef71d2a20bf553f12df865922a6f87b9e8ee1df04f01785/debugpy-1.8.17-cp313-cp313-win32.whl", hash = "sha256:e34ee844c2f17b18556b5bbe59e1e2ff4e86a00282d2a46edab73fd7f18f4a83", size = 5277002, upload_time = "2025-09-17T16:33:58.231Z" }, + { url = "https://files.pythonhosted.org/packages/46/11/18c79a1cee5ff539a94ec4aa290c1c069a5580fd5cfd2fb2e282f8e905da/debugpy-1.8.17-cp313-cp313-win_amd64.whl", hash = "sha256:6c5cd6f009ad4fca8e33e5238210dc1e5f42db07d4b6ab21ac7ffa904a196420", size = 5319047, upload_time = "2025-09-17T16:34:00.586Z" }, + { url = "https://files.pythonhosted.org/packages/de/45/115d55b2a9da6de812696064ceb505c31e952c5d89c4ed1d9bb983deec34/debugpy-1.8.17-cp314-cp314-macosx_15_0_universal2.whl", hash = "sha256:045290c010bcd2d82bc97aa2daf6837443cd52f6328592698809b4549babcee1", size = 2536899, upload_time = "2025-09-17T16:34:02.657Z" }, + { url = "https://files.pythonhosted.org/packages/5a/73/2aa00c7f1f06e997ef57dc9b23d61a92120bec1437a012afb6d176585197/debugpy-1.8.17-cp314-cp314-manylinux_2_34_x86_64.whl", hash = "sha256:b69b6bd9dba6a03632534cdf67c760625760a215ae289f7489a452af1031fe1f", size = 4268254, upload_time = "2025-09-17T16:34:04.486Z" }, + { url = "https://files.pythonhosted.org/packages/86/b5/ed3e65c63c68a6634e3ba04bd10255c8e46ec16ebed7d1c79e4816d8a760/debugpy-1.8.17-cp314-cp314-win32.whl", hash = "sha256:5c59b74aa5630f3a5194467100c3b3d1c77898f9ab27e3f7dc5d40fc2f122670", size = 5277203, upload_time = "2025-09-17T16:34:06.65Z" }, + { url = "https://files.pythonhosted.org/packages/b0/26/394276b71c7538445f29e792f589ab7379ae70fd26ff5577dfde71158e96/debugpy-1.8.17-cp314-cp314-win_amd64.whl", hash = "sha256:893cba7bb0f55161de4365584b025f7064e1f88913551bcd23be3260b231429c", size = 5318493, upload_time = "2025-09-17T16:34:08.483Z" }, + { url = "https://files.pythonhosted.org/packages/b0/d0/89247ec250369fc76db477720a26b2fce7ba079ff1380e4ab4529d2fe233/debugpy-1.8.17-py2.py3-none-any.whl", hash = "sha256:60c7dca6571efe660ccb7a9508d73ca14b8796c4ed484c2002abba714226cfef", size = 5283210, upload_time = "2025-09-17T16:34:25.835Z" }, ] [[package]] name = "decorator" version = "5.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload_time = "2025-02-24T04:41:34.073Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 }, + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload_time = "2025-02-24T04:41:32.565Z" }, ] [[package]] name = "defusedxml" version = "0.7.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload_time = "2021-03-08T10:59:26.269Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload_time = "2021-03-08T10:59:24.45Z" }, +] + +[[package]] +name = "diskcache" +version = "5.6.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/21/1c1ffc1a039ddcc459db43cc108658f32c57d271d7289a2794e401d0fdb6/diskcache-5.6.3.tar.gz", hash = "sha256:2c3a3fa2743d8535d832ec61c2054a1641f41775aa7c556758a109941e33e4fc", size = 67916, upload_time = "2023-08-31T06:12:00.316Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/27/4570e78fc0bf5ea0ca45eb1de3818a23787af9b390c0b0a0033a1b8236f9/diskcache-5.6.3-py3-none-any.whl", hash = "sha256:5e31b2d5fbad117cc363ebaf6b689474db18a1f6438bc82358b024abd4c2ca19", size = 45550, upload_time = "2023-08-31T06:11:58.822Z" }, ] [[package]] name = "distlib" version = "0.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605 } +sdist = { url = "https://files.pythonhosted.org/packages/96/8e/709914eb2b5749865801041647dc7f4e6d00b549cfe88b65ca192995f07c/distlib-0.4.0.tar.gz", hash = "sha256:feec40075be03a04501a973d81f633735b4b69f98b05450592310c0f401a4e0d", size = 614605, upload_time = "2025-07-17T16:52:00.465Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047 }, + { url = "https://files.pythonhosted.org/packages/33/6b/e0547afaf41bf2c42e52430072fa5658766e3d65bd4b03a563d1b6336f57/distlib-0.4.0-py2.py3-none-any.whl", hash = "sha256:9659f7d87e46584a30b5780e43ac7a2143098441670ff0a49d5f9034c54a6c16", size = 469047, upload_time = "2025-07-17T16:51:58.613Z" }, ] [[package]] name = "et-xmlfile" version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234 } +sdist = { url = "https://files.pythonhosted.org/packages/d3/38/af70d7ab1ae9d4da450eeec1fa3918940a5fafb9055e934af8d6eb0c2313/et_xmlfile-2.0.0.tar.gz", hash = "sha256:dab3f4764309081ce75662649be815c4c9081e88f0837825f90fd28317d4da54", size = 17234, upload_time = "2024-10-25T17:25:40.039Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059 }, + { url = "https://files.pythonhosted.org/packages/c1/8b/5fe2cc11fee489817272089c4203e679c63b570a5aaeb18d852ae3cbba6a/et_xmlfile-2.0.0-py3-none-any.whl", hash = "sha256:7a91720bc756843502c3b7504c77b8fe44217c85c537d85037f0f536151b2caa", size = 18059, upload_time = "2024-10-25T17:25:39.051Z" }, ] [[package]] name = "execnet" version = "2.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/ff/b4c0dc78fbe20c3e59c0c7334de0c27eb4001a2b2017999af398bf730817/execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3", size = 166524 } +sdist = { url = "https://files.pythonhosted.org/packages/bb/ff/b4c0dc78fbe20c3e59c0c7334de0c27eb4001a2b2017999af398bf730817/execnet-2.1.1.tar.gz", hash = "sha256:5189b52c6121c24feae288166ab41b32549c7e2348652736540b9e6e7d4e72e3", size = 166524, upload_time = "2024-04-08T09:04:19.245Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/43/09/2aea36ff60d16dd8879bdb2f5b3ee0ba8d08cbbdcdfe870e695ce3784385/execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc", size = 40612 }, + { url = "https://files.pythonhosted.org/packages/43/09/2aea36ff60d16dd8879bdb2f5b3ee0ba8d08cbbdcdfe870e695ce3784385/execnet-2.1.1-py3-none-any.whl", hash = "sha256:26dee51f1b80cebd6d0ca8e74dd8745419761d3bef34163928cbebbdc4749fdc", size = 40612, upload_time = "2024-04-08T09:04:17.414Z" }, ] [[package]] name = "executing" version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488 } +sdist = { url = "https://files.pythonhosted.org/packages/cc/28/c14e053b6762b1044f34a13aab6859bbf40456d37d23aa286ac24cfd9a5d/executing-2.2.1.tar.gz", hash = "sha256:3632cc370565f6648cc328b32435bd120a1e4ebb20c77e3fdde9a13cd1e533c4", size = 1129488, upload_time = "2025-09-01T09:48:10.866Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317 }, + { url = "https://files.pythonhosted.org/packages/c1/ea/53f2148663b321f21b5a606bd5f191517cf40b7072c0497d3c92c4a13b1e/executing-2.2.1-py2.py3-none-any.whl", hash = "sha256:760643d3452b4d777d295bb167ccc74c64a81df23fb5e08eff250c425a4b2017", size = 28317, upload_time = "2025-09-01T09:48:08.5Z" }, ] [[package]] name = "fastjsonschema" version = "2.21.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/b5/23b216d9d985a956623b6bd12d4086b60f0059b27799f23016af04a74ea1/fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de", size = 374130 } +sdist = { url = "https://files.pythonhosted.org/packages/20/b5/23b216d9d985a956623b6bd12d4086b60f0059b27799f23016af04a74ea1/fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de", size = 374130, upload_time = "2025-08-14T18:49:36.666Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024 }, + { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024, upload_time = "2025-08-14T18:49:34.776Z" }, ] [[package]] name = "filelock" version = "3.19.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/40/bb/0ab3e58d22305b6f5440629d20683af28959bf793d98d11950e305c1c326/filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58", size = 17687 } +sdist = { url = "https://files.pythonhosted.org/packages/40/bb/0ab3e58d22305b6f5440629d20683af28959bf793d98d11950e305c1c326/filelock-3.19.1.tar.gz", hash = "sha256:66eda1888b0171c998b35be2bcc0f6d75c388a7ce20c3f3f37aa8e96c2dddf58", size = 17687, upload_time = "2025-08-14T16:56:03.016Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/42/14/42b2651a2f46b022ccd948bca9f2d5af0fd8929c4eec235b8d6d844fbe67/filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d", size = 15988 }, + { url = "https://files.pythonhosted.org/packages/42/14/42b2651a2f46b022ccd948bca9f2d5af0fd8929c4eec235b8d6d844fbe67/filelock-3.19.1-py3-none-any.whl", hash = "sha256:d38e30481def20772f5baf097c122c3babc4fcdb7e14e57049eb9d88c6dc017d", size = 15988, upload_time = "2025-08-14T16:56:01.633Z" }, ] [[package]] @@ -550,9 +572,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/b0/8a21e330561c65653d010ef112bf38f60890051d244ede197ddaa08e50c1/flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656", size = 15816 } +sdist = { url = "https://files.pythonhosted.org/packages/55/b0/8a21e330561c65653d010ef112bf38f60890051d244ede197ddaa08e50c1/flexcache-0.3.tar.gz", hash = "sha256:18743bd5a0621bfe2cf8d519e4c3bfdf57a269c15d1ced3fb4b64e0ff4600656", size = 15816, upload_time = "2024-03-09T03:21:07.555Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/27/cd/c883e1a7c447479d6e13985565080e3fea88ab5a107c21684c813dba1875/flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32", size = 13263 }, + { url = "https://files.pythonhosted.org/packages/27/cd/c883e1a7c447479d6e13985565080e3fea88ab5a107c21684c813dba1875/flexcache-0.3-py3-none-any.whl", hash = "sha256:d43c9fea82336af6e0115e308d9d33a185390b8346a017564611f1466dcd2e32", size = 13263, upload_time = "2024-03-09T03:21:05.635Z" }, ] [[package]] @@ -562,9 +584,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/82/99/b4de7e39e8eaf8207ba1a8fa2241dd98b2ba72ae6e16960d8351736d8702/flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2", size = 31799 } +sdist = { url = "https://files.pythonhosted.org/packages/82/99/b4de7e39e8eaf8207ba1a8fa2241dd98b2ba72ae6e16960d8351736d8702/flexparser-0.4.tar.gz", hash = "sha256:266d98905595be2ccc5da964fe0a2c3526fbbffdc45b65b3146d75db992ef6b2", size = 31799, upload_time = "2024-11-07T02:00:56.249Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/5e/3be305568fe5f34448807976dc82fc151d76c3e0e03958f34770286278c1/flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846", size = 27625 }, + { url = "https://files.pythonhosted.org/packages/fe/5e/3be305568fe5f34448807976dc82fc151d76c3e0e03958f34770286278c1/flexparser-0.4-py3-none-any.whl", hash = "sha256:3738b456192dcb3e15620f324c447721023c0293f6af9955b481e91d00179846", size = 27625, upload_time = "2024-11-07T02:00:54.523Z" }, ] [[package]] @@ -592,20 +614,20 @@ dependencies = [ { name = "typing-extensions" }, { name = "validators" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/11/d0/c94675a1c1b8c12fd68489e2b4a924f80a2b122199cd986c58a5136197d2/frictionless-5.18.1.tar.gz", hash = "sha256:daeaf55f896eeb52b43e62600466af9528fe0aeeebd28b1b917e13322f370a8b", size = 74372478 } +sdist = { url = "https://files.pythonhosted.org/packages/11/d0/c94675a1c1b8c12fd68489e2b4a924f80a2b122199cd986c58a5136197d2/frictionless-5.18.1.tar.gz", hash = "sha256:daeaf55f896eeb52b43e62600466af9528fe0aeeebd28b1b917e13322f370a8b", size = 74372478, upload_time = "2025-03-25T21:32:50.081Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/7a/dac76d31584bb4f874ae860490c9465f5b59bd8c110f68fbbb07aba48845/frictionless-5.18.1-py3-none-any.whl", hash = "sha256:3f4c87469a89bdb88e9cc318088553a26f3d14839098f95c183ea01fc89628dd", size = 531615 }, + { url = "https://files.pythonhosted.org/packages/a9/7a/dac76d31584bb4f874ae860490c9465f5b59bd8c110f68fbbb07aba48845/frictionless-5.18.1-py3-none-any.whl", hash = "sha256:3f4c87469a89bdb88e9cc318088553a26f3d14839098f95c183ea01fc89628dd", size = 531615, upload_time = "2025-03-25T21:32:45.534Z" }, ] [[package]] name = "frozendict" version = "2.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/59/19eb300ba28e7547538bdf603f1c6c34793240a90e1a7b61b65d8517e35e/frozendict-2.4.6.tar.gz", hash = "sha256:df7cd16470fbd26fc4969a208efadc46319334eb97def1ddf48919b351192b8e", size = 316416 } +sdist = { url = "https://files.pythonhosted.org/packages/bb/59/19eb300ba28e7547538bdf603f1c6c34793240a90e1a7b61b65d8517e35e/frozendict-2.4.6.tar.gz", hash = "sha256:df7cd16470fbd26fc4969a208efadc46319334eb97def1ddf48919b351192b8e", size = 316416, upload_time = "2024-10-13T12:15:32.449Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/13/d9839089b900fa7b479cce495d62110cddc4bd5630a04d8469916c0e79c5/frozendict-2.4.6-py311-none-any.whl", hash = "sha256:d065db6a44db2e2375c23eac816f1a022feb2fa98cbb50df44a9e83700accbea", size = 16148 }, - { url = "https://files.pythonhosted.org/packages/ba/d0/d482c39cee2ab2978a892558cf130681d4574ea208e162da8958b31e9250/frozendict-2.4.6-py312-none-any.whl", hash = "sha256:49344abe90fb75f0f9fdefe6d4ef6d4894e640fadab71f11009d52ad97f370b9", size = 16146 }, - { url = "https://files.pythonhosted.org/packages/a5/8e/b6bf6a0de482d7d7d7a2aaac8fdc4a4d0bb24a809f5ddd422aa7060eb3d2/frozendict-2.4.6-py313-none-any.whl", hash = "sha256:7134a2bb95d4a16556bb5f2b9736dceb6ea848fa5b6f3f6c2d6dba93b44b4757", size = 16146 }, + { url = "https://files.pythonhosted.org/packages/04/13/d9839089b900fa7b479cce495d62110cddc4bd5630a04d8469916c0e79c5/frozendict-2.4.6-py311-none-any.whl", hash = "sha256:d065db6a44db2e2375c23eac816f1a022feb2fa98cbb50df44a9e83700accbea", size = 16148, upload_time = "2024-10-13T12:15:26.839Z" }, + { url = "https://files.pythonhosted.org/packages/ba/d0/d482c39cee2ab2978a892558cf130681d4574ea208e162da8958b31e9250/frozendict-2.4.6-py312-none-any.whl", hash = "sha256:49344abe90fb75f0f9fdefe6d4ef6d4894e640fadab71f11009d52ad97f370b9", size = 16146, upload_time = "2024-10-13T12:15:28.16Z" }, + { url = "https://files.pythonhosted.org/packages/a5/8e/b6bf6a0de482d7d7d7a2aaac8fdc4a4d0bb24a809f5ddd422aa7060eb3d2/frozendict-2.4.6-py313-none-any.whl", hash = "sha256:7134a2bb95d4a16556bb5f2b9736dceb6ea848fa5b6f3f6c2d6dba93b44b4757", size = 16146, upload_time = "2024-10-13T12:15:29.495Z" }, ] [[package]] @@ -615,9 +637,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943, upload_time = "2022-05-02T15:47:16.11Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034, upload_time = "2022-05-02T15:47:14.552Z" }, ] [[package]] @@ -627,9 +649,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "smmap" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684 } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684, upload_time = "2025-01-02T07:20:46.413Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794 }, + { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794, upload_time = "2025-01-02T07:20:43.624Z" }, ] [[package]] @@ -639,9 +661,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "gitdb" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9a/c8/dd58967d119baab745caec2f9d853297cec1989ec1d63f677d3880632b88/gitpython-3.1.45.tar.gz", hash = "sha256:85b0ee964ceddf211c41b9f27a49086010a190fd8132a24e21f362a4b36a791c", size = 215076 } +sdist = { url = "https://files.pythonhosted.org/packages/9a/c8/dd58967d119baab745caec2f9d853297cec1989ec1d63f677d3880632b88/gitpython-3.1.45.tar.gz", hash = "sha256:85b0ee964ceddf211c41b9f27a49086010a190fd8132a24e21f362a4b36a791c", size = 215076, upload_time = "2025-07-24T03:45:54.871Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/61/d4b89fec821f72385526e1b9d9a3a0385dda4a72b206d28049e2c7cd39b8/gitpython-3.1.45-py3-none-any.whl", hash = "sha256:8908cb2e02fb3b93b7eb0f2827125cb699869470432cc885f019b8fd0fccff77", size = 208168 }, + { url = "https://files.pythonhosted.org/packages/01/61/d4b89fec821f72385526e1b9d9a3a0385dda4a72b206d28049e2c7cd39b8/gitpython-3.1.45-py3-none-any.whl", hash = "sha256:8908cb2e02fb3b93b7eb0f2827125cb699869470432cc885f019b8fd0fccff77", size = 208168, upload_time = "2025-07-24T03:45:52.517Z" }, ] [[package]] @@ -651,9 +673,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ec/d7/6c09dd7ce4c7837e4cdb11dce980cb45ae3cd87677298dc3b781b6bce7d3/griffe-1.14.0.tar.gz", hash = "sha256:9d2a15c1eca966d68e00517de5d69dd1bc5c9f2335ef6c1775362ba5b8651a13", size = 424684 } +sdist = { url = "https://files.pythonhosted.org/packages/ec/d7/6c09dd7ce4c7837e4cdb11dce980cb45ae3cd87677298dc3b781b6bce7d3/griffe-1.14.0.tar.gz", hash = "sha256:9d2a15c1eca966d68e00517de5d69dd1bc5c9f2335ef6c1775362ba5b8651a13", size = 424684, upload_time = "2025-09-05T15:02:29.167Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/b1/9ff6578d789a89812ff21e4e0f80ffae20a65d5dd84e7a17873fe3b365be/griffe-1.14.0-py3-none-any.whl", hash = "sha256:0e9d52832cccf0f7188cfe585ba962d2674b241c01916d780925df34873bceb0", size = 144439 }, + { url = "https://files.pythonhosted.org/packages/2a/b1/9ff6578d789a89812ff21e4e0f80ffae20a65d5dd84e7a17873fe3b365be/griffe-1.14.0-py3-none-any.whl", hash = "sha256:0e9d52832cccf0f7188cfe585ba962d2674b241c01916d780925df34873bceb0", size = 144439, upload_time = "2025-09-05T15:02:27.511Z" }, ] [[package]] @@ -661,14 +683,14 @@ name = "gurobipy" version = "12.0.3" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6f/bb/b3784497115c64c2bd122cc9d411f167026d4ec42a26b1ff3c43a779275d/gurobipy-12.0.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:020f23277f630e079eac114385eabd1bd9fb4ac22f8796ed5ba6d915ce4f141b", size = 12222234 }, - { url = "https://files.pythonhosted.org/packages/18/ea/c065984de5287c99fd30ee8d700fd78f83692e992471f9667ab5d36612b9/gurobipy-12.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:72bbf544bc05060bb93909b79715ace4c0f416198f7622a985cabb9e8e99aa1c", size = 62583866 }, - { url = "https://files.pythonhosted.org/packages/9b/8b/2b9f26e4e19a258229b8a8ffc377ca372cc2059a22a0a7c67572efe308d8/gurobipy-12.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b3f971caf270f671b6ffcf5b937b3c0430a5264b0f01529dc8681d61c221f215", size = 14268480 }, - { url = "https://files.pythonhosted.org/packages/26/0f/3544a323635f37cdfe1e011d2903b7ef94ba18e10224fa1419f64d0c1968/gurobipy-12.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:af18fd03d5dc3f6e5f590c372ad288b8430a6d88a5b5e66cfcd8432f86ee8650", size = 11121565 }, - { url = "https://files.pythonhosted.org/packages/5e/95/f0e5b5cf85298f42482cf4e53d8114c45bb962f55195d531fe4e62b5afa1/gurobipy-12.0.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a8552e47673cb6f1fd351edf8fcad86b02f832cbfb57d90ef21e0397e96d138e", size = 12183439 }, - { url = "https://files.pythonhosted.org/packages/61/6e/aea725b4143faa4eb6878414a91fa74e7871aba0ab9453803a9eeef781c2/gurobipy-12.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:be05c074141c8a126c8aaeccc41795ab091a666eabb39ca1ff98a74bde81e663", size = 62583451 }, - { url = "https://files.pythonhosted.org/packages/75/47/7b9c63ce2cd85d796403b91a6d211d5c8baac7b694edd94e2151f365d6a9/gurobipy-12.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:79a333766e27fef7902ceeefbcf0279a1ca393a27a72ea62f8e301b21aa17d59", size = 14271076 }, - { url = "https://files.pythonhosted.org/packages/2a/93/b10cd6112c05675fed5c817fd7933c9d4ba3a7039e42cba844a9ac09242a/gurobipy-12.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:e0f9ed55077e622021369bb9df2ca3b00c86b678792a3b1556cc59f67348fab0", size = 11111414 }, + { url = "https://files.pythonhosted.org/packages/6f/bb/b3784497115c64c2bd122cc9d411f167026d4ec42a26b1ff3c43a779275d/gurobipy-12.0.3-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:020f23277f630e079eac114385eabd1bd9fb4ac22f8796ed5ba6d915ce4f141b", size = 12222234, upload_time = "2025-07-15T07:19:24.64Z" }, + { url = "https://files.pythonhosted.org/packages/18/ea/c065984de5287c99fd30ee8d700fd78f83692e992471f9667ab5d36612b9/gurobipy-12.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:72bbf544bc05060bb93909b79715ace4c0f416198f7622a985cabb9e8e99aa1c", size = 62583866, upload_time = "2025-07-15T07:20:17.576Z" }, + { url = "https://files.pythonhosted.org/packages/9b/8b/2b9f26e4e19a258229b8a8ffc377ca372cc2059a22a0a7c67572efe308d8/gurobipy-12.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:b3f971caf270f671b6ffcf5b937b3c0430a5264b0f01529dc8681d61c221f215", size = 14268480, upload_time = "2025-07-15T07:20:26.898Z" }, + { url = "https://files.pythonhosted.org/packages/26/0f/3544a323635f37cdfe1e011d2903b7ef94ba18e10224fa1419f64d0c1968/gurobipy-12.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:af18fd03d5dc3f6e5f590c372ad288b8430a6d88a5b5e66cfcd8432f86ee8650", size = 11121565, upload_time = "2025-07-15T07:20:34.576Z" }, + { url = "https://files.pythonhosted.org/packages/5e/95/f0e5b5cf85298f42482cf4e53d8114c45bb962f55195d531fe4e62b5afa1/gurobipy-12.0.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a8552e47673cb6f1fd351edf8fcad86b02f832cbfb57d90ef21e0397e96d138e", size = 12183439, upload_time = "2025-07-15T07:20:44.224Z" }, + { url = "https://files.pythonhosted.org/packages/61/6e/aea725b4143faa4eb6878414a91fa74e7871aba0ab9453803a9eeef781c2/gurobipy-12.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:be05c074141c8a126c8aaeccc41795ab091a666eabb39ca1ff98a74bde81e663", size = 62583451, upload_time = "2025-07-15T07:21:38.825Z" }, + { url = "https://files.pythonhosted.org/packages/75/47/7b9c63ce2cd85d796403b91a6d211d5c8baac7b694edd94e2151f365d6a9/gurobipy-12.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:79a333766e27fef7902ceeefbcf0279a1ca393a27a72ea62f8e301b21aa17d59", size = 14271076, upload_time = "2025-07-15T07:21:55.102Z" }, + { url = "https://files.pythonhosted.org/packages/2a/93/b10cd6112c05675fed5c817fd7933c9d4ba3a7039e42cba844a9ac09242a/gurobipy-12.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:e0f9ed55077e622021369bb9df2ca3b00c86b678792a3b1556cc59f67348fab0", size = 11111414, upload_time = "2025-07-15T07:22:05.079Z" }, ] [[package]] @@ -680,9 +702,9 @@ dependencies = [ { name = "libhxl" }, { name = "tenacity" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ce/cc/5621c48b79a510a87288495f4bdde38a292f0f97dd14177e2cc77c8a79bb/hdx_python_country-3.9.8.tar.gz", hash = "sha256:de9d928e490490fe6fa2d743597464fa8bae317f808667a947e734c1ea26e4d9", size = 531031 } +sdist = { url = "https://files.pythonhosted.org/packages/ce/cc/5621c48b79a510a87288495f4bdde38a292f0f97dd14177e2cc77c8a79bb/hdx_python_country-3.9.8.tar.gz", hash = "sha256:de9d928e490490fe6fa2d743597464fa8bae317f808667a947e734c1ea26e4d9", size = 531031, upload_time = "2025-09-21T23:42:45.054Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/8f/7d961e17372bb9df875e988432a2abb9ca4883b4a0592dfccefa50cb697f/hdx_python_country-3.9.8-py3-none-any.whl", hash = "sha256:602e495028e474e2f93094136007b2c0e765d88af55b2cae7e0ba778e178bcaf", size = 56383 }, + { url = "https://files.pythonhosted.org/packages/ce/8f/7d961e17372bb9df875e988432a2abb9ca4883b4a0592dfccefa50cb697f/hdx_python_country-3.9.8-py3-none-any.whl", hash = "sha256:602e495028e474e2f93094136007b2c0e765d88af55b2cae7e0ba778e178bcaf", size = 56383, upload_time = "2025-09-21T23:42:43.267Z" }, ] [[package]] @@ -705,9 +727,9 @@ dependencies = [ { name = "xlsx2csv" }, { name = "xlwt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7e/13/f22d36f9146beaefe27b1a888acd31ddd09c1a9730ed1d42df9af33f99e2/hdx_python_utilities-3.9.2.tar.gz", hash = "sha256:de39248afdca00ab636fdfa0c3259fa80e4b95dba026170a4efc5bee14eda3f3", size = 656826 } +sdist = { url = "https://files.pythonhosted.org/packages/7e/13/f22d36f9146beaefe27b1a888acd31ddd09c1a9730ed1d42df9af33f99e2/hdx_python_utilities-3.9.2.tar.gz", hash = "sha256:de39248afdca00ab636fdfa0c3259fa80e4b95dba026170a4efc5bee14eda3f3", size = 656826, upload_time = "2025-09-21T23:14:17.457Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/95/6d/06994f86c2cc172b5ea127dedbb19e809205e06b1ba7532e2f0aea5631cd/hdx_python_utilities-3.9.2-py3-none-any.whl", hash = "sha256:fae3cc241420ae7ebb0a7a53cc8034c6851886396b2f0880685aba9045973111", size = 61187 }, + { url = "https://files.pythonhosted.org/packages/95/6d/06994f86c2cc172b5ea127dedbb19e809205e06b1ba7532e2f0aea5631cd/hdx_python_utilities-3.9.2-py3-none-any.whl", hash = "sha256:fae3cc241420ae7ebb0a7a53cc8034c6851886396b2f0880685aba9045973111", size = 61187, upload_time = "2025-09-21T23:14:15.588Z" }, ] [[package]] @@ -717,28 +739,28 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b4/fc/aa1325331c320598ce60cc31060087681cd05123b6fb2a8a571e882b7f05/highspy-1.11.0.tar.gz", hash = "sha256:771e58c076122d207ff1b19759c21d3227f0da5b80dfd89a4145681524969cef", size = 1285415 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/ad/b54ad6740b950faab3b7f1465fbb5c740fc522928a8d9f01cac181f8f9a6/highspy-1.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:28fffd3e733833a7b2569df6761088046e8aca868ab328828711dbe15b102ad4", size = 2232856 }, - { url = "https://files.pythonhosted.org/packages/a3/0c/3921a207f47d52abc81a9d00d8f4d579b05b85670e23bc7140e39268490d/highspy-1.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:20a3adf8820a5f7a9cee6fc76df625e651ecfd8b5898af2a77042e79269ce0bc", size = 1908641 }, - { url = "https://files.pythonhosted.org/packages/0a/b6/ea7ea6c4c3f781b007fe928b2aefa40c49287b4689985d04c3b20d383475/highspy-1.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d4bc0a84cf613bb8565f9b5f610eb0655384162f509b5d86f9c888570275fdc", size = 2119574 }, - { url = "https://files.pythonhosted.org/packages/ff/0c/94f1ccb6606e8445a7a0c68d983e47f64899582c64fcea651f488eaaaea0/highspy-1.11.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:543789b75c396a904cb550de34eb333f1a184e123dadc9903b5e6dbca18a007b", size = 2441487 }, - { url = "https://files.pythonhosted.org/packages/ad/aa/e7c4ac05162187c484bb121f50d8e037c13bf894ed5cf4e781e1cff68762/highspy-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a23949e4f44b6df0ed8c387a7c733d683a0fa66e3ff15d65719979ce2099ee99", size = 2302302 }, - { url = "https://files.pythonhosted.org/packages/04/ce/fd2473bed635eb06d116f987767d5c5fe3c62b317fb1a788c31966d7fa0a/highspy-1.11.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:50dacf300ebe7c4dca92891c0bf61b694f2ca744207cf7d0d24f2a30ffb5608c", size = 3101885 }, - { url = "https://files.pythonhosted.org/packages/6e/e1/bf174389656de5d302ed53dd5cdeb5f7e9ad84156ad2fc95d5a63ba023f2/highspy-1.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a782c242b4b047f86110787b0dafce9d77cc10f079adab1fd51c5331e5760127", size = 3647952 }, - { url = "https://files.pythonhosted.org/packages/f3/f5/42f6f2ce99c5b9d7aa864ac3abeaf8a2b66da707821ab42b0a31ec2a0dc1/highspy-1.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:15b804387089a389e5f01b056a4b3ad74c7d1cf00ab00a0faaf3b4a582bb664c", size = 3309616 }, - { url = "https://files.pythonhosted.org/packages/47/f5/cf13640ed65ea934b45e0c3e786497f4696f286faf45e8e62579a0f15462/highspy-1.11.0-cp312-cp312-win32.whl", hash = "sha256:8c33f68df8ab9666d379b0d64d04775c0a9db31882d4f87b3ec8cece0003b47d", size = 1710641 }, - { url = "https://files.pythonhosted.org/packages/b7/2f/7acfea5b8d32b86bdec018f858bc195236b804a22a7cd3349da711498692/highspy-1.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0aed8c80d33e2fc2eb1def75dbd34c9fa463acb589d19a5ed5dcc0178ae7062", size = 1985767 }, - { url = "https://files.pythonhosted.org/packages/96/84/3e899c5d95dc9d5400a308e0aaf4a5143f69016a4f46dd528ff7cd65d341/highspy-1.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f675cda73860c7c8a22546db3c80db985720baea84866b08a971cfa03cc7a156", size = 2232867 }, - { url = "https://files.pythonhosted.org/packages/74/e2/2853095a74e9fc2c2081340647be8edba7122696534ebbaf159ceb53f9b4/highspy-1.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7babebfc01b7682c69c95e0520614ec9400e10cec1b84d3fb7cd48535c606244", size = 1908601 }, - { url = "https://files.pythonhosted.org/packages/e6/36/3cabdd3ae8610912962bad96f4d4d6702255d6c01d050754e4050a9eaa4a/highspy-1.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39fb60d84d7a58e58f923ea6f0641e6978eb9049033b84de1a2add723e01cd3f", size = 2119726 }, - { url = "https://files.pythonhosted.org/packages/a9/da/200d3f13ca9ad3f9fc11a1f3f76cc2734de42dae064510365d42caeb5ed4/highspy-1.11.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c2e7cf4d504287cd8910de322a726d58428af43bb985d6bae602bf84a7454b9", size = 2441449 }, - { url = "https://files.pythonhosted.org/packages/6c/58/fc3775850dc668006039637a4f23f03a9c0eb533643c9d3a7370f9d63de2/highspy-1.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79682aa7855d94106ccbbb750082d156dcbb57dff9d489f167320ae0ce768867", size = 2302685 }, - { url = "https://files.pythonhosted.org/packages/b5/16/e13326a9706c407d32e39ad14aa79a696c1eb49bb13d50fde5d96afb02b5/highspy-1.11.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:65232aa496fb27be56cc85b2c7c785fac866107c32ea00cc38ec474d6a9f6494", size = 3102306 }, - { url = "https://files.pythonhosted.org/packages/0e/93/468e63b16d9bf123174e7f8f7b8bd5a2f96b18d7370a2cc35e6485871749/highspy-1.11.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f78f27e18275d3c7868dcd0314ea535ed361322e7f0817363872d75a4cc15abc", size = 3648234 }, - { url = "https://files.pythonhosted.org/packages/dc/c5/37b849a69c9cbccf533a9a51e309a49e83d704f06bf45370c2e78ceb15d4/highspy-1.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6156a7d643268456427b6fe310626ad9ee9d908ff812cc64ee8bad7b9872ea98", size = 3309724 }, - { url = "https://files.pythonhosted.org/packages/90/0f/89c579b2f718dc419fd76067a03ecb3c96e6919b7cffee1b9f5a2dfe4f56/highspy-1.11.0-cp313-cp313-win32.whl", hash = "sha256:e61facebb0127eb3661db79a11c7665e47229ec63d2b425996d04aeede26d46b", size = 1710676 }, - { url = "https://files.pythonhosted.org/packages/20/ca/ba2af91f2418bee0d0e99df71dcd171ca863675de6a5260bbf06c120f084/highspy-1.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:ceac08be37f75dc0af95669a0cfb073e5db5f07ead05cdcc81fd4b4394708d53", size = 1985967 }, +sdist = { url = "https://files.pythonhosted.org/packages/b4/fc/aa1325331c320598ce60cc31060087681cd05123b6fb2a8a571e882b7f05/highspy-1.11.0.tar.gz", hash = "sha256:771e58c076122d207ff1b19759c21d3227f0da5b80dfd89a4145681524969cef", size = 1285415, upload_time = "2025-06-06T00:47:22.562Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/ad/b54ad6740b950faab3b7f1465fbb5c740fc522928a8d9f01cac181f8f9a6/highspy-1.11.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:28fffd3e733833a7b2569df6761088046e8aca868ab328828711dbe15b102ad4", size = 2232856, upload_time = "2025-06-06T00:46:11.161Z" }, + { url = "https://files.pythonhosted.org/packages/a3/0c/3921a207f47d52abc81a9d00d8f4d579b05b85670e23bc7140e39268490d/highspy-1.11.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:20a3adf8820a5f7a9cee6fc76df625e651ecfd8b5898af2a77042e79269ce0bc", size = 1908641, upload_time = "2025-06-06T00:46:12.706Z" }, + { url = "https://files.pythonhosted.org/packages/0a/b6/ea7ea6c4c3f781b007fe928b2aefa40c49287b4689985d04c3b20d383475/highspy-1.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d4bc0a84cf613bb8565f9b5f610eb0655384162f509b5d86f9c888570275fdc", size = 2119574, upload_time = "2025-06-06T00:46:14.261Z" }, + { url = "https://files.pythonhosted.org/packages/ff/0c/94f1ccb6606e8445a7a0c68d983e47f64899582c64fcea651f488eaaaea0/highspy-1.11.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:543789b75c396a904cb550de34eb333f1a184e123dadc9903b5e6dbca18a007b", size = 2441487, upload_time = "2025-06-06T00:46:16.286Z" }, + { url = "https://files.pythonhosted.org/packages/ad/aa/e7c4ac05162187c484bb121f50d8e037c13bf894ed5cf4e781e1cff68762/highspy-1.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a23949e4f44b6df0ed8c387a7c733d683a0fa66e3ff15d65719979ce2099ee99", size = 2302302, upload_time = "2025-06-06T00:46:18.819Z" }, + { url = "https://files.pythonhosted.org/packages/04/ce/fd2473bed635eb06d116f987767d5c5fe3c62b317fb1a788c31966d7fa0a/highspy-1.11.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:50dacf300ebe7c4dca92891c0bf61b694f2ca744207cf7d0d24f2a30ffb5608c", size = 3101885, upload_time = "2025-06-06T00:46:20.774Z" }, + { url = "https://files.pythonhosted.org/packages/6e/e1/bf174389656de5d302ed53dd5cdeb5f7e9ad84156ad2fc95d5a63ba023f2/highspy-1.11.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a782c242b4b047f86110787b0dafce9d77cc10f079adab1fd51c5331e5760127", size = 3647952, upload_time = "2025-06-06T00:46:22.847Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f5/42f6f2ce99c5b9d7aa864ac3abeaf8a2b66da707821ab42b0a31ec2a0dc1/highspy-1.11.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:15b804387089a389e5f01b056a4b3ad74c7d1cf00ab00a0faaf3b4a582bb664c", size = 3309616, upload_time = "2025-06-06T00:46:24.888Z" }, + { url = "https://files.pythonhosted.org/packages/47/f5/cf13640ed65ea934b45e0c3e786497f4696f286faf45e8e62579a0f15462/highspy-1.11.0-cp312-cp312-win32.whl", hash = "sha256:8c33f68df8ab9666d379b0d64d04775c0a9db31882d4f87b3ec8cece0003b47d", size = 1710641, upload_time = "2025-06-06T00:46:26.462Z" }, + { url = "https://files.pythonhosted.org/packages/b7/2f/7acfea5b8d32b86bdec018f858bc195236b804a22a7cd3349da711498692/highspy-1.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:a0aed8c80d33e2fc2eb1def75dbd34c9fa463acb589d19a5ed5dcc0178ae7062", size = 1985767, upload_time = "2025-06-06T00:46:28.144Z" }, + { url = "https://files.pythonhosted.org/packages/96/84/3e899c5d95dc9d5400a308e0aaf4a5143f69016a4f46dd528ff7cd65d341/highspy-1.11.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f675cda73860c7c8a22546db3c80db985720baea84866b08a971cfa03cc7a156", size = 2232867, upload_time = "2025-06-06T00:46:29.651Z" }, + { url = "https://files.pythonhosted.org/packages/74/e2/2853095a74e9fc2c2081340647be8edba7122696534ebbaf159ceb53f9b4/highspy-1.11.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7babebfc01b7682c69c95e0520614ec9400e10cec1b84d3fb7cd48535c606244", size = 1908601, upload_time = "2025-06-06T00:46:31.232Z" }, + { url = "https://files.pythonhosted.org/packages/e6/36/3cabdd3ae8610912962bad96f4d4d6702255d6c01d050754e4050a9eaa4a/highspy-1.11.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:39fb60d84d7a58e58f923ea6f0641e6978eb9049033b84de1a2add723e01cd3f", size = 2119726, upload_time = "2025-06-06T00:46:32.796Z" }, + { url = "https://files.pythonhosted.org/packages/a9/da/200d3f13ca9ad3f9fc11a1f3f76cc2734de42dae064510365d42caeb5ed4/highspy-1.11.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6c2e7cf4d504287cd8910de322a726d58428af43bb985d6bae602bf84a7454b9", size = 2441449, upload_time = "2025-06-06T00:46:35.147Z" }, + { url = "https://files.pythonhosted.org/packages/6c/58/fc3775850dc668006039637a4f23f03a9c0eb533643c9d3a7370f9d63de2/highspy-1.11.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:79682aa7855d94106ccbbb750082d156dcbb57dff9d489f167320ae0ce768867", size = 2302685, upload_time = "2025-06-06T00:46:36.791Z" }, + { url = "https://files.pythonhosted.org/packages/b5/16/e13326a9706c407d32e39ad14aa79a696c1eb49bb13d50fde5d96afb02b5/highspy-1.11.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:65232aa496fb27be56cc85b2c7c785fac866107c32ea00cc38ec474d6a9f6494", size = 3102306, upload_time = "2025-06-06T00:46:38.341Z" }, + { url = "https://files.pythonhosted.org/packages/0e/93/468e63b16d9bf123174e7f8f7b8bd5a2f96b18d7370a2cc35e6485871749/highspy-1.11.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:f78f27e18275d3c7868dcd0314ea535ed361322e7f0817363872d75a4cc15abc", size = 3648234, upload_time = "2025-06-06T00:46:40.895Z" }, + { url = "https://files.pythonhosted.org/packages/dc/c5/37b849a69c9cbccf533a9a51e309a49e83d704f06bf45370c2e78ceb15d4/highspy-1.11.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6156a7d643268456427b6fe310626ad9ee9d908ff812cc64ee8bad7b9872ea98", size = 3309724, upload_time = "2025-06-06T00:46:43.083Z" }, + { url = "https://files.pythonhosted.org/packages/90/0f/89c579b2f718dc419fd76067a03ecb3c96e6919b7cffee1b9f5a2dfe4f56/highspy-1.11.0-cp313-cp313-win32.whl", hash = "sha256:e61facebb0127eb3661db79a11c7665e47229ec63d2b425996d04aeede26d46b", size = 1710676, upload_time = "2025-06-06T00:46:45.132Z" }, + { url = "https://files.pythonhosted.org/packages/20/ca/ba2af91f2418bee0d0e99df71dcd171ca863675de6a5260bbf06c120f084/highspy-1.11.0-cp313-cp313-win_amd64.whl", hash = "sha256:ceac08be37f75dc0af95669a0cfb073e5db5f07ead05cdcc81fd4b4394708d53", size = 1985967, upload_time = "2025-06-06T00:46:46.767Z" }, ] [[package]] @@ -746,99 +768,100 @@ name = "htmlmin2" version = "0.1.13" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/be/31/a76f4bfa885f93b8167cb4c85cf32b54d1f64384d0b897d45bc6d19b7b45/htmlmin2-0.1.13-py3-none-any.whl", hash = "sha256:75609f2a42e64f7ce57dbff28a39890363bde9e7e5885db633317efbdf8c79a2", size = 34486 }, + { url = "https://files.pythonhosted.org/packages/be/31/a76f4bfa885f93b8167cb4c85cf32b54d1f64384d0b897d45bc6d19b7b45/htmlmin2-0.1.13-py3-none-any.whl", hash = "sha256:75609f2a42e64f7ce57dbff28a39890363bde9e7e5885db633317efbdf8c79a2", size = 34486, upload_time = "2023-03-14T21:28:30.388Z" }, ] [[package]] name = "humanize" version = "4.13.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/98/1d/3062fcc89ee05a715c0b9bfe6490c00c576314f27ffee3a704122c6fd259/humanize-4.13.0.tar.gz", hash = "sha256:78f79e68f76f0b04d711c4e55d32bebef5be387148862cb1ef83d2b58e7935a0", size = 81884 } +sdist = { url = "https://files.pythonhosted.org/packages/98/1d/3062fcc89ee05a715c0b9bfe6490c00c576314f27ffee3a704122c6fd259/humanize-4.13.0.tar.gz", hash = "sha256:78f79e68f76f0b04d711c4e55d32bebef5be387148862cb1ef83d2b58e7935a0", size = 81884, upload_time = "2025-08-25T09:39:20.04Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/c7/316e7ca04d26695ef0635dc81683d628350810eb8e9b2299fc08ba49f366/humanize-4.13.0-py3-none-any.whl", hash = "sha256:b810820b31891813b1673e8fec7f1ed3312061eab2f26e3fa192c393d11ed25f", size = 128869 }, + { url = "https://files.pythonhosted.org/packages/1e/c7/316e7ca04d26695ef0635dc81683d628350810eb8e9b2299fc08ba49f366/humanize-4.13.0-py3-none-any.whl", hash = "sha256:b810820b31891813b1673e8fec7f1ed3312061eab2f26e3fa192c393d11ed25f", size = 128869, upload_time = "2025-08-25T09:39:18.54Z" }, ] [[package]] name = "identify" version = "2.6.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/c4/62963f25a678f6a050fb0505a65e9e726996171e6dbe1547f79619eefb15/identify-2.6.14.tar.gz", hash = "sha256:663494103b4f717cb26921c52f8751363dc89db64364cd836a9bf1535f53cd6a", size = 99283 } +sdist = { url = "https://files.pythonhosted.org/packages/52/c4/62963f25a678f6a050fb0505a65e9e726996171e6dbe1547f79619eefb15/identify-2.6.14.tar.gz", hash = "sha256:663494103b4f717cb26921c52f8751363dc89db64364cd836a9bf1535f53cd6a", size = 99283, upload_time = "2025-09-06T19:30:52.938Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/ae/2ad30f4652712c82f1c23423d79136fbce338932ad166d70c1efb86a5998/identify-2.6.14-py2.py3-none-any.whl", hash = "sha256:11a073da82212c6646b1f39bb20d4483bfb9543bd5566fec60053c4bb309bf2e", size = 99172 }, + { url = "https://files.pythonhosted.org/packages/e5/ae/2ad30f4652712c82f1c23423d79136fbce338932ad166d70c1efb86a5998/identify-2.6.14-py2.py3-none-any.whl", hash = "sha256:11a073da82212c6646b1f39bb20d4483bfb9543bd5566fec60053c4bb309bf2e", size = 99172, upload_time = "2025-09-06T19:30:51.759Z" }, ] [[package]] name = "idna" version = "3.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490 } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload_time = "2024-09-15T18:07:39.745Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload_time = "2024-09-15T18:07:37.964Z" }, ] [[package]] name = "ijson" version = "3.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a3/4f/1cfeada63f5fce87536651268ddf5cca79b8b4bbb457aee4e45777964a0a/ijson-3.4.0.tar.gz", hash = "sha256:5f74dcbad9d592c428d3ca3957f7115a42689ee7ee941458860900236ae9bb13", size = 65782 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/ec/317ee5b2d13e50448833ead3aa906659a32b376191f6abc2a7c6112d2b27/ijson-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:956b148f88259a80a9027ffbe2d91705fae0c004fbfba3e5a24028fbe72311a9", size = 87212 }, - { url = "https://files.pythonhosted.org/packages/f8/43/b06c96ced30cacecc5d518f89b0fd1c98c294a30ff88848b70ed7b7f72a1/ijson-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:06b89960f5c721106394c7fba5760b3f67c515b8eb7d80f612388f5eca2f4621", size = 59175 }, - { url = "https://files.pythonhosted.org/packages/e9/df/b4aeafb7ecde463130840ee9be36130823ec94a00525049bf700883378b8/ijson-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a0bb591cf250dd7e9dfab69d634745a7f3272d31cfe879f9156e0a081fd97ee", size = 59011 }, - { url = "https://files.pythonhosted.org/packages/e3/7c/a80b8e361641609507f62022089626d4b8067f0826f51e1c09e4ba86eba8/ijson-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e92de999977f4c6b660ffcf2b8d59604ccd531edcbfde05b642baf283e0de8", size = 146094 }, - { url = "https://files.pythonhosted.org/packages/01/44/fa416347b9a802e3646c6ff377fc3278bd7d6106e17beb339514b6a3184e/ijson-3.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e9602157a5b869d44b6896e64f502c712a312fcde044c2e586fccb85d3e316e", size = 137903 }, - { url = "https://files.pythonhosted.org/packages/24/c6/41a9ad4d42df50ff6e70fdce79b034f09b914802737ebbdc141153d8d791/ijson-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e83660edb931a425b7ff662eb49db1f10d30ca6d4d350e5630edbed098bc01", size = 148339 }, - { url = "https://files.pythonhosted.org/packages/5f/6f/7d01efda415b8502dce67e067ed9e8a124f53e763002c02207e542e1a2f1/ijson-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:49bf8eac1c7b7913073865a859c215488461f7591b4fa6a33c14b51cb73659d0", size = 149383 }, - { url = "https://files.pythonhosted.org/packages/95/6c/0d67024b9ecb57916c5e5ab0350251c9fe2f86dc9c8ca2b605c194bdad6a/ijson-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:160b09273cb42019f1811469508b0a057d19f26434d44752bde6f281da6d3f32", size = 141580 }, - { url = "https://files.pythonhosted.org/packages/06/43/e10edcc1c6a3b619294de835e7678bfb3a1b8a75955f3689fd66a1e9e7b4/ijson-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2019ff4e6f354aa00c76c8591bd450899111c61f2354ad55cc127e2ce2492c44", size = 150280 }, - { url = "https://files.pythonhosted.org/packages/07/84/1cbeee8e8190a1ebe6926569a92cf1fa80ddb380c129beb6f86559e1bb24/ijson-3.4.0-cp312-cp312-win32.whl", hash = "sha256:931c007bf6bb8330705429989b2deed6838c22b63358a330bf362b6e458ba0bf", size = 51512 }, - { url = "https://files.pythonhosted.org/packages/66/13/530802bc391c95be6fe9f96e9aa427d94067e7c0b7da7a9092344dc44c4b/ijson-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:71523f2b64cb856a820223e94d23e88369f193017ecc789bb4de198cc9d349eb", size = 54081 }, - { url = "https://files.pythonhosted.org/packages/77/b3/b1d2eb2745e5204ec7a25365a6deb7868576214feb5e109bce368fb692c9/ijson-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e8d96f88d75196a61c9d9443de2b72c2d4a7ba9456ff117b57ae3bba23a54256", size = 87216 }, - { url = "https://files.pythonhosted.org/packages/b1/cd/cd6d340087617f8cc9bedbb21d974542fe2f160ed0126b8288d3499a469b/ijson-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c45906ce2c1d3b62f15645476fc3a6ca279549127f01662a39ca5ed334a00cf9", size = 59170 }, - { url = "https://files.pythonhosted.org/packages/3e/4d/32d3a9903b488d3306e3c8288f6ee4217d2eea82728261db03a1045eb5d1/ijson-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4ab4bc2119b35c4363ea49f29563612237cae9413d2fbe54b223be098b97bc9e", size = 59013 }, - { url = "https://files.pythonhosted.org/packages/d5/c8/db15465ab4b0b477cee5964c8bfc94bf8c45af8e27a23e1ad78d1926e587/ijson-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97b0a9b5a15e61dfb1f14921ea4e0dba39f3a650df6d8f444ddbc2b19b479ff1", size = 146564 }, - { url = "https://files.pythonhosted.org/packages/c4/d8/0755545bc122473a9a434ab90e0f378780e603d75495b1ca3872de757873/ijson-3.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3047bb994dabedf11de11076ed1147a307924b6e5e2df6784fb2599c4ad8c60", size = 137917 }, - { url = "https://files.pythonhosted.org/packages/d0/c6/aeb89c8939ebe3f534af26c8c88000c5e870dbb6ae33644c21a4531f87d2/ijson-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68c83161b052e9f5dc8191acbc862bb1e63f8a35344cb5cd0db1afd3afd487a6", size = 148897 }, - { url = "https://files.pythonhosted.org/packages/be/0e/7ef6e9b372106f2682a4a32b3c65bf86bb471a1670e4dac242faee4a7d3f/ijson-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1eebd9b6c20eb1dffde0ae1f0fbb4aeacec2eb7b89adb5c7c0449fc9fd742760", size = 149711 }, - { url = "https://files.pythonhosted.org/packages/d1/5d/9841c3ed75bcdabf19b3202de5f862a9c9c86ce5c7c9d95fa32347fdbf5f/ijson-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:13fb6d5c35192c541421f3ee81239d91fc15a8d8f26c869250f941f4b346a86c", size = 141691 }, - { url = "https://files.pythonhosted.org/packages/d5/d2/ce74e17218dba292e9be10a44ed0c75439f7958cdd263adb0b5b92d012d5/ijson-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:28b7196ff7b37c4897c547a28fa4876919696739fc91c1f347651c9736877c69", size = 150738 }, - { url = "https://files.pythonhosted.org/packages/4e/43/dcc480f94453b1075c9911d4755b823f3ace275761bb37b40139f22109ca/ijson-3.4.0-cp313-cp313-win32.whl", hash = "sha256:3c2691d2da42629522140f77b99587d6f5010440d58d36616f33bc7bdc830cc3", size = 51512 }, - { url = "https://files.pythonhosted.org/packages/35/dd/d8c5f15efd85ba51e6e11451ebe23d779361a9ec0d192064c2a8c3cdfcb8/ijson-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:c4554718c275a044c47eb3874f78f2c939f300215d9031e785a6711cc51b83fc", size = 54074 }, - { url = "https://files.pythonhosted.org/packages/79/73/24ad8cd106203419c4d22bed627e02e281d66b83e91bc206a371893d0486/ijson-3.4.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:915a65e3f3c0eee2ea937bc62aaedb6c14cc1e8f0bb9f3f4fb5a9e2bbfa4b480", size = 91694 }, - { url = "https://files.pythonhosted.org/packages/17/2d/f7f680984bcb7324a46a4c2df3bd73cf70faef0acfeb85a3f811abdfd590/ijson-3.4.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:afbe9748707684b6c5adc295c4fdcf27765b300aec4d484e14a13dca4e5c0afa", size = 61390 }, - { url = "https://files.pythonhosted.org/packages/09/a1/f3ca7bab86f95bdb82494739e71d271410dfefce4590785d511669127145/ijson-3.4.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d823f8f321b4d8d5fa020d0a84f089fec5d52b7c0762430476d9f8bf95bbc1a9", size = 61140 }, - { url = "https://files.pythonhosted.org/packages/51/79/dd340df3d4fc7771c95df29997956b92ed0570fe7b616d1792fea9ad93f2/ijson-3.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0a2c54f3becf76881188beefd98b484b1d3bd005769a740d5b433b089fa23", size = 214739 }, - { url = "https://files.pythonhosted.org/packages/59/f0/85380b7f51d1f5fb7065d76a7b623e02feca920cc678d329b2eccc0011e0/ijson-3.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ced19a83ab09afa16257a0b15bc1aa888dbc555cb754be09d375c7f8d41051f2", size = 198338 }, - { url = "https://files.pythonhosted.org/packages/a5/cd/313264cf2ec42e0f01d198c49deb7b6fadeb793b3685e20e738eb6b3fa13/ijson-3.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8100f9885eff1f38d35cef80ef759a1bbf5fc946349afa681bd7d0e681b7f1a0", size = 207515 }, - { url = "https://files.pythonhosted.org/packages/12/94/bf14457aa87ea32641f2db577c9188ef4e4ae373478afef422b31fc7f309/ijson-3.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d7bcc3f7f21b0f703031ecd15209b1284ea51b2a329d66074b5261de3916c1eb", size = 210081 }, - { url = "https://files.pythonhosted.org/packages/7d/b4/eaee39e290e40e52d665db9bd1492cfdce86bd1e47948e0440db209c6023/ijson-3.4.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2dcb190227b09dd171bdcbfe4720fddd574933c66314818dfb3960c8a6246a77", size = 199253 }, - { url = "https://files.pythonhosted.org/packages/c5/9c/e09c7b9ac720a703ab115b221b819f149ed54c974edfff623c1e925e57da/ijson-3.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:eda4cfb1d49c6073a901735aaa62e39cb7ab47f3ad7bb184862562f776f1fa8a", size = 203816 }, - { url = "https://files.pythonhosted.org/packages/7c/14/acd304f412e32d16a2c12182b9d78206bb0ae35354d35664f45db05c1b3b/ijson-3.4.0-cp313-cp313t-win32.whl", hash = "sha256:0772638efa1f3b72b51736833404f1cbd2f5beeb9c1a3d392e7d385b9160cba7", size = 53760 }, - { url = "https://files.pythonhosted.org/packages/2f/24/93dd0a467191590a5ed1fc2b35842bca9d09900d001e00b0b497c0208ef6/ijson-3.4.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3d8a0d67f36e4fb97c61a724456ef0791504b16ce6f74917a31c2e92309bbeb9", size = 56948 }, +sdist = { url = "https://files.pythonhosted.org/packages/a3/4f/1cfeada63f5fce87536651268ddf5cca79b8b4bbb457aee4e45777964a0a/ijson-3.4.0.tar.gz", hash = "sha256:5f74dcbad9d592c428d3ca3957f7115a42689ee7ee941458860900236ae9bb13", size = 65782, upload_time = "2025-05-08T02:37:20.135Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ec/317ee5b2d13e50448833ead3aa906659a32b376191f6abc2a7c6112d2b27/ijson-3.4.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:956b148f88259a80a9027ffbe2d91705fae0c004fbfba3e5a24028fbe72311a9", size = 87212, upload_time = "2025-05-08T02:35:51.835Z" }, + { url = "https://files.pythonhosted.org/packages/f8/43/b06c96ced30cacecc5d518f89b0fd1c98c294a30ff88848b70ed7b7f72a1/ijson-3.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:06b89960f5c721106394c7fba5760b3f67c515b8eb7d80f612388f5eca2f4621", size = 59175, upload_time = "2025-05-08T02:35:52.988Z" }, + { url = "https://files.pythonhosted.org/packages/e9/df/b4aeafb7ecde463130840ee9be36130823ec94a00525049bf700883378b8/ijson-3.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9a0bb591cf250dd7e9dfab69d634745a7f3272d31cfe879f9156e0a081fd97ee", size = 59011, upload_time = "2025-05-08T02:35:54.394Z" }, + { url = "https://files.pythonhosted.org/packages/e3/7c/a80b8e361641609507f62022089626d4b8067f0826f51e1c09e4ba86eba8/ijson-3.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:72e92de999977f4c6b660ffcf2b8d59604ccd531edcbfde05b642baf283e0de8", size = 146094, upload_time = "2025-05-08T02:35:55.601Z" }, + { url = "https://files.pythonhosted.org/packages/01/44/fa416347b9a802e3646c6ff377fc3278bd7d6106e17beb339514b6a3184e/ijson-3.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9e9602157a5b869d44b6896e64f502c712a312fcde044c2e586fccb85d3e316e", size = 137903, upload_time = "2025-05-08T02:35:56.814Z" }, + { url = "https://files.pythonhosted.org/packages/24/c6/41a9ad4d42df50ff6e70fdce79b034f09b914802737ebbdc141153d8d791/ijson-3.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e83660edb931a425b7ff662eb49db1f10d30ca6d4d350e5630edbed098bc01", size = 148339, upload_time = "2025-05-08T02:35:58.595Z" }, + { url = "https://files.pythonhosted.org/packages/5f/6f/7d01efda415b8502dce67e067ed9e8a124f53e763002c02207e542e1a2f1/ijson-3.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:49bf8eac1c7b7913073865a859c215488461f7591b4fa6a33c14b51cb73659d0", size = 149383, upload_time = "2025-05-08T02:36:00.197Z" }, + { url = "https://files.pythonhosted.org/packages/95/6c/0d67024b9ecb57916c5e5ab0350251c9fe2f86dc9c8ca2b605c194bdad6a/ijson-3.4.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:160b09273cb42019f1811469508b0a057d19f26434d44752bde6f281da6d3f32", size = 141580, upload_time = "2025-05-08T02:36:01.998Z" }, + { url = "https://files.pythonhosted.org/packages/06/43/e10edcc1c6a3b619294de835e7678bfb3a1b8a75955f3689fd66a1e9e7b4/ijson-3.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2019ff4e6f354aa00c76c8591bd450899111c61f2354ad55cc127e2ce2492c44", size = 150280, upload_time = "2025-05-08T02:36:03.926Z" }, + { url = "https://files.pythonhosted.org/packages/07/84/1cbeee8e8190a1ebe6926569a92cf1fa80ddb380c129beb6f86559e1bb24/ijson-3.4.0-cp312-cp312-win32.whl", hash = "sha256:931c007bf6bb8330705429989b2deed6838c22b63358a330bf362b6e458ba0bf", size = 51512, upload_time = "2025-05-08T02:36:05.595Z" }, + { url = "https://files.pythonhosted.org/packages/66/13/530802bc391c95be6fe9f96e9aa427d94067e7c0b7da7a9092344dc44c4b/ijson-3.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:71523f2b64cb856a820223e94d23e88369f193017ecc789bb4de198cc9d349eb", size = 54081, upload_time = "2025-05-08T02:36:07.099Z" }, + { url = "https://files.pythonhosted.org/packages/77/b3/b1d2eb2745e5204ec7a25365a6deb7868576214feb5e109bce368fb692c9/ijson-3.4.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:e8d96f88d75196a61c9d9443de2b72c2d4a7ba9456ff117b57ae3bba23a54256", size = 87216, upload_time = "2025-05-08T02:36:08.414Z" }, + { url = "https://files.pythonhosted.org/packages/b1/cd/cd6d340087617f8cc9bedbb21d974542fe2f160ed0126b8288d3499a469b/ijson-3.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:c45906ce2c1d3b62f15645476fc3a6ca279549127f01662a39ca5ed334a00cf9", size = 59170, upload_time = "2025-05-08T02:36:09.604Z" }, + { url = "https://files.pythonhosted.org/packages/3e/4d/32d3a9903b488d3306e3c8288f6ee4217d2eea82728261db03a1045eb5d1/ijson-3.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4ab4bc2119b35c4363ea49f29563612237cae9413d2fbe54b223be098b97bc9e", size = 59013, upload_time = "2025-05-08T02:36:10.696Z" }, + { url = "https://files.pythonhosted.org/packages/d5/c8/db15465ab4b0b477cee5964c8bfc94bf8c45af8e27a23e1ad78d1926e587/ijson-3.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:97b0a9b5a15e61dfb1f14921ea4e0dba39f3a650df6d8f444ddbc2b19b479ff1", size = 146564, upload_time = "2025-05-08T02:36:11.916Z" }, + { url = "https://files.pythonhosted.org/packages/c4/d8/0755545bc122473a9a434ab90e0f378780e603d75495b1ca3872de757873/ijson-3.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e3047bb994dabedf11de11076ed1147a307924b6e5e2df6784fb2599c4ad8c60", size = 137917, upload_time = "2025-05-08T02:36:13.532Z" }, + { url = "https://files.pythonhosted.org/packages/d0/c6/aeb89c8939ebe3f534af26c8c88000c5e870dbb6ae33644c21a4531f87d2/ijson-3.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:68c83161b052e9f5dc8191acbc862bb1e63f8a35344cb5cd0db1afd3afd487a6", size = 148897, upload_time = "2025-05-08T02:36:14.813Z" }, + { url = "https://files.pythonhosted.org/packages/be/0e/7ef6e9b372106f2682a4a32b3c65bf86bb471a1670e4dac242faee4a7d3f/ijson-3.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1eebd9b6c20eb1dffde0ae1f0fbb4aeacec2eb7b89adb5c7c0449fc9fd742760", size = 149711, upload_time = "2025-05-08T02:36:16.476Z" }, + { url = "https://files.pythonhosted.org/packages/d1/5d/9841c3ed75bcdabf19b3202de5f862a9c9c86ce5c7c9d95fa32347fdbf5f/ijson-3.4.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:13fb6d5c35192c541421f3ee81239d91fc15a8d8f26c869250f941f4b346a86c", size = 141691, upload_time = "2025-05-08T02:36:18.044Z" }, + { url = "https://files.pythonhosted.org/packages/d5/d2/ce74e17218dba292e9be10a44ed0c75439f7958cdd263adb0b5b92d012d5/ijson-3.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:28b7196ff7b37c4897c547a28fa4876919696739fc91c1f347651c9736877c69", size = 150738, upload_time = "2025-05-08T02:36:19.483Z" }, + { url = "https://files.pythonhosted.org/packages/4e/43/dcc480f94453b1075c9911d4755b823f3ace275761bb37b40139f22109ca/ijson-3.4.0-cp313-cp313-win32.whl", hash = "sha256:3c2691d2da42629522140f77b99587d6f5010440d58d36616f33bc7bdc830cc3", size = 51512, upload_time = "2025-05-08T02:36:20.99Z" }, + { url = "https://files.pythonhosted.org/packages/35/dd/d8c5f15efd85ba51e6e11451ebe23d779361a9ec0d192064c2a8c3cdfcb8/ijson-3.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:c4554718c275a044c47eb3874f78f2c939f300215d9031e785a6711cc51b83fc", size = 54074, upload_time = "2025-05-08T02:36:22.075Z" }, + { url = "https://files.pythonhosted.org/packages/79/73/24ad8cd106203419c4d22bed627e02e281d66b83e91bc206a371893d0486/ijson-3.4.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:915a65e3f3c0eee2ea937bc62aaedb6c14cc1e8f0bb9f3f4fb5a9e2bbfa4b480", size = 91694, upload_time = "2025-05-08T02:36:23.289Z" }, + { url = "https://files.pythonhosted.org/packages/17/2d/f7f680984bcb7324a46a4c2df3bd73cf70faef0acfeb85a3f811abdfd590/ijson-3.4.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:afbe9748707684b6c5adc295c4fdcf27765b300aec4d484e14a13dca4e5c0afa", size = 61390, upload_time = "2025-05-08T02:36:24.42Z" }, + { url = "https://files.pythonhosted.org/packages/09/a1/f3ca7bab86f95bdb82494739e71d271410dfefce4590785d511669127145/ijson-3.4.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:d823f8f321b4d8d5fa020d0a84f089fec5d52b7c0762430476d9f8bf95bbc1a9", size = 61140, upload_time = "2025-05-08T02:36:26.708Z" }, + { url = "https://files.pythonhosted.org/packages/51/79/dd340df3d4fc7771c95df29997956b92ed0570fe7b616d1792fea9ad93f2/ijson-3.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b8a0a2c54f3becf76881188beefd98b484b1d3bd005769a740d5b433b089fa23", size = 214739, upload_time = "2025-05-08T02:36:27.973Z" }, + { url = "https://files.pythonhosted.org/packages/59/f0/85380b7f51d1f5fb7065d76a7b623e02feca920cc678d329b2eccc0011e0/ijson-3.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ced19a83ab09afa16257a0b15bc1aa888dbc555cb754be09d375c7f8d41051f2", size = 198338, upload_time = "2025-05-08T02:36:29.496Z" }, + { url = "https://files.pythonhosted.org/packages/a5/cd/313264cf2ec42e0f01d198c49deb7b6fadeb793b3685e20e738eb6b3fa13/ijson-3.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8100f9885eff1f38d35cef80ef759a1bbf5fc946349afa681bd7d0e681b7f1a0", size = 207515, upload_time = "2025-05-08T02:36:30.981Z" }, + { url = "https://files.pythonhosted.org/packages/12/94/bf14457aa87ea32641f2db577c9188ef4e4ae373478afef422b31fc7f309/ijson-3.4.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d7bcc3f7f21b0f703031ecd15209b1284ea51b2a329d66074b5261de3916c1eb", size = 210081, upload_time = "2025-05-08T02:36:32.403Z" }, + { url = "https://files.pythonhosted.org/packages/7d/b4/eaee39e290e40e52d665db9bd1492cfdce86bd1e47948e0440db209c6023/ijson-3.4.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:2dcb190227b09dd171bdcbfe4720fddd574933c66314818dfb3960c8a6246a77", size = 199253, upload_time = "2025-05-08T02:36:33.861Z" }, + { url = "https://files.pythonhosted.org/packages/c5/9c/e09c7b9ac720a703ab115b221b819f149ed54c974edfff623c1e925e57da/ijson-3.4.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:eda4cfb1d49c6073a901735aaa62e39cb7ab47f3ad7bb184862562f776f1fa8a", size = 203816, upload_time = "2025-05-08T02:36:35.348Z" }, + { url = "https://files.pythonhosted.org/packages/7c/14/acd304f412e32d16a2c12182b9d78206bb0ae35354d35664f45db05c1b3b/ijson-3.4.0-cp313-cp313t-win32.whl", hash = "sha256:0772638efa1f3b72b51736833404f1cbd2f5beeb9c1a3d392e7d385b9160cba7", size = 53760, upload_time = "2025-05-08T02:36:36.608Z" }, + { url = "https://files.pythonhosted.org/packages/2f/24/93dd0a467191590a5ed1fc2b35842bca9d09900d001e00b0b497c0208ef6/ijson-3.4.0-cp313-cp313t-win_amd64.whl", hash = "sha256:3d8a0d67f36e4fb97c61a724456ef0791504b16ce6f74917a31c2e92309bbeb9", size = 56948, upload_time = "2025-05-08T02:36:37.849Z" }, ] [[package]] name = "imf-reader" -version = "1.3.0" +version = "1.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "beautifulsoup4" }, { name = "chardet" }, + { name = "diskcache" }, { name = "pandas" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/af/45/24521d229aec5c058d998510794567788bc7b1b764dfaa02fb8e0aeda4b7/imf_reader-1.3.0.tar.gz", hash = "sha256:3f3130dd793a112fdd5913a7c7b733847a5a07fd70dee14d57624ae4e021a141", size = 12990 } +sdist = { url = "https://files.pythonhosted.org/packages/16/5a/c8bc268ae5b6dbab4db01d92f9d34713a7c487bc85f2522173cf24bc5c74/imf_reader-1.4.1.tar.gz", hash = "sha256:2584e45485b539cd2d15bf0a785e6ac5f29775c042d9d5f83c7af5d5f0947c0b", size = 13271, upload_time = "2025-12-05T11:41:01.049Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/5b/3a063116950f2aa2b450120e78162bb5b87098dde3b75ae90210c6f2c099/imf_reader-1.3.0-py3-none-any.whl", hash = "sha256:3515c6644dfef44d5fda89f5bb3786b4f83da20f49184911f0df2386782106f1", size = 16520 }, + { url = "https://files.pythonhosted.org/packages/c1/79/97bd7b6c3af609b33ba2d787ea9e06ad93b1deca38388a345b6c913825ea/imf_reader-1.4.1-py3-none-any.whl", hash = "sha256:16c0dafcbe0e6630e7d3adbccb81e828b3e971b79e3969b79fbd6772151165c5", size = 19285, upload_time = "2025-12-05T11:41:00.218Z" }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload_time = "2025-03-19T20:09:59.721Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload_time = "2025-03-19T20:10:01.071Z" }, ] [[package]] @@ -860,9 +883,9 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bb/76/11082e338e0daadc89c8ff866185de11daf67d181901038f9e139d109761/ipykernel-6.30.1.tar.gz", hash = "sha256:6abb270161896402e76b91394fcdce5d1be5d45f456671e5080572f8505be39b", size = 166260 } +sdist = { url = "https://files.pythonhosted.org/packages/bb/76/11082e338e0daadc89c8ff866185de11daf67d181901038f9e139d109761/ipykernel-6.30.1.tar.gz", hash = "sha256:6abb270161896402e76b91394fcdce5d1be5d45f456671e5080572f8505be39b", size = 166260, upload_time = "2025-08-04T15:47:35.018Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/c7/b445faca8deb954fe536abebff4ece5b097b923de482b26e78448c89d1dd/ipykernel-6.30.1-py3-none-any.whl", hash = "sha256:aa6b9fb93dca949069d8b85b6c79b2518e32ac583ae9c7d37c51d119e18b3fb4", size = 117484 }, + { url = "https://files.pythonhosted.org/packages/fc/c7/b445faca8deb954fe536abebff4ece5b097b923de482b26e78448c89d1dd/ipykernel-6.30.1-py3-none-any.whl", hash = "sha256:aa6b9fb93dca949069d8b85b6c79b2518e32ac583ae9c7d37c51d119e18b3fb4", size = 117484, upload_time = "2025-08-04T15:47:32.622Z" }, ] [[package]] @@ -881,9 +904,9 @@ dependencies = [ { name = "stack-data" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6e/71/a86262bf5a68bf211bcc71fe302af7e05f18a2852fdc610a854d20d085e6/ipython-9.5.0.tar.gz", hash = "sha256:129c44b941fe6d9b82d36fc7a7c18127ddb1d6f02f78f867f402e2e3adde3113", size = 4389137 } +sdist = { url = "https://files.pythonhosted.org/packages/6e/71/a86262bf5a68bf211bcc71fe302af7e05f18a2852fdc610a854d20d085e6/ipython-9.5.0.tar.gz", hash = "sha256:129c44b941fe6d9b82d36fc7a7c18127ddb1d6f02f78f867f402e2e3adde3113", size = 4389137, upload_time = "2025-08-29T12:15:21.519Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/2a/5628a99d04acb2d2f2e749cdf4ea571d2575e898df0528a090948018b726/ipython-9.5.0-py3-none-any.whl", hash = "sha256:88369ffa1d5817d609120daa523a6da06d02518e582347c29f8451732a9c5e72", size = 612426 }, + { url = "https://files.pythonhosted.org/packages/08/2a/5628a99d04acb2d2f2e749cdf4ea571d2575e898df0528a090948018b726/ipython-9.5.0-py3-none-any.whl", hash = "sha256:88369ffa1d5817d609120daa523a6da06d02518e582347c29f8451732a9c5e72", size = 612426, upload_time = "2025-08-29T12:15:18.866Z" }, ] [[package]] @@ -893,18 +916,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 } +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload_time = "2025-01-17T11:24:34.505Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 }, + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload_time = "2025-01-17T11:24:33.271Z" }, ] [[package]] name = "isodate" version = "0.7.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705 } +sdist = { url = "https://files.pythonhosted.org/packages/54/4d/e940025e2ce31a8ce1202635910747e5a87cc3a6a6bb2d00973375014749/isodate-0.7.2.tar.gz", hash = "sha256:4cd1aa0f43ca76f4a6c6c0292a85f40b35ec2e43e315b59f06e6d32171a953e6", size = 29705, upload_time = "2024-10-08T23:04:11.5Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320 }, + { url = "https://files.pythonhosted.org/packages/15/aa/0aca39a37d3c7eb941ba736ede56d689e7be91cab5d9ca846bde3999eba6/isodate-0.7.2-py3-none-any.whl", hash = "sha256:28009937d8031054830160fce6d409ed342816b543597cece116d966c6d99e15", size = 22320, upload_time = "2024-10-08T23:04:09.501Z" }, ] [[package]] @@ -914,9 +937,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "parso" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287 } +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload_time = "2024-11-11T01:41:42.873Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 }, + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload_time = "2024-11-11T01:41:40.175Z" }, ] [[package]] @@ -926,25 +949,25 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload_time = "2025-03-05T20:05:02.478Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload_time = "2025-03-05T20:05:00.369Z" }, ] [[package]] name = "joblib" version = "1.5.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/5d/447af5ea094b9e4c4054f82e223ada074c552335b9b4b2d14bd9b35a67c4/joblib-1.5.2.tar.gz", hash = "sha256:3faa5c39054b2f03ca547da9b2f52fde67c06240c31853f306aea97f13647b55", size = 331077 } +sdist = { url = "https://files.pythonhosted.org/packages/e8/5d/447af5ea094b9e4c4054f82e223ada074c552335b9b4b2d14bd9b35a67c4/joblib-1.5.2.tar.gz", hash = "sha256:3faa5c39054b2f03ca547da9b2f52fde67c06240c31853f306aea97f13647b55", size = 331077, upload_time = "2025-08-27T12:15:46.575Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/e8/685f47e0d754320684db4425a0967f7d3fa70126bffd76110b7009a0090f/joblib-1.5.2-py3-none-any.whl", hash = "sha256:4e1f0bdbb987e6d843c70cf43714cb276623def372df3c22fe5266b2670bc241", size = 308396 }, + { url = "https://files.pythonhosted.org/packages/1e/e8/685f47e0d754320684db4425a0967f7d3fa70126bffd76110b7009a0090f/joblib-1.5.2-py3-none-any.whl", hash = "sha256:4e1f0bdbb987e6d843c70cf43714cb276623def372df3c22fe5266b2670bc241", size = 308396, upload_time = "2025-08-27T12:15:45.188Z" }, ] [[package]] name = "jsmin" version = "3.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5e/73/e01e4c5e11ad0494f4407a3f623ad4d87714909f50b17a06ed121034ff6e/jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc", size = 13925 } +sdist = { url = "https://files.pythonhosted.org/packages/5e/73/e01e4c5e11ad0494f4407a3f623ad4d87714909f50b17a06ed121034ff6e/jsmin-3.0.1.tar.gz", hash = "sha256:c0959a121ef94542e807a674142606f7e90214a2b3d1eb17300244bbb5cc2bfc", size = 13925, upload_time = "2022-01-16T20:35:59.13Z" } [[package]] name = "jsonlines" @@ -953,9 +976,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/35/87/bcda8e46c88d0e34cad2f09ee2d0c7f5957bccdb9791b0b934ec84d84be4/jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74", size = 11359 } +sdist = { url = "https://files.pythonhosted.org/packages/35/87/bcda8e46c88d0e34cad2f09ee2d0c7f5957bccdb9791b0b934ec84d84be4/jsonlines-4.0.0.tar.gz", hash = "sha256:0c6d2c09117550c089995247f605ae4cf77dd1533041d366351f6f298822ea74", size = 11359, upload_time = "2023-09-01T12:34:44.187Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/62/d9ba6323b9202dd2fe166beab8a86d29465c41a0288cbe229fac60c1ab8d/jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55", size = 8701 }, + { url = "https://files.pythonhosted.org/packages/f8/62/d9ba6323b9202dd2fe166beab8a86d29465c41a0288cbe229fac60c1ab8d/jsonlines-4.0.0-py3-none-any.whl", hash = "sha256:185b334ff2ca5a91362993f42e83588a360cf95ce4b71a73548502bda52a7c55", size = 8701, upload_time = "2023-09-01T12:34:42.563Z" }, ] [[package]] @@ -965,9 +988,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ply" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838 } +sdist = { url = "https://files.pythonhosted.org/packages/6d/86/08646239a313f895186ff0a4573452038eed8c86f54380b3ebac34d32fb2/jsonpath-ng-1.7.0.tar.gz", hash = "sha256:f6f5f7fd4e5ff79c785f1573b394043b39849fb2bb47bcead935d12b00beab3c", size = 37838, upload_time = "2024-10-11T15:41:42.404Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105 }, + { url = "https://files.pythonhosted.org/packages/35/5a/73ecb3d82f8615f32ccdadeb9356726d6cae3a4bbc840b437ceb95708063/jsonpath_ng-1.7.0-py3-none-any.whl", hash = "sha256:f3d7f9e848cba1b6da28c55b1c26ff915dc9e0b1ba7e752a53d6da8d5cbd00b6", size = 30105, upload_time = "2024-11-20T17:58:30.418Z" }, ] [[package]] @@ -980,9 +1003,9 @@ dependencies = [ { name = "referencing" }, { name = "rpds-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85", size = 357342 } +sdist = { url = "https://files.pythonhosted.org/packages/74/69/f7185de793a29082a9f3c7728268ffb31cb5095131a9c139a74078e27336/jsonschema-4.25.1.tar.gz", hash = "sha256:e4a9655ce0da0c0b67a085847e00a3a51449e1157f4f75e9fb5aa545e122eb85", size = 357342, upload_time = "2025-08-18T17:03:50.038Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63", size = 90040 }, + { url = "https://files.pythonhosted.org/packages/bf/9c/8c95d856233c1f82500c2450b8c68576b4cf1c871db3afac5c34ff84e6fd/jsonschema-4.25.1-py3-none-any.whl", hash = "sha256:3fba0169e345c7175110351d456342c364814cfcf3b964ba4587f22915230a63", size = 90040, upload_time = "2025-08-18T17:03:48.373Z" }, ] [[package]] @@ -992,9 +1015,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "referencing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855 } +sdist = { url = "https://files.pythonhosted.org/packages/19/74/a633ee74eb36c44aa6d1095e7cc5569bebf04342ee146178e2d36600708b/jsonschema_specifications-2025.9.1.tar.gz", hash = "sha256:b540987f239e745613c7a9176f3edb72b832a4ac465cf02712288397832b5e8d", size = 32855, upload_time = "2025-09-08T01:34:59.186Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437 }, + { url = "https://files.pythonhosted.org/packages/41/45/1a4ed80516f02155c51f51e8cedb3c1902296743db0bbc66608a0db2814f/jsonschema_specifications-2025.9.1-py3-none-any.whl", hash = "sha256:98802fee3a11ee76ecaca44429fda8a41bff98b00a0f2838151b113f210cc6fe", size = 18437, upload_time = "2025-09-08T01:34:57.871Z" }, ] [[package]] @@ -1008,9 +1031,9 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019 } +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload_time = "2024-09-17T10:44:17.613Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105 }, + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload_time = "2024-09-17T10:44:15.218Z" }, ] [[package]] @@ -1022,18 +1045,18 @@ dependencies = [ { name = "pywin32", marker = "platform_python_implementation != 'PyPy' and sys_platform == 'win32'" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923 } +sdist = { url = "https://files.pythonhosted.org/packages/99/1b/72906d554acfeb588332eaaa6f61577705e9ec752ddb486f302dafa292d9/jupyter_core-5.8.1.tar.gz", hash = "sha256:0a5f9706f70e64786b75acba995988915ebd4601c8a52e534a40b51c95f59941", size = 88923, upload_time = "2025-05-27T07:38:16.655Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880 }, + { url = "https://files.pythonhosted.org/packages/2f/57/6bffd4b20b88da3800c5d691e0337761576ee688eb01299eae865689d2df/jupyter_core-5.8.1-py3-none-any.whl", hash = "sha256:c28d268fc90fb53f1338ded2eb410704c5449a358406e8a948b75706e24863d0", size = 28880, upload_time = "2025-05-27T07:38:15.137Z" }, ] [[package]] name = "jupyterlab-pygments" version = "0.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900 } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload_time = "2023-11-23T09:26:37.44Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884 }, + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload_time = "2023-11-23T09:26:34.325Z" }, ] [[package]] @@ -1047,9 +1070,9 @@ dependencies = [ { name = "packaging" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/15/14/41faf71e168fcc6c48268f0fc67ba0d6acf6ee4e2c5c785c2bccb967c29d/jupytext-1.17.3.tar.gz", hash = "sha256:8b6dae76d63c95cad47b493c38f0d9c74491fb621dcd0980abfcac4c8f168679", size = 3753151 } +sdist = { url = "https://files.pythonhosted.org/packages/15/14/41faf71e168fcc6c48268f0fc67ba0d6acf6ee4e2c5c785c2bccb967c29d/jupytext-1.17.3.tar.gz", hash = "sha256:8b6dae76d63c95cad47b493c38f0d9c74491fb621dcd0980abfcac4c8f168679", size = 3753151, upload_time = "2025-08-28T18:30:51.117Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/36/86/751ec86adb66104d15e650b704f89dddd64ba29283178b9651b9bc84b624/jupytext-1.17.3-py3-none-any.whl", hash = "sha256:09b0a94cd904416e823a5ba9f41bd181031215b6fc682d2b5c18e68354feb17c", size = 166548 }, + { url = "https://files.pythonhosted.org/packages/36/86/751ec86adb66104d15e650b704f89dddd64ba29283178b9651b9bc84b624/jupytext-1.17.3-py3-none-any.whl", hash = "sha256:09b0a94cd904416e823a5ba9f41bd181031215b6fc682d2b5c18e68354feb17c", size = 166548, upload_time = "2025-08-28T18:30:47.733Z" }, ] [[package]] @@ -1068,7 +1091,7 @@ dependencies = [ { name = "wheel" }, { name = "xlrd3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/ad/c1dafb7c59e685692a2eeafce83245b7c5f46e05881fdb77a0cbb7c19c74/libhxl-5.2.2.tar.gz", hash = "sha256:3a74d9f23561bfcefd20e5229c574bc68dfc114fdb6ba1ba684d9e9d7ea52483", size = 127736 } +sdist = { url = "https://files.pythonhosted.org/packages/63/ad/c1dafb7c59e685692a2eeafce83245b7c5f46e05881fdb77a0cbb7c19c74/libhxl-5.2.2.tar.gz", hash = "sha256:3a74d9f23561bfcefd20e5229c574bc68dfc114fdb6ba1ba684d9e9d7ea52483", size = 127736, upload_time = "2024-10-25T09:19:11.202Z" } [[package]] name = "license-expression" @@ -1077,9 +1100,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "boolean-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/40/71/d89bb0e71b1415453980fd32315f2a037aad9f7f70f695c7cec7035feb13/license_expression-30.4.4.tar.gz", hash = "sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd", size = 186402 } +sdist = { url = "https://files.pythonhosted.org/packages/40/71/d89bb0e71b1415453980fd32315f2a037aad9f7f70f695c7cec7035feb13/license_expression-30.4.4.tar.gz", hash = "sha256:73448f0aacd8d0808895bdc4b2c8e01a8d67646e4188f887375398c761f340fd", size = 186402, upload_time = "2025-07-22T11:13:32.17Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/af/40/791891d4c0c4dab4c5e187c17261cedc26285fd41541577f900470a45a4d/license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4", size = 120615 }, + { url = "https://files.pythonhosted.org/packages/af/40/791891d4c0c4dab4c5e187c17261cedc26285fd41541577f900470a45a4d/license_expression-30.4.4-py3-none-any.whl", hash = "sha256:421788fdcadb41f049d2dc934ce666626265aeccefddd25e162a26f23bcbf8a4", size = 120615, upload_time = "2025-07-22T11:13:31.217Z" }, ] [[package]] @@ -1090,98 +1113,98 @@ dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, { name = "win32-setctime", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559 } +sdist = { url = "https://files.pythonhosted.org/packages/3a/05/a1dae3dffd1116099471c643b8924f5aa6524411dc6c63fdae648c4f1aca/loguru-0.7.3.tar.gz", hash = "sha256:19480589e77d47b8d85b2c827ad95d49bf31b0dcde16593892eb51dd18706eb6", size = 63559, upload_time = "2024-12-06T11:20:56.608Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595 }, + { url = "https://files.pythonhosted.org/packages/0c/29/0348de65b8cc732daa3e33e67806420b2ae89bdce2b04af740289c5c6c8c/loguru-0.7.3-py3-none-any.whl", hash = "sha256:31a33c10c8e1e10422bfd431aeb5d351c7cf7fa671e3c4df004162264b28220c", size = 61595, upload_time = "2024-12-06T11:20:54.538Z" }, ] [[package]] name = "lxml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/aa/88/262177de60548e5a2bfc46ad28232c9e9cbde697bd94132aeb80364675cb/lxml-6.0.2.tar.gz", hash = "sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62", size = 4073426 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/c8/8ff2bc6b920c84355146cd1ab7d181bc543b89241cfb1ebee824a7c81457/lxml-6.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a59f5448ba2ceccd06995c95ea59a7674a10de0810f2ce90c9006f3cbc044456", size = 8661887 }, - { url = "https://files.pythonhosted.org/packages/37/6f/9aae1008083bb501ef63284220ce81638332f9ccbfa53765b2b7502203cf/lxml-6.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e8113639f3296706fbac34a30813929e29247718e88173ad849f57ca59754924", size = 4667818 }, - { url = "https://files.pythonhosted.org/packages/f1/ca/31fb37f99f37f1536c133476674c10b577e409c0a624384147653e38baf2/lxml-6.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a8bef9b9825fa8bc816a6e641bb67219489229ebc648be422af695f6e7a4fa7f", size = 4950807 }, - { url = "https://files.pythonhosted.org/packages/da/87/f6cb9442e4bada8aab5ae7e1046264f62fdbeaa6e3f6211b93f4c0dd97f1/lxml-6.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:65ea18d710fd14e0186c2f973dc60bb52039a275f82d3c44a0e42b43440ea534", size = 5109179 }, - { url = "https://files.pythonhosted.org/packages/c8/20/a7760713e65888db79bbae4f6146a6ae5c04e4a204a3c48896c408cd6ed2/lxml-6.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c371aa98126a0d4c739ca93ceffa0fd7a5d732e3ac66a46e74339acd4d334564", size = 5023044 }, - { url = "https://files.pythonhosted.org/packages/a2/b0/7e64e0460fcb36471899f75831509098f3fd7cd02a3833ac517433cb4f8f/lxml-6.0.2-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:700efd30c0fa1a3581d80a748157397559396090a51d306ea59a70020223d16f", size = 5359685 }, - { url = "https://files.pythonhosted.org/packages/b9/e1/e5df362e9ca4e2f48ed6411bd4b3a0ae737cc842e96877f5bf9428055ab4/lxml-6.0.2-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c33e66d44fe60e72397b487ee92e01da0d09ba2d66df8eae42d77b6d06e5eba0", size = 5654127 }, - { url = "https://files.pythonhosted.org/packages/c6/d1/232b3309a02d60f11e71857778bfcd4acbdb86c07db8260caf7d008b08f8/lxml-6.0.2-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90a345bbeaf9d0587a3aaffb7006aa39ccb6ff0e96a57286c0cb2fd1520ea192", size = 5253958 }, - { url = "https://files.pythonhosted.org/packages/35/35/d955a070994725c4f7d80583a96cab9c107c57a125b20bb5f708fe941011/lxml-6.0.2-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:064fdadaf7a21af3ed1dcaa106b854077fbeada827c18f72aec9346847cd65d0", size = 4711541 }, - { url = "https://files.pythonhosted.org/packages/1e/be/667d17363b38a78c4bd63cfd4b4632029fd68d2c2dc81f25ce9eb5224dd5/lxml-6.0.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fbc74f42c3525ac4ffa4b89cbdd00057b6196bcefe8bce794abd42d33a018092", size = 5267426 }, - { url = "https://files.pythonhosted.org/packages/ea/47/62c70aa4a1c26569bc958c9ca86af2bb4e1f614e8c04fb2989833874f7ae/lxml-6.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6ddff43f702905a4e32bc24f3f2e2edfe0f8fde3277d481bffb709a4cced7a1f", size = 5064917 }, - { url = "https://files.pythonhosted.org/packages/bd/55/6ceddaca353ebd0f1908ef712c597f8570cc9c58130dbb89903198e441fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6da5185951d72e6f5352166e3da7b0dc27aa70bd1090b0eb3f7f7212b53f1bb8", size = 4788795 }, - { url = "https://files.pythonhosted.org/packages/cf/e8/fd63e15da5e3fd4c2146f8bbb3c14e94ab850589beab88e547b2dbce22e1/lxml-6.0.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:57a86e1ebb4020a38d295c04fc79603c7899e0df71588043eb218722dabc087f", size = 5676759 }, - { url = "https://files.pythonhosted.org/packages/76/47/b3ec58dc5c374697f5ba37412cd2728f427d056315d124dd4b61da381877/lxml-6.0.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2047d8234fe735ab77802ce5f2297e410ff40f5238aec569ad7c8e163d7b19a6", size = 5255666 }, - { url = "https://files.pythonhosted.org/packages/19/93/03ba725df4c3d72afd9596eef4a37a837ce8e4806010569bedfcd2cb68fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6f91fd2b2ea15a6800c8e24418c0775a1694eefc011392da73bc6cef2623b322", size = 5277989 }, - { url = "https://files.pythonhosted.org/packages/c6/80/c06de80bfce881d0ad738576f243911fccf992687ae09fd80b734712b39c/lxml-6.0.2-cp312-cp312-win32.whl", hash = "sha256:3ae2ce7d6fedfb3414a2b6c5e20b249c4c607f72cb8d2bb7cc9c6ec7c6f4e849", size = 3611456 }, - { url = "https://files.pythonhosted.org/packages/f7/d7/0cdfb6c3e30893463fb3d1e52bc5f5f99684a03c29a0b6b605cfae879cd5/lxml-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:72c87e5ee4e58a8354fb9c7c84cbf95a1c8236c127a5d1b7683f04bed8361e1f", size = 4011793 }, - { url = "https://files.pythonhosted.org/packages/ea/7b/93c73c67db235931527301ed3785f849c78991e2e34f3fd9a6663ffda4c5/lxml-6.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:61cb10eeb95570153e0c0e554f58df92ecf5109f75eacad4a95baa709e26c3d6", size = 3672836 }, - { url = "https://files.pythonhosted.org/packages/53/fd/4e8f0540608977aea078bf6d79f128e0e2c2bba8af1acf775c30baa70460/lxml-6.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9b33d21594afab46f37ae58dfadd06636f154923c4e8a4d754b0127554eb2e77", size = 8648494 }, - { url = "https://files.pythonhosted.org/packages/5d/f4/2a94a3d3dfd6c6b433501b8d470a1960a20ecce93245cf2db1706adf6c19/lxml-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c8963287d7a4c5c9a432ff487c52e9c5618667179c18a204bdedb27310f022f", size = 4661146 }, - { url = "https://files.pythonhosted.org/packages/25/2e/4efa677fa6b322013035d38016f6ae859d06cac67437ca7dc708a6af7028/lxml-6.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1941354d92699fb5ffe6ed7b32f9649e43c2feb4b97205f75866f7d21aa91452", size = 4946932 }, - { url = "https://files.pythonhosted.org/packages/ce/0f/526e78a6d38d109fdbaa5049c62e1d32fdd70c75fb61c4eadf3045d3d124/lxml-6.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb2f6ca0ae2d983ded09357b84af659c954722bbf04dea98030064996d156048", size = 5100060 }, - { url = "https://files.pythonhosted.org/packages/81/76/99de58d81fa702cc0ea7edae4f4640416c2062813a00ff24bd70ac1d9c9b/lxml-6.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb2a12d704f180a902d7fa778c6d71f36ceb7b0d317f34cdc76a5d05aa1dd1df", size = 5019000 }, - { url = "https://files.pythonhosted.org/packages/b5/35/9e57d25482bc9a9882cb0037fdb9cc18f4b79d85df94fa9d2a89562f1d25/lxml-6.0.2-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:6ec0e3f745021bfed19c456647f0298d60a24c9ff86d9d051f52b509663feeb1", size = 5348496 }, - { url = "https://files.pythonhosted.org/packages/a6/8e/cb99bd0b83ccc3e8f0f528e9aa1f7a9965dfec08c617070c5db8d63a87ce/lxml-6.0.2-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:846ae9a12d54e368933b9759052d6206a9e8b250291109c48e350c1f1f49d916", size = 5643779 }, - { url = "https://files.pythonhosted.org/packages/d0/34/9e591954939276bb679b73773836c6684c22e56d05980e31d52a9a8deb18/lxml-6.0.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef9266d2aa545d7374938fb5c484531ef5a2ec7f2d573e62f8ce722c735685fd", size = 5244072 }, - { url = "https://files.pythonhosted.org/packages/8d/27/b29ff065f9aaca443ee377aff699714fcbffb371b4fce5ac4ca759e436d5/lxml-6.0.2-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:4077b7c79f31755df33b795dc12119cb557a0106bfdab0d2c2d97bd3cf3dffa6", size = 4718675 }, - { url = "https://files.pythonhosted.org/packages/2b/9f/f756f9c2cd27caa1a6ef8c32ae47aadea697f5c2c6d07b0dae133c244fbe/lxml-6.0.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a7c5d5e5f1081955358533be077166ee97ed2571d6a66bdba6ec2f609a715d1a", size = 5255171 }, - { url = "https://files.pythonhosted.org/packages/61/46/bb85ea42d2cb1bd8395484fd72f38e3389611aa496ac7772da9205bbda0e/lxml-6.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8f8d0cbd0674ee89863a523e6994ac25fd5be9c8486acfc3e5ccea679bad2679", size = 5057175 }, - { url = "https://files.pythonhosted.org/packages/95/0c/443fc476dcc8e41577f0af70458c50fe299a97bb6b7505bb1ae09aa7f9ac/lxml-6.0.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2cbcbf6d6e924c28f04a43f3b6f6e272312a090f269eff68a2982e13e5d57659", size = 4785688 }, - { url = "https://files.pythonhosted.org/packages/48/78/6ef0b359d45bb9697bc5a626e1992fa5d27aa3f8004b137b2314793b50a0/lxml-6.0.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dfb874cfa53340009af6bdd7e54ebc0d21012a60a4e65d927c2e477112e63484", size = 5660655 }, - { url = "https://files.pythonhosted.org/packages/ff/ea/e1d33808f386bc1339d08c0dcada6e4712d4ed8e93fcad5f057070b7988a/lxml-6.0.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fb8dae0b6b8b7f9e96c26fdd8121522ce5de9bb5538010870bd538683d30e9a2", size = 5247695 }, - { url = "https://files.pythonhosted.org/packages/4f/47/eba75dfd8183673725255247a603b4ad606f4ae657b60c6c145b381697da/lxml-6.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:358d9adae670b63e95bc59747c72f4dc97c9ec58881d4627fe0120da0f90d314", size = 5269841 }, - { url = "https://files.pythonhosted.org/packages/76/04/5c5e2b8577bc936e219becb2e98cdb1aca14a4921a12995b9d0c523502ae/lxml-6.0.2-cp313-cp313-win32.whl", hash = "sha256:e8cd2415f372e7e5a789d743d133ae474290a90b9023197fd78f32e2dc6873e2", size = 3610700 }, - { url = "https://files.pythonhosted.org/packages/fe/0a/4643ccc6bb8b143e9f9640aa54e38255f9d3b45feb2cbe7ae2ca47e8782e/lxml-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:b30d46379644fbfc3ab81f8f82ae4de55179414651f110a1514f0b1f8f6cb2d7", size = 4010347 }, - { url = "https://files.pythonhosted.org/packages/31/ef/dcf1d29c3f530577f61e5fe2f1bd72929acf779953668a8a47a479ae6f26/lxml-6.0.2-cp313-cp313-win_arm64.whl", hash = "sha256:13dcecc9946dca97b11b7c40d29fba63b55ab4170d3c0cf8c0c164343b9bfdcf", size = 3671248 }, - { url = "https://files.pythonhosted.org/packages/03/15/d4a377b385ab693ce97b472fe0c77c2b16ec79590e688b3ccc71fba19884/lxml-6.0.2-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:b0c732aa23de8f8aec23f4b580d1e52905ef468afb4abeafd3fec77042abb6fe", size = 8659801 }, - { url = "https://files.pythonhosted.org/packages/c8/e8/c128e37589463668794d503afaeb003987373c5f94d667124ffd8078bbd9/lxml-6.0.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4468e3b83e10e0317a89a33d28f7aeba1caa4d1a6fd457d115dd4ffe90c5931d", size = 4659403 }, - { url = "https://files.pythonhosted.org/packages/00/ce/74903904339decdf7da7847bb5741fc98a5451b42fc419a86c0c13d26fe2/lxml-6.0.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:abd44571493973bad4598a3be7e1d807ed45aa2adaf7ab92ab7c62609569b17d", size = 4966974 }, - { url = "https://files.pythonhosted.org/packages/1f/d3/131dec79ce61c5567fecf82515bd9bc36395df42501b50f7f7f3bd065df0/lxml-6.0.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:370cd78d5855cfbffd57c422851f7d3864e6ae72d0da615fca4dad8c45d375a5", size = 5102953 }, - { url = "https://files.pythonhosted.org/packages/3a/ea/a43ba9bb750d4ffdd885f2cd333572f5bb900cd2408b67fdda07e85978a0/lxml-6.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:901e3b4219fa04ef766885fb40fa516a71662a4c61b80c94d25336b4934b71c0", size = 5055054 }, - { url = "https://files.pythonhosted.org/packages/60/23/6885b451636ae286c34628f70a7ed1fcc759f8d9ad382d132e1c8d3d9bfd/lxml-6.0.2-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:a4bf42d2e4cf52c28cc1812d62426b9503cdb0c87a6de81442626aa7d69707ba", size = 5352421 }, - { url = "https://files.pythonhosted.org/packages/48/5b/fc2ddfc94ddbe3eebb8e9af6e3fd65e2feba4967f6a4e9683875c394c2d8/lxml-6.0.2-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2c7fdaa4d7c3d886a42534adec7cfac73860b89b4e5298752f60aa5984641a0", size = 5673684 }, - { url = "https://files.pythonhosted.org/packages/29/9c/47293c58cc91769130fbf85531280e8cc7868f7fbb6d92f4670071b9cb3e/lxml-6.0.2-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:98a5e1660dc7de2200b00d53fa00bcd3c35a3608c305d45a7bbcaf29fa16e83d", size = 5252463 }, - { url = "https://files.pythonhosted.org/packages/9b/da/ba6eceb830c762b48e711ded880d7e3e89fc6c7323e587c36540b6b23c6b/lxml-6.0.2-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:dc051506c30b609238d79eda75ee9cab3e520570ec8219844a72a46020901e37", size = 4698437 }, - { url = "https://files.pythonhosted.org/packages/a5/24/7be3f82cb7990b89118d944b619e53c656c97dc89c28cfb143fdb7cd6f4d/lxml-6.0.2-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8799481bbdd212470d17513a54d568f44416db01250f49449647b5ab5b5dccb9", size = 5269890 }, - { url = "https://files.pythonhosted.org/packages/1b/bd/dcfb9ea1e16c665efd7538fc5d5c34071276ce9220e234217682e7d2c4a5/lxml-6.0.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9261bb77c2dab42f3ecd9103951aeca2c40277701eb7e912c545c1b16e0e4917", size = 5097185 }, - { url = "https://files.pythonhosted.org/packages/21/04/a60b0ff9314736316f28316b694bccbbabe100f8483ad83852d77fc7468e/lxml-6.0.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:65ac4a01aba353cfa6d5725b95d7aed6356ddc0a3cd734de00124d285b04b64f", size = 4745895 }, - { url = "https://files.pythonhosted.org/packages/d6/bd/7d54bd1846e5a310d9c715921c5faa71cf5c0853372adf78aee70c8d7aa2/lxml-6.0.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:b22a07cbb82fea98f8a2fd814f3d1811ff9ed76d0fc6abc84eb21527596e7cc8", size = 5695246 }, - { url = "https://files.pythonhosted.org/packages/fd/32/5643d6ab947bc371da21323acb2a6e603cedbe71cb4c99c8254289ab6f4e/lxml-6.0.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d759cdd7f3e055d6bc8d9bec3ad905227b2e4c785dc16c372eb5b5e83123f48a", size = 5260797 }, - { url = "https://files.pythonhosted.org/packages/33/da/34c1ec4cff1eea7d0b4cd44af8411806ed943141804ac9c5d565302afb78/lxml-6.0.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:945da35a48d193d27c188037a05fec5492937f66fb1958c24fc761fb9d40d43c", size = 5277404 }, - { url = "https://files.pythonhosted.org/packages/82/57/4eca3e31e54dc89e2c3507e1cd411074a17565fa5ffc437c4ae0a00d439e/lxml-6.0.2-cp314-cp314-win32.whl", hash = "sha256:be3aaa60da67e6153eb15715cc2e19091af5dc75faef8b8a585aea372507384b", size = 3670072 }, - { url = "https://files.pythonhosted.org/packages/e3/e0/c96cf13eccd20c9421ba910304dae0f619724dcf1702864fd59dd386404d/lxml-6.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:fa25afbadead523f7001caf0c2382afd272c315a033a7b06336da2637d92d6ed", size = 4080617 }, - { url = "https://files.pythonhosted.org/packages/d5/5d/b3f03e22b3d38d6f188ef044900a9b29b2fe0aebb94625ce9fe244011d34/lxml-6.0.2-cp314-cp314-win_arm64.whl", hash = "sha256:063eccf89df5b24e361b123e257e437f9e9878f425ee9aae3144c77faf6da6d8", size = 3754930 }, - { url = "https://files.pythonhosted.org/packages/5e/5c/42c2c4c03554580708fc738d13414801f340c04c3eff90d8d2d227145275/lxml-6.0.2-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:6162a86d86893d63084faaf4ff937b3daea233e3682fb4474db07395794fa80d", size = 8910380 }, - { url = "https://files.pythonhosted.org/packages/bf/4f/12df843e3e10d18d468a7557058f8d3733e8b6e12401f30b1ef29360740f/lxml-6.0.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:414aaa94e974e23a3e92e7ca5b97d10c0cf37b6481f50911032c69eeb3991bba", size = 4775632 }, - { url = "https://files.pythonhosted.org/packages/e4/0c/9dc31e6c2d0d418483cbcb469d1f5a582a1cd00a1f4081953d44051f3c50/lxml-6.0.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48461bd21625458dd01e14e2c38dd0aea69addc3c4f960c30d9f59d7f93be601", size = 4975171 }, - { url = "https://files.pythonhosted.org/packages/e7/2b/9b870c6ca24c841bdd887504808f0417aa9d8d564114689266f19ddf29c8/lxml-6.0.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25fcc59afc57d527cfc78a58f40ab4c9b8fd096a9a3f964d2781ffb6eb33f4ed", size = 5110109 }, - { url = "https://files.pythonhosted.org/packages/bf/0c/4f5f2a4dd319a178912751564471355d9019e220c20d7db3fb8307ed8582/lxml-6.0.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5179c60288204e6ddde3f774a93350177e08876eaf3ab78aa3a3649d43eb7d37", size = 5041061 }, - { url = "https://files.pythonhosted.org/packages/12/64/554eed290365267671fe001a20d72d14f468ae4e6acef1e179b039436967/lxml-6.0.2-cp314-cp314t-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:967aab75434de148ec80597b75062d8123cadf2943fb4281f385141e18b21338", size = 5306233 }, - { url = "https://files.pythonhosted.org/packages/7a/31/1d748aa275e71802ad9722df32a7a35034246b42c0ecdd8235412c3396ef/lxml-6.0.2-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d100fcc8930d697c6561156c6810ab4a508fb264c8b6779e6e61e2ed5e7558f9", size = 5604739 }, - { url = "https://files.pythonhosted.org/packages/8f/41/2c11916bcac09ed561adccacceaedd2bf0e0b25b297ea92aab99fd03d0fa/lxml-6.0.2-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ca59e7e13e5981175b8b3e4ab84d7da57993eeff53c07764dcebda0d0e64ecd", size = 5225119 }, - { url = "https://files.pythonhosted.org/packages/99/05/4e5c2873d8f17aa018e6afde417c80cc5d0c33be4854cce3ef5670c49367/lxml-6.0.2-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:957448ac63a42e2e49531b9d6c0fa449a1970dbc32467aaad46f11545be9af1d", size = 4633665 }, - { url = "https://files.pythonhosted.org/packages/0f/c9/dcc2da1bebd6275cdc723b515f93edf548b82f36a5458cca3578bc899332/lxml-6.0.2-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b7fc49c37f1786284b12af63152fe1d0990722497e2d5817acfe7a877522f9a9", size = 5234997 }, - { url = "https://files.pythonhosted.org/packages/9c/e2/5172e4e7468afca64a37b81dba152fc5d90e30f9c83c7c3213d6a02a5ce4/lxml-6.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e19e0643cc936a22e837f79d01a550678da8377d7d801a14487c10c34ee49c7e", size = 5090957 }, - { url = "https://files.pythonhosted.org/packages/a5/b3/15461fd3e5cd4ddcb7938b87fc20b14ab113b92312fc97afe65cd7c85de1/lxml-6.0.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:1db01e5cf14345628e0cbe71067204db658e2fb8e51e7f33631f5f4735fefd8d", size = 4764372 }, - { url = "https://files.pythonhosted.org/packages/05/33/f310b987c8bf9e61c4dd8e8035c416bd3230098f5e3cfa69fc4232de7059/lxml-6.0.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:875c6b5ab39ad5291588aed6925fac99d0097af0dd62f33c7b43736043d4a2ec", size = 5634653 }, - { url = "https://files.pythonhosted.org/packages/70/ff/51c80e75e0bc9382158133bdcf4e339b5886c6ee2418b5199b3f1a61ed6d/lxml-6.0.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:cdcbed9ad19da81c480dfd6dd161886db6096083c9938ead313d94b30aadf272", size = 5233795 }, - { url = "https://files.pythonhosted.org/packages/56/4d/4856e897df0d588789dd844dbed9d91782c4ef0b327f96ce53c807e13128/lxml-6.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80dadc234ebc532e09be1975ff538d154a7fa61ea5031c03d25178855544728f", size = 5257023 }, - { url = "https://files.pythonhosted.org/packages/0f/85/86766dfebfa87bea0ab78e9ff7a4b4b45225df4b4d3b8cc3c03c5cd68464/lxml-6.0.2-cp314-cp314t-win32.whl", hash = "sha256:da08e7bb297b04e893d91087df19638dc7a6bb858a954b0cc2b9f5053c922312", size = 3911420 }, - { url = "https://files.pythonhosted.org/packages/fe/1a/b248b355834c8e32614650b8008c69ffeb0ceb149c793961dd8c0b991bb3/lxml-6.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:252a22982dca42f6155125ac76d3432e548a7625d56f5a273ee78a5057216eca", size = 4406837 }, - { url = "https://files.pythonhosted.org/packages/92/aa/df863bcc39c5e0946263454aba394de8a9084dbaff8ad143846b0d844739/lxml-6.0.2-cp314-cp314t-win_arm64.whl", hash = "sha256:bb4c1847b303835d89d785a18801a883436cdfd5dc3d62947f9c49e24f0f5a2c", size = 3822205 }, +sdist = { url = "https://files.pythonhosted.org/packages/aa/88/262177de60548e5a2bfc46ad28232c9e9cbde697bd94132aeb80364675cb/lxml-6.0.2.tar.gz", hash = "sha256:cd79f3367bd74b317dda655dc8fcfa304d9eb6e4fb06b7168c5cf27f96e0cd62", size = 4073426, upload_time = "2025-09-22T04:04:59.287Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/c8/8ff2bc6b920c84355146cd1ab7d181bc543b89241cfb1ebee824a7c81457/lxml-6.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:a59f5448ba2ceccd06995c95ea59a7674a10de0810f2ce90c9006f3cbc044456", size = 8661887, upload_time = "2025-09-22T04:01:17.265Z" }, + { url = "https://files.pythonhosted.org/packages/37/6f/9aae1008083bb501ef63284220ce81638332f9ccbfa53765b2b7502203cf/lxml-6.0.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:e8113639f3296706fbac34a30813929e29247718e88173ad849f57ca59754924", size = 4667818, upload_time = "2025-09-22T04:01:19.688Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ca/31fb37f99f37f1536c133476674c10b577e409c0a624384147653e38baf2/lxml-6.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a8bef9b9825fa8bc816a6e641bb67219489229ebc648be422af695f6e7a4fa7f", size = 4950807, upload_time = "2025-09-22T04:01:21.487Z" }, + { url = "https://files.pythonhosted.org/packages/da/87/f6cb9442e4bada8aab5ae7e1046264f62fdbeaa6e3f6211b93f4c0dd97f1/lxml-6.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:65ea18d710fd14e0186c2f973dc60bb52039a275f82d3c44a0e42b43440ea534", size = 5109179, upload_time = "2025-09-22T04:01:23.32Z" }, + { url = "https://files.pythonhosted.org/packages/c8/20/a7760713e65888db79bbae4f6146a6ae5c04e4a204a3c48896c408cd6ed2/lxml-6.0.2-cp312-cp312-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c371aa98126a0d4c739ca93ceffa0fd7a5d732e3ac66a46e74339acd4d334564", size = 5023044, upload_time = "2025-09-22T04:01:25.118Z" }, + { url = "https://files.pythonhosted.org/packages/a2/b0/7e64e0460fcb36471899f75831509098f3fd7cd02a3833ac517433cb4f8f/lxml-6.0.2-cp312-cp312-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:700efd30c0fa1a3581d80a748157397559396090a51d306ea59a70020223d16f", size = 5359685, upload_time = "2025-09-22T04:01:27.398Z" }, + { url = "https://files.pythonhosted.org/packages/b9/e1/e5df362e9ca4e2f48ed6411bd4b3a0ae737cc842e96877f5bf9428055ab4/lxml-6.0.2-cp312-cp312-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:c33e66d44fe60e72397b487ee92e01da0d09ba2d66df8eae42d77b6d06e5eba0", size = 5654127, upload_time = "2025-09-22T04:01:29.629Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d1/232b3309a02d60f11e71857778bfcd4acbdb86c07db8260caf7d008b08f8/lxml-6.0.2-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:90a345bbeaf9d0587a3aaffb7006aa39ccb6ff0e96a57286c0cb2fd1520ea192", size = 5253958, upload_time = "2025-09-22T04:01:31.535Z" }, + { url = "https://files.pythonhosted.org/packages/35/35/d955a070994725c4f7d80583a96cab9c107c57a125b20bb5f708fe941011/lxml-6.0.2-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:064fdadaf7a21af3ed1dcaa106b854077fbeada827c18f72aec9346847cd65d0", size = 4711541, upload_time = "2025-09-22T04:01:33.801Z" }, + { url = "https://files.pythonhosted.org/packages/1e/be/667d17363b38a78c4bd63cfd4b4632029fd68d2c2dc81f25ce9eb5224dd5/lxml-6.0.2-cp312-cp312-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:fbc74f42c3525ac4ffa4b89cbdd00057b6196bcefe8bce794abd42d33a018092", size = 5267426, upload_time = "2025-09-22T04:01:35.639Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/62c70aa4a1c26569bc958c9ca86af2bb4e1f614e8c04fb2989833874f7ae/lxml-6.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6ddff43f702905a4e32bc24f3f2e2edfe0f8fde3277d481bffb709a4cced7a1f", size = 5064917, upload_time = "2025-09-22T04:01:37.448Z" }, + { url = "https://files.pythonhosted.org/packages/bd/55/6ceddaca353ebd0f1908ef712c597f8570cc9c58130dbb89903198e441fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:6da5185951d72e6f5352166e3da7b0dc27aa70bd1090b0eb3f7f7212b53f1bb8", size = 4788795, upload_time = "2025-09-22T04:01:39.165Z" }, + { url = "https://files.pythonhosted.org/packages/cf/e8/fd63e15da5e3fd4c2146f8bbb3c14e94ab850589beab88e547b2dbce22e1/lxml-6.0.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:57a86e1ebb4020a38d295c04fc79603c7899e0df71588043eb218722dabc087f", size = 5676759, upload_time = "2025-09-22T04:01:41.506Z" }, + { url = "https://files.pythonhosted.org/packages/76/47/b3ec58dc5c374697f5ba37412cd2728f427d056315d124dd4b61da381877/lxml-6.0.2-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:2047d8234fe735ab77802ce5f2297e410ff40f5238aec569ad7c8e163d7b19a6", size = 5255666, upload_time = "2025-09-22T04:01:43.363Z" }, + { url = "https://files.pythonhosted.org/packages/19/93/03ba725df4c3d72afd9596eef4a37a837ce8e4806010569bedfcd2cb68fd/lxml-6.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6f91fd2b2ea15a6800c8e24418c0775a1694eefc011392da73bc6cef2623b322", size = 5277989, upload_time = "2025-09-22T04:01:45.215Z" }, + { url = "https://files.pythonhosted.org/packages/c6/80/c06de80bfce881d0ad738576f243911fccf992687ae09fd80b734712b39c/lxml-6.0.2-cp312-cp312-win32.whl", hash = "sha256:3ae2ce7d6fedfb3414a2b6c5e20b249c4c607f72cb8d2bb7cc9c6ec7c6f4e849", size = 3611456, upload_time = "2025-09-22T04:01:48.243Z" }, + { url = "https://files.pythonhosted.org/packages/f7/d7/0cdfb6c3e30893463fb3d1e52bc5f5f99684a03c29a0b6b605cfae879cd5/lxml-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:72c87e5ee4e58a8354fb9c7c84cbf95a1c8236c127a5d1b7683f04bed8361e1f", size = 4011793, upload_time = "2025-09-22T04:01:50.042Z" }, + { url = "https://files.pythonhosted.org/packages/ea/7b/93c73c67db235931527301ed3785f849c78991e2e34f3fd9a6663ffda4c5/lxml-6.0.2-cp312-cp312-win_arm64.whl", hash = "sha256:61cb10eeb95570153e0c0e554f58df92ecf5109f75eacad4a95baa709e26c3d6", size = 3672836, upload_time = "2025-09-22T04:01:52.145Z" }, + { url = "https://files.pythonhosted.org/packages/53/fd/4e8f0540608977aea078bf6d79f128e0e2c2bba8af1acf775c30baa70460/lxml-6.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:9b33d21594afab46f37ae58dfadd06636f154923c4e8a4d754b0127554eb2e77", size = 8648494, upload_time = "2025-09-22T04:01:54.242Z" }, + { url = "https://files.pythonhosted.org/packages/5d/f4/2a94a3d3dfd6c6b433501b8d470a1960a20ecce93245cf2db1706adf6c19/lxml-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6c8963287d7a4c5c9a432ff487c52e9c5618667179c18a204bdedb27310f022f", size = 4661146, upload_time = "2025-09-22T04:01:56.282Z" }, + { url = "https://files.pythonhosted.org/packages/25/2e/4efa677fa6b322013035d38016f6ae859d06cac67437ca7dc708a6af7028/lxml-6.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1941354d92699fb5ffe6ed7b32f9649e43c2feb4b97205f75866f7d21aa91452", size = 4946932, upload_time = "2025-09-22T04:01:58.989Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0f/526e78a6d38d109fdbaa5049c62e1d32fdd70c75fb61c4eadf3045d3d124/lxml-6.0.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:bb2f6ca0ae2d983ded09357b84af659c954722bbf04dea98030064996d156048", size = 5100060, upload_time = "2025-09-22T04:02:00.812Z" }, + { url = "https://files.pythonhosted.org/packages/81/76/99de58d81fa702cc0ea7edae4f4640416c2062813a00ff24bd70ac1d9c9b/lxml-6.0.2-cp313-cp313-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:eb2a12d704f180a902d7fa778c6d71f36ceb7b0d317f34cdc76a5d05aa1dd1df", size = 5019000, upload_time = "2025-09-22T04:02:02.671Z" }, + { url = "https://files.pythonhosted.org/packages/b5/35/9e57d25482bc9a9882cb0037fdb9cc18f4b79d85df94fa9d2a89562f1d25/lxml-6.0.2-cp313-cp313-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:6ec0e3f745021bfed19c456647f0298d60a24c9ff86d9d051f52b509663feeb1", size = 5348496, upload_time = "2025-09-22T04:02:04.904Z" }, + { url = "https://files.pythonhosted.org/packages/a6/8e/cb99bd0b83ccc3e8f0f528e9aa1f7a9965dfec08c617070c5db8d63a87ce/lxml-6.0.2-cp313-cp313-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:846ae9a12d54e368933b9759052d6206a9e8b250291109c48e350c1f1f49d916", size = 5643779, upload_time = "2025-09-22T04:02:06.689Z" }, + { url = "https://files.pythonhosted.org/packages/d0/34/9e591954939276bb679b73773836c6684c22e56d05980e31d52a9a8deb18/lxml-6.0.2-cp313-cp313-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ef9266d2aa545d7374938fb5c484531ef5a2ec7f2d573e62f8ce722c735685fd", size = 5244072, upload_time = "2025-09-22T04:02:08.587Z" }, + { url = "https://files.pythonhosted.org/packages/8d/27/b29ff065f9aaca443ee377aff699714fcbffb371b4fce5ac4ca759e436d5/lxml-6.0.2-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:4077b7c79f31755df33b795dc12119cb557a0106bfdab0d2c2d97bd3cf3dffa6", size = 4718675, upload_time = "2025-09-22T04:02:10.783Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/f756f9c2cd27caa1a6ef8c32ae47aadea697f5c2c6d07b0dae133c244fbe/lxml-6.0.2-cp313-cp313-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:a7c5d5e5f1081955358533be077166ee97ed2571d6a66bdba6ec2f609a715d1a", size = 5255171, upload_time = "2025-09-22T04:02:12.631Z" }, + { url = "https://files.pythonhosted.org/packages/61/46/bb85ea42d2cb1bd8395484fd72f38e3389611aa496ac7772da9205bbda0e/lxml-6.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:8f8d0cbd0674ee89863a523e6994ac25fd5be9c8486acfc3e5ccea679bad2679", size = 5057175, upload_time = "2025-09-22T04:02:14.718Z" }, + { url = "https://files.pythonhosted.org/packages/95/0c/443fc476dcc8e41577f0af70458c50fe299a97bb6b7505bb1ae09aa7f9ac/lxml-6.0.2-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:2cbcbf6d6e924c28f04a43f3b6f6e272312a090f269eff68a2982e13e5d57659", size = 4785688, upload_time = "2025-09-22T04:02:16.957Z" }, + { url = "https://files.pythonhosted.org/packages/48/78/6ef0b359d45bb9697bc5a626e1992fa5d27aa3f8004b137b2314793b50a0/lxml-6.0.2-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:dfb874cfa53340009af6bdd7e54ebc0d21012a60a4e65d927c2e477112e63484", size = 5660655, upload_time = "2025-09-22T04:02:18.815Z" }, + { url = "https://files.pythonhosted.org/packages/ff/ea/e1d33808f386bc1339d08c0dcada6e4712d4ed8e93fcad5f057070b7988a/lxml-6.0.2-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:fb8dae0b6b8b7f9e96c26fdd8121522ce5de9bb5538010870bd538683d30e9a2", size = 5247695, upload_time = "2025-09-22T04:02:20.593Z" }, + { url = "https://files.pythonhosted.org/packages/4f/47/eba75dfd8183673725255247a603b4ad606f4ae657b60c6c145b381697da/lxml-6.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:358d9adae670b63e95bc59747c72f4dc97c9ec58881d4627fe0120da0f90d314", size = 5269841, upload_time = "2025-09-22T04:02:22.489Z" }, + { url = "https://files.pythonhosted.org/packages/76/04/5c5e2b8577bc936e219becb2e98cdb1aca14a4921a12995b9d0c523502ae/lxml-6.0.2-cp313-cp313-win32.whl", hash = "sha256:e8cd2415f372e7e5a789d743d133ae474290a90b9023197fd78f32e2dc6873e2", size = 3610700, upload_time = "2025-09-22T04:02:24.465Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0a/4643ccc6bb8b143e9f9640aa54e38255f9d3b45feb2cbe7ae2ca47e8782e/lxml-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:b30d46379644fbfc3ab81f8f82ae4de55179414651f110a1514f0b1f8f6cb2d7", size = 4010347, upload_time = "2025-09-22T04:02:26.286Z" }, + { url = "https://files.pythonhosted.org/packages/31/ef/dcf1d29c3f530577f61e5fe2f1bd72929acf779953668a8a47a479ae6f26/lxml-6.0.2-cp313-cp313-win_arm64.whl", hash = "sha256:13dcecc9946dca97b11b7c40d29fba63b55ab4170d3c0cf8c0c164343b9bfdcf", size = 3671248, upload_time = "2025-09-22T04:02:27.918Z" }, + { url = "https://files.pythonhosted.org/packages/03/15/d4a377b385ab693ce97b472fe0c77c2b16ec79590e688b3ccc71fba19884/lxml-6.0.2-cp314-cp314-macosx_10_13_universal2.whl", hash = "sha256:b0c732aa23de8f8aec23f4b580d1e52905ef468afb4abeafd3fec77042abb6fe", size = 8659801, upload_time = "2025-09-22T04:02:30.113Z" }, + { url = "https://files.pythonhosted.org/packages/c8/e8/c128e37589463668794d503afaeb003987373c5f94d667124ffd8078bbd9/lxml-6.0.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:4468e3b83e10e0317a89a33d28f7aeba1caa4d1a6fd457d115dd4ffe90c5931d", size = 4659403, upload_time = "2025-09-22T04:02:32.119Z" }, + { url = "https://files.pythonhosted.org/packages/00/ce/74903904339decdf7da7847bb5741fc98a5451b42fc419a86c0c13d26fe2/lxml-6.0.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:abd44571493973bad4598a3be7e1d807ed45aa2adaf7ab92ab7c62609569b17d", size = 4966974, upload_time = "2025-09-22T04:02:34.155Z" }, + { url = "https://files.pythonhosted.org/packages/1f/d3/131dec79ce61c5567fecf82515bd9bc36395df42501b50f7f7f3bd065df0/lxml-6.0.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:370cd78d5855cfbffd57c422851f7d3864e6ae72d0da615fca4dad8c45d375a5", size = 5102953, upload_time = "2025-09-22T04:02:36.054Z" }, + { url = "https://files.pythonhosted.org/packages/3a/ea/a43ba9bb750d4ffdd885f2cd333572f5bb900cd2408b67fdda07e85978a0/lxml-6.0.2-cp314-cp314-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:901e3b4219fa04ef766885fb40fa516a71662a4c61b80c94d25336b4934b71c0", size = 5055054, upload_time = "2025-09-22T04:02:38.154Z" }, + { url = "https://files.pythonhosted.org/packages/60/23/6885b451636ae286c34628f70a7ed1fcc759f8d9ad382d132e1c8d3d9bfd/lxml-6.0.2-cp314-cp314-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:a4bf42d2e4cf52c28cc1812d62426b9503cdb0c87a6de81442626aa7d69707ba", size = 5352421, upload_time = "2025-09-22T04:02:40.413Z" }, + { url = "https://files.pythonhosted.org/packages/48/5b/fc2ddfc94ddbe3eebb8e9af6e3fd65e2feba4967f6a4e9683875c394c2d8/lxml-6.0.2-cp314-cp314-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b2c7fdaa4d7c3d886a42534adec7cfac73860b89b4e5298752f60aa5984641a0", size = 5673684, upload_time = "2025-09-22T04:02:42.288Z" }, + { url = "https://files.pythonhosted.org/packages/29/9c/47293c58cc91769130fbf85531280e8cc7868f7fbb6d92f4670071b9cb3e/lxml-6.0.2-cp314-cp314-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:98a5e1660dc7de2200b00d53fa00bcd3c35a3608c305d45a7bbcaf29fa16e83d", size = 5252463, upload_time = "2025-09-22T04:02:44.165Z" }, + { url = "https://files.pythonhosted.org/packages/9b/da/ba6eceb830c762b48e711ded880d7e3e89fc6c7323e587c36540b6b23c6b/lxml-6.0.2-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:dc051506c30b609238d79eda75ee9cab3e520570ec8219844a72a46020901e37", size = 4698437, upload_time = "2025-09-22T04:02:46.524Z" }, + { url = "https://files.pythonhosted.org/packages/a5/24/7be3f82cb7990b89118d944b619e53c656c97dc89c28cfb143fdb7cd6f4d/lxml-6.0.2-cp314-cp314-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:8799481bbdd212470d17513a54d568f44416db01250f49449647b5ab5b5dccb9", size = 5269890, upload_time = "2025-09-22T04:02:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/1b/bd/dcfb9ea1e16c665efd7538fc5d5c34071276ce9220e234217682e7d2c4a5/lxml-6.0.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:9261bb77c2dab42f3ecd9103951aeca2c40277701eb7e912c545c1b16e0e4917", size = 5097185, upload_time = "2025-09-22T04:02:50.746Z" }, + { url = "https://files.pythonhosted.org/packages/21/04/a60b0ff9314736316f28316b694bccbbabe100f8483ad83852d77fc7468e/lxml-6.0.2-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:65ac4a01aba353cfa6d5725b95d7aed6356ddc0a3cd734de00124d285b04b64f", size = 4745895, upload_time = "2025-09-22T04:02:52.968Z" }, + { url = "https://files.pythonhosted.org/packages/d6/bd/7d54bd1846e5a310d9c715921c5faa71cf5c0853372adf78aee70c8d7aa2/lxml-6.0.2-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:b22a07cbb82fea98f8a2fd814f3d1811ff9ed76d0fc6abc84eb21527596e7cc8", size = 5695246, upload_time = "2025-09-22T04:02:54.798Z" }, + { url = "https://files.pythonhosted.org/packages/fd/32/5643d6ab947bc371da21323acb2a6e603cedbe71cb4c99c8254289ab6f4e/lxml-6.0.2-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d759cdd7f3e055d6bc8d9bec3ad905227b2e4c785dc16c372eb5b5e83123f48a", size = 5260797, upload_time = "2025-09-22T04:02:57.058Z" }, + { url = "https://files.pythonhosted.org/packages/33/da/34c1ec4cff1eea7d0b4cd44af8411806ed943141804ac9c5d565302afb78/lxml-6.0.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:945da35a48d193d27c188037a05fec5492937f66fb1958c24fc761fb9d40d43c", size = 5277404, upload_time = "2025-09-22T04:02:58.966Z" }, + { url = "https://files.pythonhosted.org/packages/82/57/4eca3e31e54dc89e2c3507e1cd411074a17565fa5ffc437c4ae0a00d439e/lxml-6.0.2-cp314-cp314-win32.whl", hash = "sha256:be3aaa60da67e6153eb15715cc2e19091af5dc75faef8b8a585aea372507384b", size = 3670072, upload_time = "2025-09-22T04:03:38.05Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e0/c96cf13eccd20c9421ba910304dae0f619724dcf1702864fd59dd386404d/lxml-6.0.2-cp314-cp314-win_amd64.whl", hash = "sha256:fa25afbadead523f7001caf0c2382afd272c315a033a7b06336da2637d92d6ed", size = 4080617, upload_time = "2025-09-22T04:03:39.835Z" }, + { url = "https://files.pythonhosted.org/packages/d5/5d/b3f03e22b3d38d6f188ef044900a9b29b2fe0aebb94625ce9fe244011d34/lxml-6.0.2-cp314-cp314-win_arm64.whl", hash = "sha256:063eccf89df5b24e361b123e257e437f9e9878f425ee9aae3144c77faf6da6d8", size = 3754930, upload_time = "2025-09-22T04:03:41.565Z" }, + { url = "https://files.pythonhosted.org/packages/5e/5c/42c2c4c03554580708fc738d13414801f340c04c3eff90d8d2d227145275/lxml-6.0.2-cp314-cp314t-macosx_10_13_universal2.whl", hash = "sha256:6162a86d86893d63084faaf4ff937b3daea233e3682fb4474db07395794fa80d", size = 8910380, upload_time = "2025-09-22T04:03:01.645Z" }, + { url = "https://files.pythonhosted.org/packages/bf/4f/12df843e3e10d18d468a7557058f8d3733e8b6e12401f30b1ef29360740f/lxml-6.0.2-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:414aaa94e974e23a3e92e7ca5b97d10c0cf37b6481f50911032c69eeb3991bba", size = 4775632, upload_time = "2025-09-22T04:03:03.814Z" }, + { url = "https://files.pythonhosted.org/packages/e4/0c/9dc31e6c2d0d418483cbcb469d1f5a582a1cd00a1f4081953d44051f3c50/lxml-6.0.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:48461bd21625458dd01e14e2c38dd0aea69addc3c4f960c30d9f59d7f93be601", size = 4975171, upload_time = "2025-09-22T04:03:05.651Z" }, + { url = "https://files.pythonhosted.org/packages/e7/2b/9b870c6ca24c841bdd887504808f0417aa9d8d564114689266f19ddf29c8/lxml-6.0.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:25fcc59afc57d527cfc78a58f40ab4c9b8fd096a9a3f964d2781ffb6eb33f4ed", size = 5110109, upload_time = "2025-09-22T04:03:07.452Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0c/4f5f2a4dd319a178912751564471355d9019e220c20d7db3fb8307ed8582/lxml-6.0.2-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5179c60288204e6ddde3f774a93350177e08876eaf3ab78aa3a3649d43eb7d37", size = 5041061, upload_time = "2025-09-22T04:03:09.297Z" }, + { url = "https://files.pythonhosted.org/packages/12/64/554eed290365267671fe001a20d72d14f468ae4e6acef1e179b039436967/lxml-6.0.2-cp314-cp314t-manylinux_2_26_i686.manylinux_2_28_i686.whl", hash = "sha256:967aab75434de148ec80597b75062d8123cadf2943fb4281f385141e18b21338", size = 5306233, upload_time = "2025-09-22T04:03:11.651Z" }, + { url = "https://files.pythonhosted.org/packages/7a/31/1d748aa275e71802ad9722df32a7a35034246b42c0ecdd8235412c3396ef/lxml-6.0.2-cp314-cp314t-manylinux_2_26_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:d100fcc8930d697c6561156c6810ab4a508fb264c8b6779e6e61e2ed5e7558f9", size = 5604739, upload_time = "2025-09-22T04:03:13.592Z" }, + { url = "https://files.pythonhosted.org/packages/8f/41/2c11916bcac09ed561adccacceaedd2bf0e0b25b297ea92aab99fd03d0fa/lxml-6.0.2-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2ca59e7e13e5981175b8b3e4ab84d7da57993eeff53c07764dcebda0d0e64ecd", size = 5225119, upload_time = "2025-09-22T04:03:15.408Z" }, + { url = "https://files.pythonhosted.org/packages/99/05/4e5c2873d8f17aa018e6afde417c80cc5d0c33be4854cce3ef5670c49367/lxml-6.0.2-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:957448ac63a42e2e49531b9d6c0fa449a1970dbc32467aaad46f11545be9af1d", size = 4633665, upload_time = "2025-09-22T04:03:17.262Z" }, + { url = "https://files.pythonhosted.org/packages/0f/c9/dcc2da1bebd6275cdc723b515f93edf548b82f36a5458cca3578bc899332/lxml-6.0.2-cp314-cp314t-manylinux_2_38_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:b7fc49c37f1786284b12af63152fe1d0990722497e2d5817acfe7a877522f9a9", size = 5234997, upload_time = "2025-09-22T04:03:19.14Z" }, + { url = "https://files.pythonhosted.org/packages/9c/e2/5172e4e7468afca64a37b81dba152fc5d90e30f9c83c7c3213d6a02a5ce4/lxml-6.0.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:e19e0643cc936a22e837f79d01a550678da8377d7d801a14487c10c34ee49c7e", size = 5090957, upload_time = "2025-09-22T04:03:21.436Z" }, + { url = "https://files.pythonhosted.org/packages/a5/b3/15461fd3e5cd4ddcb7938b87fc20b14ab113b92312fc97afe65cd7c85de1/lxml-6.0.2-cp314-cp314t-musllinux_1_2_armv7l.whl", hash = "sha256:1db01e5cf14345628e0cbe71067204db658e2fb8e51e7f33631f5f4735fefd8d", size = 4764372, upload_time = "2025-09-22T04:03:23.27Z" }, + { url = "https://files.pythonhosted.org/packages/05/33/f310b987c8bf9e61c4dd8e8035c416bd3230098f5e3cfa69fc4232de7059/lxml-6.0.2-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:875c6b5ab39ad5291588aed6925fac99d0097af0dd62f33c7b43736043d4a2ec", size = 5634653, upload_time = "2025-09-22T04:03:25.767Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/51c80e75e0bc9382158133bdcf4e339b5886c6ee2418b5199b3f1a61ed6d/lxml-6.0.2-cp314-cp314t-musllinux_1_2_riscv64.whl", hash = "sha256:cdcbed9ad19da81c480dfd6dd161886db6096083c9938ead313d94b30aadf272", size = 5233795, upload_time = "2025-09-22T04:03:27.62Z" }, + { url = "https://files.pythonhosted.org/packages/56/4d/4856e897df0d588789dd844dbed9d91782c4ef0b327f96ce53c807e13128/lxml-6.0.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:80dadc234ebc532e09be1975ff538d154a7fa61ea5031c03d25178855544728f", size = 5257023, upload_time = "2025-09-22T04:03:30.056Z" }, + { url = "https://files.pythonhosted.org/packages/0f/85/86766dfebfa87bea0ab78e9ff7a4b4b45225df4b4d3b8cc3c03c5cd68464/lxml-6.0.2-cp314-cp314t-win32.whl", hash = "sha256:da08e7bb297b04e893d91087df19638dc7a6bb858a954b0cc2b9f5053c922312", size = 3911420, upload_time = "2025-09-22T04:03:32.198Z" }, + { url = "https://files.pythonhosted.org/packages/fe/1a/b248b355834c8e32614650b8008c69ffeb0ceb149c793961dd8c0b991bb3/lxml-6.0.2-cp314-cp314t-win_amd64.whl", hash = "sha256:252a22982dca42f6155125ac76d3432e548a7625d56f5a273ee78a5057216eca", size = 4406837, upload_time = "2025-09-22T04:03:34.027Z" }, + { url = "https://files.pythonhosted.org/packages/92/aa/df863bcc39c5e0946263454aba394de8a9084dbaff8ad143846b0d844739/lxml-6.0.2-cp314-cp314t-win_arm64.whl", hash = "sha256:bb4c1847b303835d89d785a18801a883436cdfd5dc3d62947f9c49e24f0f5a2c", size = 3822205, upload_time = "2025-09-22T04:03:36.249Z" }, ] [[package]] name = "markdown" version = "3.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8d/37/02347f6d6d8279247a5837082ebc26fc0d5aaeaf75aa013fcbb433c777ab/markdown-3.9.tar.gz", hash = "sha256:d2900fe1782bd33bdbbd56859defef70c2e78fc46668f8eb9df3128138f2cb6a", size = 364585 } +sdist = { url = "https://files.pythonhosted.org/packages/8d/37/02347f6d6d8279247a5837082ebc26fc0d5aaeaf75aa013fcbb433c777ab/markdown-3.9.tar.gz", hash = "sha256:d2900fe1782bd33bdbbd56859defef70c2e78fc46668f8eb9df3128138f2cb6a", size = 364585, upload_time = "2025-09-04T20:25:22.885Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/70/ae/44c4a6a4cbb496d93c6257954260fe3a6e91b7bed2240e5dad2a717f5111/markdown-3.9-py3-none-any.whl", hash = "sha256:9f4d91ed810864ea88a6f32c07ba8bee1346c0cc1f6b1f9f6c822f2a9667d280", size = 107441 }, + { url = "https://files.pythonhosted.org/packages/70/ae/44c4a6a4cbb496d93c6257954260fe3a6e91b7bed2240e5dad2a717f5111/markdown-3.9-py3-none-any.whl", hash = "sha256:9f4d91ed810864ea88a6f32c07ba8bee1346c0cc1f6b1f9f6c822f2a9667d280", size = 107441, upload_time = "2025-09-04T20:25:21.784Z" }, ] [[package]] @@ -1191,56 +1214,56 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070 } +sdist = { url = "https://files.pythonhosted.org/packages/5b/f5/4ec618ed16cc4f8fb3b701563655a69816155e79e24a17b651541804721d/markdown_it_py-4.0.0.tar.gz", hash = "sha256:cb0a2b4aa34f932c007117b194e945bd74e0ec24133ceb5bac59009cda1cb9f3", size = 73070, upload_time = "2025-08-11T12:57:52.854Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321 }, + { url = "https://files.pythonhosted.org/packages/94/54/e7d793b573f298e1c9013b8c4dade17d481164aa517d1d7148619c2cedbf/markdown_it_py-4.0.0-py3-none-any.whl", hash = "sha256:87327c59b172c5011896038353a81343b6754500a08cd7a4973bb48c6d578147", size = 87321, upload_time = "2025-08-11T12:57:51.923Z" }, ] [[package]] name = "marko" version = "2.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9c/6a/32545d2379822fb9a8843f01150011402888492541977a1193fe8d695df0/marko-2.2.0.tar.gz", hash = "sha256:213c146ba197c1d6bcb06ae3658b7d87e45f6def35c09905b86aa6bb1984eba6", size = 143406 } +sdist = { url = "https://files.pythonhosted.org/packages/9c/6a/32545d2379822fb9a8843f01150011402888492541977a1193fe8d695df0/marko-2.2.0.tar.gz", hash = "sha256:213c146ba197c1d6bcb06ae3658b7d87e45f6def35c09905b86aa6bb1984eba6", size = 143406, upload_time = "2025-08-08T09:47:05.396Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/b1/87f54d8842b2aafdbb162301ac730587e04f30ad0fe9aabb12fa29f7a6f7/marko-2.2.0-py3-none-any.whl", hash = "sha256:d84f867429142627e896322c8ef167664f3a6cd6ea5a2b70c6af055998041bb7", size = 42683 }, + { url = "https://files.pythonhosted.org/packages/94/b1/87f54d8842b2aafdbb162301ac730587e04f30ad0fe9aabb12fa29f7a6f7/marko-2.2.0-py3-none-any.whl", hash = "sha256:d84f867429142627e896322c8ef167664f3a6cd6ea5a2b70c6af055998041bb7", size = 42683, upload_time = "2025-08-08T09:47:04.175Z" }, ] [[package]] name = "markupsafe" version = "3.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348 }, - { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149 }, - { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118 }, - { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993 }, - { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178 }, - { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319 }, - { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352 }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097 }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601 }, - { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274 }, - { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352 }, - { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122 }, - { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085 }, - { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978 }, - { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208 }, - { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357 }, - { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344 }, - { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101 }, - { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603 }, - { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510 }, - { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486 }, - { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480 }, - { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914 }, - { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796 }, - { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473 }, - { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114 }, - { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098 }, - { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208 }, - { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739 }, +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload_time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/09/d1f21434c97fc42f09d290cbb6350d44eb12f09cc62c9476effdb33a18aa/MarkupSafe-3.0.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:9778bd8ab0a994ebf6f84c2b949e65736d5575320a17ae8984a77fab08db94cf", size = 14274, upload_time = "2024-10-18T15:21:13.777Z" }, + { url = "https://files.pythonhosted.org/packages/6b/b0/18f76bba336fa5aecf79d45dcd6c806c280ec44538b3c13671d49099fdd0/MarkupSafe-3.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:846ade7b71e3536c4e56b386c2a47adf5741d2d8b94ec9dc3e92e5e1ee1e2225", size = 12348, upload_time = "2024-10-18T15:21:14.822Z" }, + { url = "https://files.pythonhosted.org/packages/e0/25/dd5c0f6ac1311e9b40f4af06c78efde0f3b5cbf02502f8ef9501294c425b/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1c99d261bd2d5f6b59325c92c73df481e05e57f19837bdca8413b9eac4bd8028", size = 24149, upload_time = "2024-10-18T15:21:15.642Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f0/89e7aadfb3749d0f52234a0c8c7867877876e0a20b60e2188e9850794c17/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e17c96c14e19278594aa4841ec148115f9c7615a47382ecb6b82bd8fea3ab0c8", size = 23118, upload_time = "2024-10-18T15:21:17.133Z" }, + { url = "https://files.pythonhosted.org/packages/d5/da/f2eeb64c723f5e3777bc081da884b414671982008c47dcc1873d81f625b6/MarkupSafe-3.0.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:88416bd1e65dcea10bc7569faacb2c20ce071dd1f87539ca2ab364bf6231393c", size = 22993, upload_time = "2024-10-18T15:21:18.064Z" }, + { url = "https://files.pythonhosted.org/packages/da/0e/1f32af846df486dce7c227fe0f2398dc7e2e51d4a370508281f3c1c5cddc/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2181e67807fc2fa785d0592dc2d6206c019b9502410671cc905d132a92866557", size = 24178, upload_time = "2024-10-18T15:21:18.859Z" }, + { url = "https://files.pythonhosted.org/packages/c4/f6/bb3ca0532de8086cbff5f06d137064c8410d10779c4c127e0e47d17c0b71/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:52305740fe773d09cffb16f8ed0427942901f00adedac82ec8b67752f58a1b22", size = 23319, upload_time = "2024-10-18T15:21:19.671Z" }, + { url = "https://files.pythonhosted.org/packages/a2/82/8be4c96ffee03c5b4a034e60a31294daf481e12c7c43ab8e34a1453ee48b/MarkupSafe-3.0.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ad10d3ded218f1039f11a75f8091880239651b52e9bb592ca27de44eed242a48", size = 23352, upload_time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload_time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload_time = "2024-10-18T15:21:23.499Z" }, + { url = "https://files.pythonhosted.org/packages/83/0e/67eb10a7ecc77a0c2bbe2b0235765b98d164d81600746914bebada795e97/MarkupSafe-3.0.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ba9527cdd4c926ed0760bc301f6728ef34d841f405abf9d4f959c478421e4efd", size = 14274, upload_time = "2024-10-18T15:21:24.577Z" }, + { url = "https://files.pythonhosted.org/packages/2b/6d/9409f3684d3335375d04e5f05744dfe7e9f120062c9857df4ab490a1031a/MarkupSafe-3.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f8b3d067f2e40fe93e1ccdd6b2e1d16c43140e76f02fb1319a05cf2b79d99430", size = 12352, upload_time = "2024-10-18T15:21:25.382Z" }, + { url = "https://files.pythonhosted.org/packages/d2/f5/6eadfcd3885ea85fe2a7c128315cc1bb7241e1987443d78c8fe712d03091/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:569511d3b58c8791ab4c2e1285575265991e6d8f8700c7be0e88f86cb0672094", size = 24122, upload_time = "2024-10-18T15:21:26.199Z" }, + { url = "https://files.pythonhosted.org/packages/0c/91/96cf928db8236f1bfab6ce15ad070dfdd02ed88261c2afafd4b43575e9e9/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15ab75ef81add55874e7ab7055e9c397312385bd9ced94920f2802310c930396", size = 23085, upload_time = "2024-10-18T15:21:27.029Z" }, + { url = "https://files.pythonhosted.org/packages/c2/cf/c9d56af24d56ea04daae7ac0940232d31d5a8354f2b457c6d856b2057d69/MarkupSafe-3.0.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3818cb119498c0678015754eba762e0d61e5b52d34c8b13d770f0719f7b1d79", size = 22978, upload_time = "2024-10-18T15:21:27.846Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/8619835cd6a711d6272d62abb78c033bda638fdc54c4e7f4272cf1c0962b/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:cdb82a876c47801bb54a690c5ae105a46b392ac6099881cdfb9f6e95e4014c6a", size = 24208, upload_time = "2024-10-18T15:21:28.744Z" }, + { url = "https://files.pythonhosted.org/packages/f9/bf/176950a1792b2cd2102b8ffeb5133e1ed984547b75db47c25a67d3359f77/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:cabc348d87e913db6ab4aa100f01b08f481097838bdddf7c7a84b7575b7309ca", size = 23357, upload_time = "2024-10-18T15:21:29.545Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/9a02c1d335caabe5c4efb90e1b6e8ee944aa245c1aaaab8e8a618987d816/MarkupSafe-3.0.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:444dcda765c8a838eaae23112db52f1efaf750daddb2d9ca300bcae1039adc5c", size = 23344, upload_time = "2024-10-18T15:21:30.366Z" }, + { url = "https://files.pythonhosted.org/packages/ee/55/c271b57db36f748f0e04a759ace9f8f759ccf22b4960c270c78a394f58be/MarkupSafe-3.0.2-cp313-cp313-win32.whl", hash = "sha256:bcf3e58998965654fdaff38e58584d8937aa3096ab5354d493c77d1fdd66d7a1", size = 15101, upload_time = "2024-10-18T15:21:31.207Z" }, + { url = "https://files.pythonhosted.org/packages/29/88/07df22d2dd4df40aba9f3e402e6dc1b8ee86297dddbad4872bd5e7b0094f/MarkupSafe-3.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:e6a2a455bd412959b57a172ce6328d2dd1f01cb2135efda2e4576e8a23fa3b0f", size = 15603, upload_time = "2024-10-18T15:21:32.032Z" }, + { url = "https://files.pythonhosted.org/packages/62/6a/8b89d24db2d32d433dffcd6a8779159da109842434f1dd2f6e71f32f738c/MarkupSafe-3.0.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b5a6b3ada725cea8a5e634536b1b01c30bcdcd7f9c6fff4151548d5bf6b3a36c", size = 14510, upload_time = "2024-10-18T15:21:33.625Z" }, + { url = "https://files.pythonhosted.org/packages/7a/06/a10f955f70a2e5a9bf78d11a161029d278eeacbd35ef806c3fd17b13060d/MarkupSafe-3.0.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:a904af0a6162c73e3edcb969eeeb53a63ceeb5d8cf642fade7d39e7963a22ddb", size = 12486, upload_time = "2024-10-18T15:21:34.611Z" }, + { url = "https://files.pythonhosted.org/packages/34/cf/65d4a571869a1a9078198ca28f39fba5fbb910f952f9dbc5220afff9f5e6/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4aa4e5faecf353ed117801a068ebab7b7e09ffb6e1d5e412dc852e0da018126c", size = 25480, upload_time = "2024-10-18T15:21:35.398Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e3/90e9651924c430b885468b56b3d597cabf6d72be4b24a0acd1fa0e12af67/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c0ef13eaeee5b615fb07c9a7dadb38eac06a0608b41570d8ade51c56539e509d", size = 23914, upload_time = "2024-10-18T15:21:36.231Z" }, + { url = "https://files.pythonhosted.org/packages/66/8c/6c7cf61f95d63bb866db39085150df1f2a5bd3335298f14a66b48e92659c/MarkupSafe-3.0.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d16a81a06776313e817c951135cf7340a3e91e8c1ff2fac444cfd75fffa04afe", size = 23796, upload_time = "2024-10-18T15:21:37.073Z" }, + { url = "https://files.pythonhosted.org/packages/bb/35/cbe9238ec3f47ac9a7c8b3df7a808e7cb50fe149dc7039f5f454b3fba218/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:6381026f158fdb7c72a168278597a5e3a5222e83ea18f543112b2662a9b699c5", size = 25473, upload_time = "2024-10-18T15:21:37.932Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/7621a4382488aa283cc05e8984a9c219abad3bca087be9ec77e89939ded9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:3d79d162e7be8f996986c064d1c7c817f6df3a77fe3d6859f6f9e7be4b8c213a", size = 24114, upload_time = "2024-10-18T15:21:39.799Z" }, + { url = "https://files.pythonhosted.org/packages/0d/80/0985960e4b89922cb5a0bac0ed39c5b96cbc1a536a99f30e8c220a996ed9/MarkupSafe-3.0.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:131a3c7689c85f5ad20f9f6fb1b866f402c445b220c19fe4308c0b147ccd2ad9", size = 24098, upload_time = "2024-10-18T15:21:40.813Z" }, + { url = "https://files.pythonhosted.org/packages/82/78/fedb03c7d5380df2427038ec8d973587e90561b2d90cd472ce9254cf348b/MarkupSafe-3.0.2-cp313-cp313t-win32.whl", hash = "sha256:ba8062ed2cf21c07a9e295d5b8a2a5ce678b913b45fdf68c32d95d6c1291e0b6", size = 15208, upload_time = "2024-10-18T15:21:41.814Z" }, + { url = "https://files.pythonhosted.org/packages/4f/65/6079a46068dfceaeabb5dcad6d674f5f5c61a6fa5673746f42a9f4c233b3/MarkupSafe-3.0.2-cp313-cp313t-win_amd64.whl", hash = "sha256:e444a31f8db13eb18ada366ab3cf45fd4b31e4db1236a4448f68778c1d1a5a2f", size = 15739, upload_time = "2024-10-18T15:21:42.784Z" }, ] [[package]] @@ -1250,9 +1273,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159 } +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload_time = "2024-04-15T13:44:44.803Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 }, + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload_time = "2024-04-15T13:44:43.265Z" }, ] [[package]] @@ -1262,36 +1285,36 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b2/fd/a756d36c0bfba5f6e39a1cdbdbfdd448dc02692467d83816dff4592a1ebc/mdit_py_plugins-0.5.0.tar.gz", hash = "sha256:f4918cb50119f50446560513a8e311d574ff6aaed72606ddae6d35716fe809c6", size = 44655 } +sdist = { url = "https://files.pythonhosted.org/packages/b2/fd/a756d36c0bfba5f6e39a1cdbdbfdd448dc02692467d83816dff4592a1ebc/mdit_py_plugins-0.5.0.tar.gz", hash = "sha256:f4918cb50119f50446560513a8e311d574ff6aaed72606ddae6d35716fe809c6", size = 44655, upload_time = "2025-08-11T07:25:49.083Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fb/86/dd6e5db36df29e76c7a7699123569a4a18c1623ce68d826ed96c62643cae/mdit_py_plugins-0.5.0-py3-none-any.whl", hash = "sha256:07a08422fc1936a5d26d146759e9155ea466e842f5ab2f7d2266dd084c8dab1f", size = 57205 }, + { url = "https://files.pythonhosted.org/packages/fb/86/dd6e5db36df29e76c7a7699123569a4a18c1623ce68d826ed96c62643cae/mdit_py_plugins-0.5.0-py3-none-any.whl", hash = "sha256:07a08422fc1936a5d26d146759e9155ea466e842f5ab2f7d2266dd084c8dab1f", size = 57205, upload_time = "2025-08-11T07:25:47.597Z" }, ] [[package]] name = "mdurl" version = "0.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729 } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload_time = "2022-08-14T12:40:10.846Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload_time = "2022-08-14T12:40:09.779Z" }, ] [[package]] name = "mergedeep" version = "1.3.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661, upload_time = "2021-02-05T18:55:30.623Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload_time = "2021-02-05T18:55:29.583Z" }, ] [[package]] name = "mistune" version = "3.1.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/02/a7fb8b21d4d55ac93cdcde9d3638da5dd0ebdd3a4fed76c7725e10b81cbe/mistune-3.1.4.tar.gz", hash = "sha256:b5a7f801d389f724ec702840c11d8fc48f2b33519102fc7ee739e8177b672164", size = 94588 } +sdist = { url = "https://files.pythonhosted.org/packages/d7/02/a7fb8b21d4d55ac93cdcde9d3638da5dd0ebdd3a4fed76c7725e10b81cbe/mistune-3.1.4.tar.gz", hash = "sha256:b5a7f801d389f724ec702840c11d8fc48f2b33519102fc7ee739e8177b672164", size = 94588, upload_time = "2025-08-29T07:20:43.594Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl", hash = "sha256:93691da911e5d9d2e23bc54472892aff676df27a75274962ff9edc210364266d", size = 53481 }, + { url = "https://files.pythonhosted.org/packages/7a/f0/8282d9641415e9e33df173516226b404d367a0fc55e1a60424a152913abc/mistune-3.1.4-py3-none-any.whl", hash = "sha256:93691da911e5d9d2e23bc54472892aff676df27a75274962ff9edc210364266d", size = 53481, upload_time = "2025-08-29T07:20:42.218Z" }, ] [[package]] @@ -1313,9 +1336,9 @@ dependencies = [ { name = "pyyaml-env-tag" }, { name = "watchdog" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159, upload_time = "2024-08-30T12:24:06.899Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload_time = "2024-08-30T12:24:05.054Z" }, ] [[package]] @@ -1325,9 +1348,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/26/7c/fea9d842705ca8c9e7dd21da2d0b7b61dbdd8b6e58ca3c7c85b5604914e9/mkdocs_argref_plugin-0.5.0.tar.gz", hash = "sha256:b2982f9670419911f671ddff3f773b27fdc9184762ecd1e00c42aaab3e905e70", size = 7012 } +sdist = { url = "https://files.pythonhosted.org/packages/26/7c/fea9d842705ca8c9e7dd21da2d0b7b61dbdd8b6e58ca3c7c85b5604914e9/mkdocs_argref_plugin-0.5.0.tar.gz", hash = "sha256:b2982f9670419911f671ddff3f773b27fdc9184762ecd1e00c42aaab3e905e70", size = 7012, upload_time = "2024-08-25T12:50:09.138Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/eb/e7e7ea2f7e374e52fc8425d5cf67890be8278a6e620aa74775da2f1039f7/mkdocs_argref_plugin-0.5.0-py3-none-any.whl", hash = "sha256:6ec4be422bfb5654c38f96785b0093078c3ca3e16774162be607d6f8d483ceb9", size = 6790 }, + { url = "https://files.pythonhosted.org/packages/1e/eb/e7e7ea2f7e374e52fc8425d5cf67890be8278a6e620aa74775da2f1039f7/mkdocs_argref_plugin-0.5.0-py3-none-any.whl", hash = "sha256:6ec4be422bfb5654c38f96785b0093078c3ca3e16774162be607d6f8d483ceb9", size = 6790, upload_time = "2024-08-25T12:50:08.151Z" }, ] [[package]] @@ -1337,9 +1360,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/b7/efc75b7870a4fecbc9a05ba94ce622462a40b5a13670d00036c5b47bf82f/mkdocs-autolinks-plugin-0.7.1.tar.gz", hash = "sha256:445ddb9b417b7795856c30801bb430773186c1daf210bdeecf8305f55a47d151", size = 4375 } +sdist = { url = "https://files.pythonhosted.org/packages/63/b7/efc75b7870a4fecbc9a05ba94ce622462a40b5a13670d00036c5b47bf82f/mkdocs-autolinks-plugin-0.7.1.tar.gz", hash = "sha256:445ddb9b417b7795856c30801bb430773186c1daf210bdeecf8305f55a47d151", size = 4375, upload_time = "2023-08-04T14:42:25.67Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/9c/ee3d81a799b8b0b73a89625bcbf3c58cd369c8a26a1b415413edea9bf259/mkdocs_autolinks_plugin-0.7.1-py3-none-any.whl", hash = "sha256:5c6c17f6649b68e79a9ef0b2648d59f3072e18002b90ee1586a64c505f11ab12", size = 4235 }, + { url = "https://files.pythonhosted.org/packages/d4/9c/ee3d81a799b8b0b73a89625bcbf3c58cd369c8a26a1b415413edea9bf259/mkdocs_autolinks_plugin-0.7.1-py3-none-any.whl", hash = "sha256:5c6c17f6649b68e79a9ef0b2648d59f3072e18002b90ee1586a64c505f11ab12", size = 4235, upload_time = "2023-08-04T14:42:23.955Z" }, ] [[package]] @@ -1351,9 +1374,9 @@ dependencies = [ { name = "markupsafe" }, { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/51/fa/9124cd63d822e2bcbea1450ae68cdc3faf3655c69b455f3a7ed36ce6c628/mkdocs_autorefs-1.4.3.tar.gz", hash = "sha256:beee715b254455c4aa93b6ef3c67579c399ca092259cc41b7d9342573ff1fc75", size = 55425 } +sdist = { url = "https://files.pythonhosted.org/packages/51/fa/9124cd63d822e2bcbea1450ae68cdc3faf3655c69b455f3a7ed36ce6c628/mkdocs_autorefs-1.4.3.tar.gz", hash = "sha256:beee715b254455c4aa93b6ef3c67579c399ca092259cc41b7d9342573ff1fc75", size = 55425, upload_time = "2025-08-26T14:23:17.223Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/4d/7123b6fa2278000688ebd338e2a06d16870aaf9eceae6ba047ea05f92df1/mkdocs_autorefs-1.4.3-py3-none-any.whl", hash = "sha256:469d85eb3114801d08e9cc55d102b3ba65917a869b893403b8987b601cf55dc9", size = 25034 }, + { url = "https://files.pythonhosted.org/packages/9f/4d/7123b6fa2278000688ebd338e2a06d16870aaf9eceae6ba047ea05f92df1/mkdocs_autorefs-1.4.3-py3-none-any.whl", hash = "sha256:469d85eb3114801d08e9cc55d102b3ba65917a869b893403b8987b601cf55dc9", size = 25034, upload_time = "2025-08-26T14:23:15.906Z" }, ] [[package]] @@ -1364,7 +1387,7 @@ dependencies = [ { name = "mkdocs" }, { name = "pygtrie" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9a/3b/490d1b51fba7da69394e5a17f2c081eb65a10fb73565dc6793d53e4e4206/mkdocs-ezlinks-plugin-0.1.14.tar.gz", hash = "sha256:3e2085c16a850e022393e80194c17612e7b55de87fb45b3ffb618b5dfdb10811", size = 13366 } +sdist = { url = "https://files.pythonhosted.org/packages/9a/3b/490d1b51fba7da69394e5a17f2c081eb65a10fb73565dc6793d53e4e4206/mkdocs-ezlinks-plugin-0.1.14.tar.gz", hash = "sha256:3e2085c16a850e022393e80194c17612e7b55de87fb45b3ffb618b5dfdb10811", size = 13366, upload_time = "2022-01-24T20:10:30.91Z" } [[package]] name = "mkdocs-get-deps" @@ -1375,9 +1398,9 @@ dependencies = [ { name = "platformdirs" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload_time = "2023-11-20T17:51:09.981Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521, upload_time = "2023-11-20T17:51:08.587Z" }, ] [[package]] @@ -1388,9 +1411,9 @@ dependencies = [ { name = "mkdocs" }, { name = "pygithub" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c6/88/e724563e9ff1b119869ef0704157caa8d7b9b9b4a8a8faf8120aa01620e2/mkdocs-git-committers-plugin-0.2.3.tar.gz", hash = "sha256:77188d8aacc11d5233d6949435670e3d6545ffb7a0e274d56f32ed3984353c61", size = 5379 } +sdist = { url = "https://files.pythonhosted.org/packages/c6/88/e724563e9ff1b119869ef0704157caa8d7b9b9b4a8a8faf8120aa01620e2/mkdocs-git-committers-plugin-0.2.3.tar.gz", hash = "sha256:77188d8aacc11d5233d6949435670e3d6545ffb7a0e274d56f32ed3984353c61", size = 5379, upload_time = "2023-11-06T17:13:30.207Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/56/15fdbb6afa718a6c9de626bd11672040832ba547c03daf205e295be4e0d4/mkdocs_git_committers_plugin-0.2.3-py3-none-any.whl", hash = "sha256:4ca79efb7e61a72652d3512d61af5c40a4572e36667e1a00032aad524250780d", size = 4340 }, + { url = "https://files.pythonhosted.org/packages/81/56/15fdbb6afa718a6c9de626bd11672040832ba547c03daf205e295be4e0d4/mkdocs_git_committers_plugin-0.2.3-py3-none-any.whl", hash = "sha256:4ca79efb7e61a72652d3512d61af5c40a4572e36667e1a00032aad524250780d", size = 4340, upload_time = "2023-11-06T17:13:28.979Z" }, ] [[package]] @@ -1403,9 +1426,9 @@ dependencies = [ { name = "mkdocs" }, { name = "pytz" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/f8/a17ec39a4fc314d40cc96afdc1d401e393ebd4f42309d454cc940a2cf38a/mkdocs_git_revision_date_localized_plugin-1.4.7.tar.gz", hash = "sha256:10a49eff1e1c3cb766e054b9d8360c904ce4fe8c33ac3f6cc083ac6459c91953", size = 450473 } +sdist = { url = "https://files.pythonhosted.org/packages/5e/f8/a17ec39a4fc314d40cc96afdc1d401e393ebd4f42309d454cc940a2cf38a/mkdocs_git_revision_date_localized_plugin-1.4.7.tar.gz", hash = "sha256:10a49eff1e1c3cb766e054b9d8360c904ce4fe8c33ac3f6cc083ac6459c91953", size = 450473, upload_time = "2025-05-28T18:26:20.697Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/53/b6/106fcc15287e7228658fbd0ad9e8b0d775becced0a089cc39984641f4a0f/mkdocs_git_revision_date_localized_plugin-1.4.7-py3-none-any.whl", hash = "sha256:056c0a90242409148f1dc94d5c9d2c25b5b8ddd8de45489fa38f7fa7ccad2bc4", size = 25382 }, + { url = "https://files.pythonhosted.org/packages/53/b6/106fcc15287e7228658fbd0ad9e8b0d775becced0a089cc39984641f4a0f/mkdocs_git_revision_date_localized_plugin-1.4.7-py3-none-any.whl", hash = "sha256:056c0a90242409148f1dc94d5c9d2c25b5b8ddd8de45489fa38f7fa7ccad2bc4", size = 25382, upload_time = "2025-05-28T18:26:18.907Z" }, ] [[package]] @@ -1420,9 +1443,9 @@ dependencies = [ { name = "nbconvert" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6c/23/6ffb8d2fd2117aa860a04c6fe2510b21bc3c3c085907ffdd851caba53152/mkdocs_jupyter-0.25.1.tar.gz", hash = "sha256:0e9272ff4947e0ec683c92423a4bfb42a26477c103ab1a6ab8277e2dcc8f7afe", size = 1626747 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/23/6ffb8d2fd2117aa860a04c6fe2510b21bc3c3c085907ffdd851caba53152/mkdocs_jupyter-0.25.1.tar.gz", hash = "sha256:0e9272ff4947e0ec683c92423a4bfb42a26477c103ab1a6ab8277e2dcc8f7afe", size = 1626747, upload_time = "2024-10-15T14:56:32.373Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/37/5f1fd5c3f6954b3256f8126275e62af493b96fb6aef6c0dbc4ee326032ad/mkdocs_jupyter-0.25.1-py3-none-any.whl", hash = "sha256:3f679a857609885d322880e72533ef5255561bbfdb13cfee2a1e92ef4d4ad8d8", size = 1456197 }, + { url = "https://files.pythonhosted.org/packages/08/37/5f1fd5c3f6954b3256f8126275e62af493b96fb6aef6c0dbc4ee326032ad/mkdocs_jupyter-0.25.1-py3-none-any.whl", hash = "sha256:3f679a857609885d322880e72533ef5255561bbfdb13cfee2a1e92ef4d4ad8d8", size = 1456197, upload_time = "2024-10-15T14:56:29.854Z" }, ] [[package]] @@ -1443,18 +1466,18 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ba/ee/6ed7fc739bd7591485c8bec67d5984508d3f2733e708f32714c21593341a/mkdocs_material-9.6.20.tar.gz", hash = "sha256:e1f84d21ec5fb730673c4259b2e0d39f8d32a3fef613e3a8e7094b012d43e790", size = 4037822 } +sdist = { url = "https://files.pythonhosted.org/packages/ba/ee/6ed7fc739bd7591485c8bec67d5984508d3f2733e708f32714c21593341a/mkdocs_material-9.6.20.tar.gz", hash = "sha256:e1f84d21ec5fb730673c4259b2e0d39f8d32a3fef613e3a8e7094b012d43e790", size = 4037822, upload_time = "2025-09-15T08:48:01.816Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/67/d8/a31dd52e657bf12b20574706d07df8d767e1ab4340f9bfb9ce73950e5e59/mkdocs_material-9.6.20-py3-none-any.whl", hash = "sha256:b8d8c8b0444c7c06dd984b55ba456ce731f0035c5a1533cc86793618eb1e6c82", size = 9193367 }, + { url = "https://files.pythonhosted.org/packages/67/d8/a31dd52e657bf12b20574706d07df8d767e1ab4340f9bfb9ce73950e5e59/mkdocs_material-9.6.20-py3-none-any.whl", hash = "sha256:b8d8c8b0444c7c06dd984b55ba456ce731f0035c5a1533cc86793618eb1e6c82", size = 9193367, upload_time = "2025-09-15T08:47:58.722Z" }, ] [[package]] name = "mkdocs-material-extensions" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847, upload_time = "2023-11-22T19:09:45.208Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload_time = "2023-11-22T19:09:43.465Z" }, ] [[package]] @@ -1467,9 +1490,9 @@ dependencies = [ { name = "jsmin" }, { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/52/67/fe4b77e7a8ae7628392e28b14122588beaf6078b53eb91c7ed000fd158ac/mkdocs-minify-plugin-0.8.0.tar.gz", hash = "sha256:bc11b78b8120d79e817308e2b11539d790d21445eb63df831e393f76e52e753d", size = 8366 } +sdist = { url = "https://files.pythonhosted.org/packages/52/67/fe4b77e7a8ae7628392e28b14122588beaf6078b53eb91c7ed000fd158ac/mkdocs-minify-plugin-0.8.0.tar.gz", hash = "sha256:bc11b78b8120d79e817308e2b11539d790d21445eb63df831e393f76e52e753d", size = 8366, upload_time = "2024-01-29T16:11:32.982Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1b/cd/2e8d0d92421916e2ea4ff97f10a544a9bd5588eb747556701c983581df13/mkdocs_minify_plugin-0.8.0-py3-none-any.whl", hash = "sha256:5fba1a3f7bd9a2142c9954a6559a57e946587b21f133165ece30ea145c66aee6", size = 6723 }, + { url = "https://files.pythonhosted.org/packages/1b/cd/2e8d0d92421916e2ea4ff97f10a544a9bd5588eb747556701c983581df13/mkdocs_minify_plugin-0.8.0-py3-none-any.whl", hash = "sha256:5fba1a3f7bd9a2142c9954a6559a57e946587b21f133165ece30ea145c66aee6", size = 6723, upload_time = "2024-01-29T16:11:31.851Z" }, ] [[package]] @@ -1479,9 +1502,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0a/0e/f72a506a21bdb27b807124e00c688226848a388d1fd3980b80ae3cc27203/mkdocs_open_in_new_tab-1.0.8.tar.gz", hash = "sha256:3e0dad08cc9938b0b13097be8e0aa435919de1eeb2d1a648e66b5dee8d57e048", size = 5791 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/0e/f72a506a21bdb27b807124e00c688226848a388d1fd3980b80ae3cc27203/mkdocs_open_in_new_tab-1.0.8.tar.gz", hash = "sha256:3e0dad08cc9938b0b13097be8e0aa435919de1eeb2d1a648e66b5dee8d57e048", size = 5791, upload_time = "2024-11-18T13:15:13.977Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/21/94/44f3c868495481c868d08eea065c82803f1affd8553d3383b782f497613c/mkdocs_open_in_new_tab-1.0.8-py3-none-any.whl", hash = "sha256:051d767a4467b12d89827e1fea0ec660b05b027c726317fe4fceee5456e36ad2", size = 7717 }, + { url = "https://files.pythonhosted.org/packages/21/94/44f3c868495481c868d08eea065c82803f1affd8553d3383b782f497613c/mkdocs_open_in_new_tab-1.0.8-py3-none-any.whl", hash = "sha256:051d767a4467b12d89827e1fea0ec660b05b027c726317fe4fceee5456e36ad2", size = 7717, upload_time = "2024-11-18T13:15:12.286Z" }, ] [[package]] @@ -1491,9 +1514,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f1/a8/6d44a6cf07e969c7420cb36ab287b0669da636a2044de38a7d2208d5a758/mkdocs_redirects-1.2.2.tar.gz", hash = "sha256:3094981b42ffab29313c2c1b8ac3969861109f58b2dd58c45fc81cd44bfa0095", size = 7162 } +sdist = { url = "https://files.pythonhosted.org/packages/f1/a8/6d44a6cf07e969c7420cb36ab287b0669da636a2044de38a7d2208d5a758/mkdocs_redirects-1.2.2.tar.gz", hash = "sha256:3094981b42ffab29313c2c1b8ac3969861109f58b2dd58c45fc81cd44bfa0095", size = 7162, upload_time = "2024-11-07T14:57:21.109Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/ec/38443b1f2a3821bbcb24e46cd8ba979154417794d54baf949fefde1c2146/mkdocs_redirects-1.2.2-py3-none-any.whl", hash = "sha256:7dbfa5647b79a3589da4401403d69494bd1f4ad03b9c15136720367e1f340ed5", size = 6142 }, + { url = "https://files.pythonhosted.org/packages/c4/ec/38443b1f2a3821bbcb24e46cd8ba979154417794d54baf949fefde1c2146/mkdocs_redirects-1.2.2-py3-none-any.whl", hash = "sha256:7dbfa5647b79a3589da4401403d69494bd1f4ad03b9c15136720367e1f340ed5", size = 6142, upload_time = "2024-11-07T14:57:19.143Z" }, ] [[package]] @@ -1506,9 +1529,9 @@ dependencies = [ { name = "pyyaml" }, { name = "tabulate" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a1/1b/ca35e4b51a1814924153f7c8afa5a9c2f961688a9c275fa9f4afe7f5083a/mkdocs_table_reader_plugin-3.1.0.tar.gz", hash = "sha256:eb15688ee8c0cd1a842f506f18973b87be22bd7baa5e2e551089de6b7f9ec25b", size = 12510 } +sdist = { url = "https://files.pythonhosted.org/packages/a1/1b/ca35e4b51a1814924153f7c8afa5a9c2f961688a9c275fa9f4afe7f5083a/mkdocs_table_reader_plugin-3.1.0.tar.gz", hash = "sha256:eb15688ee8c0cd1a842f506f18973b87be22bd7baa5e2e551089de6b7f9ec25b", size = 12510, upload_time = "2024-08-29T14:08:09.54Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/6f/dcc966874f74f8580b99d2ffecbdc85dfd00c4a5039fedbee4ddd7fc8c7f/mkdocs_table_reader_plugin-3.1.0-py3-none-any.whl", hash = "sha256:50a1302661c14d96b90ba0434ae96110441e0c653ce23559e3c6911fe79e7bd2", size = 10564 }, + { url = "https://files.pythonhosted.org/packages/b3/6f/dcc966874f74f8580b99d2ffecbdc85dfd00c4a5039fedbee4ddd7fc8c7f/mkdocs_table_reader_plugin-3.1.0-py3-none-any.whl", hash = "sha256:50a1302661c14d96b90ba0434ae96110441e0c653ce23559e3c6911fe79e7bd2", size = 10564, upload_time = "2024-08-29T14:08:07.367Z" }, ] [[package]] @@ -1519,9 +1542,9 @@ dependencies = [ { name = "lxml" }, { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cf/16/45213649b6756744f36f31014fc8673df1d7c998bb9a801c2d769fff4114/mkdocs-video-1.5.0.tar.gz", hash = "sha256:0defc018f4b7927f8afffc4d8e039c84dfba636dffc5e25e2bfa8d6350bc8eca", size = 5633 } +sdist = { url = "https://files.pythonhosted.org/packages/cf/16/45213649b6756744f36f31014fc8673df1d7c998bb9a801c2d769fff4114/mkdocs-video-1.5.0.tar.gz", hash = "sha256:0defc018f4b7927f8afffc4d8e039c84dfba636dffc5e25e2bfa8d6350bc8eca", size = 5633, upload_time = "2023-03-17T17:36:43.343Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/3a/b51e305eca21cdd58f4eb06973099ba0ea679b1f437a92a49f8fc576310e/mkdocs_video-1.5.0-py3-none-any.whl", hash = "sha256:b35613d4dacbac2dfa94d8c2600383cda14ad99a1fa1542b5fc4e9c6d19e9fe1", size = 6570 }, + { url = "https://files.pythonhosted.org/packages/cc/3a/b51e305eca21cdd58f4eb06973099ba0ea679b1f437a92a49f8fc576310e/mkdocs_video-1.5.0-py3-none-any.whl", hash = "sha256:b35613d4dacbac2dfa94d8c2600383cda14ad99a1fa1542b5fc4e9c6d19e9fe1", size = 6570, upload_time = "2023-03-17T17:36:40.776Z" }, ] [[package]] @@ -1536,9 +1559,9 @@ dependencies = [ { name = "mkdocs-autorefs" }, { name = "pymdown-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c5/33/2fa3243439f794e685d3e694590d28469a9b8ea733af4b48c250a3ffc9a0/mkdocstrings-0.30.1.tar.gz", hash = "sha256:84a007aae9b707fb0aebfc9da23db4b26fc9ab562eb56e335e9ec480cb19744f", size = 106350 } +sdist = { url = "https://files.pythonhosted.org/packages/c5/33/2fa3243439f794e685d3e694590d28469a9b8ea733af4b48c250a3ffc9a0/mkdocstrings-0.30.1.tar.gz", hash = "sha256:84a007aae9b707fb0aebfc9da23db4b26fc9ab562eb56e335e9ec480cb19744f", size = 106350, upload_time = "2025-09-19T10:49:26.446Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/2c/f0dc4e1ee7f618f5bff7e05898d20bf8b6e7fa612038f768bfa295f136a4/mkdocstrings-0.30.1-py3-none-any.whl", hash = "sha256:41bd71f284ca4d44a668816193e4025c950b002252081e387433656ae9a70a82", size = 36704 }, + { url = "https://files.pythonhosted.org/packages/7b/2c/f0dc4e1ee7f618f5bff7e05898d20bf8b6e7fa612038f768bfa295f136a4/mkdocstrings-0.30.1-py3-none-any.whl", hash = "sha256:41bd71f284ca4d44a668816193e4025c950b002252081e387433656ae9a70a82", size = 36704, upload_time = "2025-09-19T10:49:24.805Z" }, ] [[package]] @@ -1550,9 +1573,9 @@ dependencies = [ { name = "mkdocs-autorefs" }, { name = "mkdocstrings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/ae/58ab2bfbee2792e92a98b97e872f7c003deb903071f75d8d83aa55db28fa/mkdocstrings_python-1.18.2.tar.gz", hash = "sha256:4ad536920a07b6336f50d4c6d5603316fafb1172c5c882370cbbc954770ad323", size = 207972 } +sdist = { url = "https://files.pythonhosted.org/packages/95/ae/58ab2bfbee2792e92a98b97e872f7c003deb903071f75d8d83aa55db28fa/mkdocstrings_python-1.18.2.tar.gz", hash = "sha256:4ad536920a07b6336f50d4c6d5603316fafb1172c5c882370cbbc954770ad323", size = 207972, upload_time = "2025-08-28T16:11:19.847Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d5/8f/ce008599d9adebf33ed144e7736914385e8537f5fc686fdb7cceb8c22431/mkdocstrings_python-1.18.2-py3-none-any.whl", hash = "sha256:944fe6deb8f08f33fa936d538233c4036e9f53e840994f6146e8e94eb71b600d", size = 138215 }, + { url = "https://files.pythonhosted.org/packages/d5/8f/ce008599d9adebf33ed144e7736914385e8537f5fc686fdb7cceb8c22431/mkdocstrings_python-1.18.2-py3-none-any.whl", hash = "sha256:944fe6deb8f08f33fa936d538233c4036e9f53e840994f6146e8e94eb71b600d", size = 138215, upload_time = "2025-08-28T16:11:18.176Z" }, ] [[package]] @@ -1564,36 +1587,36 @@ dependencies = [ { name = "pathspec" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c0/77/8f0d0001ffad290cef2f7f216f96c814866248a0b92a722365ed54648e7e/mypy-1.18.2.tar.gz", hash = "sha256:06a398102a5f203d7477b2923dda3634c36727fa5c237d8f859ef90c42a9924b", size = 3448846 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/06/dfdd2bc60c66611dd8335f463818514733bc763e4760dee289dcc33df709/mypy-1.18.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33eca32dd124b29400c31d7cf784e795b050ace0e1f91b8dc035672725617e34", size = 12908273 }, - { url = "https://files.pythonhosted.org/packages/81/14/6a9de6d13a122d5608e1a04130724caf9170333ac5a924e10f670687d3eb/mypy-1.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3c47adf30d65e89b2dcd2fa32f3aeb5e94ca970d2c15fcb25e297871c8e4764", size = 11920910 }, - { url = "https://files.pythonhosted.org/packages/5f/a9/b29de53e42f18e8cc547e38daa9dfa132ffdc64f7250e353f5c8cdd44bee/mypy-1.18.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d6c838e831a062f5f29d11c9057c6009f60cb294fea33a98422688181fe2893", size = 12465585 }, - { url = "https://files.pythonhosted.org/packages/77/ae/6c3d2c7c61ff21f2bee938c917616c92ebf852f015fb55917fd6e2811db2/mypy-1.18.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01199871b6110a2ce984bde85acd481232d17413868c9807e95c1b0739a58914", size = 13348562 }, - { url = "https://files.pythonhosted.org/packages/4d/31/aec68ab3b4aebdf8f36d191b0685d99faa899ab990753ca0fee60fb99511/mypy-1.18.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a2afc0fa0b0e91b4599ddfe0f91e2c26c2b5a5ab263737e998d6817874c5f7c8", size = 13533296 }, - { url = "https://files.pythonhosted.org/packages/9f/83/abcb3ad9478fca3ebeb6a5358bb0b22c95ea42b43b7789c7fb1297ca44f4/mypy-1.18.2-cp312-cp312-win_amd64.whl", hash = "sha256:d8068d0afe682c7c4897c0f7ce84ea77f6de953262b12d07038f4d296d547074", size = 9828828 }, - { url = "https://files.pythonhosted.org/packages/5f/04/7f462e6fbba87a72bc8097b93f6842499c428a6ff0c81dd46948d175afe8/mypy-1.18.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:07b8b0f580ca6d289e69209ec9d3911b4a26e5abfde32228a288eb79df129fcc", size = 12898728 }, - { url = "https://files.pythonhosted.org/packages/99/5b/61ed4efb64f1871b41fd0b82d29a64640f3516078f6c7905b68ab1ad8b13/mypy-1.18.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ed4482847168439651d3feee5833ccedbf6657e964572706a2adb1f7fa4dfe2e", size = 11910758 }, - { url = "https://files.pythonhosted.org/packages/3c/46/d297d4b683cc89a6e4108c4250a6a6b717f5fa96e1a30a7944a6da44da35/mypy-1.18.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3ad2afadd1e9fea5cf99a45a822346971ede8685cc581ed9cd4d42eaf940986", size = 12475342 }, - { url = "https://files.pythonhosted.org/packages/83/45/4798f4d00df13eae3bfdf726c9244bcb495ab5bd588c0eed93a2f2dd67f3/mypy-1.18.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a431a6f1ef14cf8c144c6b14793a23ec4eae3db28277c358136e79d7d062f62d", size = 13338709 }, - { url = "https://files.pythonhosted.org/packages/d7/09/479f7358d9625172521a87a9271ddd2441e1dab16a09708f056e97007207/mypy-1.18.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7ab28cc197f1dd77a67e1c6f35cd1f8e8b73ed2217e4fc005f9e6a504e46e7ba", size = 13529806 }, - { url = "https://files.pythonhosted.org/packages/71/cf/ac0f2c7e9d0ea3c75cd99dff7aec1c9df4a1376537cb90e4c882267ee7e9/mypy-1.18.2-cp313-cp313-win_amd64.whl", hash = "sha256:0e2785a84b34a72ba55fb5daf079a1003a34c05b22238da94fcae2bbe46f3544", size = 9833262 }, - { url = "https://files.pythonhosted.org/packages/5a/0c/7d5300883da16f0063ae53996358758b2a2df2a09c72a5061fa79a1f5006/mypy-1.18.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:62f0e1e988ad41c2a110edde6c398383a889d95b36b3e60bcf155f5164c4fdce", size = 12893775 }, - { url = "https://files.pythonhosted.org/packages/50/df/2cffbf25737bdb236f60c973edf62e3e7b4ee1c25b6878629e88e2cde967/mypy-1.18.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8795a039bab805ff0c1dfdb8cd3344642c2b99b8e439d057aba30850b8d3423d", size = 11936852 }, - { url = "https://files.pythonhosted.org/packages/be/50/34059de13dd269227fb4a03be1faee6e2a4b04a2051c82ac0a0b5a773c9a/mypy-1.18.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ca1e64b24a700ab5ce10133f7ccd956a04715463d30498e64ea8715236f9c9c", size = 12480242 }, - { url = "https://files.pythonhosted.org/packages/5b/11/040983fad5132d85914c874a2836252bbc57832065548885b5bb5b0d4359/mypy-1.18.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d924eef3795cc89fecf6bedc6ed32b33ac13e8321344f6ddbf8ee89f706c05cb", size = 13326683 }, - { url = "https://files.pythonhosted.org/packages/e9/ba/89b2901dd77414dd7a8c8729985832a5735053be15b744c18e4586e506ef/mypy-1.18.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20c02215a080e3a2be3aa50506c67242df1c151eaba0dcbc1e4e557922a26075", size = 13514749 }, - { url = "https://files.pythonhosted.org/packages/25/bc/cc98767cffd6b2928ba680f3e5bc969c4152bf7c2d83f92f5a504b92b0eb/mypy-1.18.2-cp314-cp314-win_amd64.whl", hash = "sha256:749b5f83198f1ca64345603118a6f01a4e99ad4bf9d103ddc5a3200cc4614adf", size = 9982959 }, - { url = "https://files.pythonhosted.org/packages/87/e3/be76d87158ebafa0309946c4a73831974d4d6ab4f4ef40c3b53a385a66fd/mypy-1.18.2-py3-none-any.whl", hash = "sha256:22a1748707dd62b58d2ae53562ffc4d7f8bcc727e8ac7cbc69c053ddc874d47e", size = 2352367 }, +sdist = { url = "https://files.pythonhosted.org/packages/c0/77/8f0d0001ffad290cef2f7f216f96c814866248a0b92a722365ed54648e7e/mypy-1.18.2.tar.gz", hash = "sha256:06a398102a5f203d7477b2923dda3634c36727fa5c237d8f859ef90c42a9924b", size = 3448846, upload_time = "2025-09-19T00:11:10.519Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/06/dfdd2bc60c66611dd8335f463818514733bc763e4760dee289dcc33df709/mypy-1.18.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:33eca32dd124b29400c31d7cf784e795b050ace0e1f91b8dc035672725617e34", size = 12908273, upload_time = "2025-09-19T00:10:58.321Z" }, + { url = "https://files.pythonhosted.org/packages/81/14/6a9de6d13a122d5608e1a04130724caf9170333ac5a924e10f670687d3eb/mypy-1.18.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a3c47adf30d65e89b2dcd2fa32f3aeb5e94ca970d2c15fcb25e297871c8e4764", size = 11920910, upload_time = "2025-09-19T00:10:20.043Z" }, + { url = "https://files.pythonhosted.org/packages/5f/a9/b29de53e42f18e8cc547e38daa9dfa132ffdc64f7250e353f5c8cdd44bee/mypy-1.18.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:5d6c838e831a062f5f29d11c9057c6009f60cb294fea33a98422688181fe2893", size = 12465585, upload_time = "2025-09-19T00:10:33.005Z" }, + { url = "https://files.pythonhosted.org/packages/77/ae/6c3d2c7c61ff21f2bee938c917616c92ebf852f015fb55917fd6e2811db2/mypy-1.18.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01199871b6110a2ce984bde85acd481232d17413868c9807e95c1b0739a58914", size = 13348562, upload_time = "2025-09-19T00:10:11.51Z" }, + { url = "https://files.pythonhosted.org/packages/4d/31/aec68ab3b4aebdf8f36d191b0685d99faa899ab990753ca0fee60fb99511/mypy-1.18.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a2afc0fa0b0e91b4599ddfe0f91e2c26c2b5a5ab263737e998d6817874c5f7c8", size = 13533296, upload_time = "2025-09-19T00:10:06.568Z" }, + { url = "https://files.pythonhosted.org/packages/9f/83/abcb3ad9478fca3ebeb6a5358bb0b22c95ea42b43b7789c7fb1297ca44f4/mypy-1.18.2-cp312-cp312-win_amd64.whl", hash = "sha256:d8068d0afe682c7c4897c0f7ce84ea77f6de953262b12d07038f4d296d547074", size = 9828828, upload_time = "2025-09-19T00:10:28.203Z" }, + { url = "https://files.pythonhosted.org/packages/5f/04/7f462e6fbba87a72bc8097b93f6842499c428a6ff0c81dd46948d175afe8/mypy-1.18.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:07b8b0f580ca6d289e69209ec9d3911b4a26e5abfde32228a288eb79df129fcc", size = 12898728, upload_time = "2025-09-19T00:10:01.33Z" }, + { url = "https://files.pythonhosted.org/packages/99/5b/61ed4efb64f1871b41fd0b82d29a64640f3516078f6c7905b68ab1ad8b13/mypy-1.18.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:ed4482847168439651d3feee5833ccedbf6657e964572706a2adb1f7fa4dfe2e", size = 11910758, upload_time = "2025-09-19T00:10:42.607Z" }, + { url = "https://files.pythonhosted.org/packages/3c/46/d297d4b683cc89a6e4108c4250a6a6b717f5fa96e1a30a7944a6da44da35/mypy-1.18.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c3ad2afadd1e9fea5cf99a45a822346971ede8685cc581ed9cd4d42eaf940986", size = 12475342, upload_time = "2025-09-19T00:11:00.371Z" }, + { url = "https://files.pythonhosted.org/packages/83/45/4798f4d00df13eae3bfdf726c9244bcb495ab5bd588c0eed93a2f2dd67f3/mypy-1.18.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a431a6f1ef14cf8c144c6b14793a23ec4eae3db28277c358136e79d7d062f62d", size = 13338709, upload_time = "2025-09-19T00:11:03.358Z" }, + { url = "https://files.pythonhosted.org/packages/d7/09/479f7358d9625172521a87a9271ddd2441e1dab16a09708f056e97007207/mypy-1.18.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7ab28cc197f1dd77a67e1c6f35cd1f8e8b73ed2217e4fc005f9e6a504e46e7ba", size = 13529806, upload_time = "2025-09-19T00:10:26.073Z" }, + { url = "https://files.pythonhosted.org/packages/71/cf/ac0f2c7e9d0ea3c75cd99dff7aec1c9df4a1376537cb90e4c882267ee7e9/mypy-1.18.2-cp313-cp313-win_amd64.whl", hash = "sha256:0e2785a84b34a72ba55fb5daf079a1003a34c05b22238da94fcae2bbe46f3544", size = 9833262, upload_time = "2025-09-19T00:10:40.035Z" }, + { url = "https://files.pythonhosted.org/packages/5a/0c/7d5300883da16f0063ae53996358758b2a2df2a09c72a5061fa79a1f5006/mypy-1.18.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:62f0e1e988ad41c2a110edde6c398383a889d95b36b3e60bcf155f5164c4fdce", size = 12893775, upload_time = "2025-09-19T00:10:03.814Z" }, + { url = "https://files.pythonhosted.org/packages/50/df/2cffbf25737bdb236f60c973edf62e3e7b4ee1c25b6878629e88e2cde967/mypy-1.18.2-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:8795a039bab805ff0c1dfdb8cd3344642c2b99b8e439d057aba30850b8d3423d", size = 11936852, upload_time = "2025-09-19T00:10:51.631Z" }, + { url = "https://files.pythonhosted.org/packages/be/50/34059de13dd269227fb4a03be1faee6e2a4b04a2051c82ac0a0b5a773c9a/mypy-1.18.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6ca1e64b24a700ab5ce10133f7ccd956a04715463d30498e64ea8715236f9c9c", size = 12480242, upload_time = "2025-09-19T00:11:07.955Z" }, + { url = "https://files.pythonhosted.org/packages/5b/11/040983fad5132d85914c874a2836252bbc57832065548885b5bb5b0d4359/mypy-1.18.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d924eef3795cc89fecf6bedc6ed32b33ac13e8321344f6ddbf8ee89f706c05cb", size = 13326683, upload_time = "2025-09-19T00:09:55.572Z" }, + { url = "https://files.pythonhosted.org/packages/e9/ba/89b2901dd77414dd7a8c8729985832a5735053be15b744c18e4586e506ef/mypy-1.18.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:20c02215a080e3a2be3aa50506c67242df1c151eaba0dcbc1e4e557922a26075", size = 13514749, upload_time = "2025-09-19T00:10:44.827Z" }, + { url = "https://files.pythonhosted.org/packages/25/bc/cc98767cffd6b2928ba680f3e5bc969c4152bf7c2d83f92f5a504b92b0eb/mypy-1.18.2-cp314-cp314-win_amd64.whl", hash = "sha256:749b5f83198f1ca64345603118a6f01a4e99ad4bf9d103ddc5a3200cc4614adf", size = 9982959, upload_time = "2025-09-19T00:10:37.344Z" }, + { url = "https://files.pythonhosted.org/packages/87/e3/be76d87158ebafa0309946c4a73831974d4d6ab4f4ef40c3b53a385a66fd/mypy-1.18.2-py3-none-any.whl", hash = "sha256:22a1748707dd62b58d2ae53562ffc4d7f8bcc727e8ac7cbc69c053ddc874d47e", size = 2352367, upload_time = "2025-09-19T00:10:15.489Z" }, ] [[package]] name = "mypy-extensions" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload_time = "2025-04-22T14:54:24.164Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 }, + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload_time = "2025-04-22T14:54:22.983Z" }, ] [[package]] @@ -1606,9 +1629,9 @@ dependencies = [ { name = "nbformat" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424 } +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload_time = "2024-12-19T10:32:27.164Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434 }, + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload_time = "2024-12-19T10:32:24.139Z" }, ] [[package]] @@ -1631,9 +1654,9 @@ dependencies = [ { name = "pygments" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715 } +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload_time = "2025-01-28T09:29:14.724Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525 }, + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload_time = "2025-01-28T09:29:12.551Z" }, ] [[package]] @@ -1646,115 +1669,118 @@ dependencies = [ { name = "jupyter-core" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749 } +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload_time = "2024-04-04T11:20:37.371Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454 }, + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload_time = "2024-04-04T11:20:34.895Z" }, ] [[package]] name = "nest-asyncio" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418 } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload_time = "2024-01-21T14:25:19.227Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload_time = "2024-01-21T14:25:17.223Z" }, ] [[package]] name = "networkx" version = "3.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065, upload_time = "2025-05-29T11:35:07.804Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406 }, + { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406, upload_time = "2025-05-29T11:35:04.961Z" }, ] [[package]] name = "nodeenv" version = "1.9.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437 } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload_time = "2024-06-04T18:44:11.171Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload_time = "2024-06-04T18:44:08.352Z" }, ] [[package]] name = "numpy" version = "2.3.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d0/19/95b3d357407220ed24c139018d2518fab0a61a948e68286a25f1a4d049ff/numpy-2.3.3.tar.gz", hash = "sha256:ddc7c39727ba62b80dfdbedf400d1c10ddfa8eefbd7ec8dcb118be8b56d31029", size = 20576648 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/51/5d/bb7fc075b762c96329147799e1bcc9176ab07ca6375ea976c475482ad5b3/numpy-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cfdd09f9c84a1a934cde1eec2267f0a43a7cd44b2cca4ff95b7c0d14d144b0bf", size = 20957014 }, - { url = "https://files.pythonhosted.org/packages/6b/0e/c6211bb92af26517acd52125a237a92afe9c3124c6a68d3b9f81b62a0568/numpy-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb32e3cf0f762aee47ad1ddc6672988f7f27045b0783c887190545baba73aa25", size = 14185220 }, - { url = "https://files.pythonhosted.org/packages/22/f2/07bb754eb2ede9073f4054f7c0286b0d9d2e23982e090a80d478b26d35ca/numpy-2.3.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396b254daeb0a57b1fe0ecb5e3cff6fa79a380fa97c8f7781a6d08cd429418fe", size = 5113918 }, - { url = "https://files.pythonhosted.org/packages/81/0a/afa51697e9fb74642f231ea36aca80fa17c8fb89f7a82abd5174023c3960/numpy-2.3.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:067e3d7159a5d8f8a0b46ee11148fc35ca9b21f61e3c49fbd0a027450e65a33b", size = 6647922 }, - { url = "https://files.pythonhosted.org/packages/5d/f5/122d9cdb3f51c520d150fef6e87df9279e33d19a9611a87c0d2cf78a89f4/numpy-2.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c02d0629d25d426585fb2e45a66154081b9fa677bc92a881ff1d216bc9919a8", size = 14281991 }, - { url = "https://files.pythonhosted.org/packages/51/64/7de3c91e821a2debf77c92962ea3fe6ac2bc45d0778c1cbe15d4fce2fd94/numpy-2.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9192da52b9745f7f0766531dcfa978b7763916f158bb63bdb8a1eca0068ab20", size = 16641643 }, - { url = "https://files.pythonhosted.org/packages/30/e4/961a5fa681502cd0d68907818b69f67542695b74e3ceaa513918103b7e80/numpy-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cd7de500a5b66319db419dc3c345244404a164beae0d0937283b907d8152e6ea", size = 16056787 }, - { url = "https://files.pythonhosted.org/packages/99/26/92c912b966e47fbbdf2ad556cb17e3a3088e2e1292b9833be1dfa5361a1a/numpy-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:93d4962d8f82af58f0b2eb85daaf1b3ca23fe0a85d0be8f1f2b7bb46034e56d7", size = 18579598 }, - { url = "https://files.pythonhosted.org/packages/17/b6/fc8f82cb3520768718834f310c37d96380d9dc61bfdaf05fe5c0b7653e01/numpy-2.3.3-cp312-cp312-win32.whl", hash = "sha256:5534ed6b92f9b7dca6c0a19d6df12d41c68b991cef051d108f6dbff3babc4ebf", size = 6320800 }, - { url = "https://files.pythonhosted.org/packages/32/ee/de999f2625b80d043d6d2d628c07d0d5555a677a3cf78fdf868d409b8766/numpy-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:497d7cad08e7092dba36e3d296fe4c97708c93daf26643a1ae4b03f6294d30eb", size = 12786615 }, - { url = "https://files.pythonhosted.org/packages/49/6e/b479032f8a43559c383acb20816644f5f91c88f633d9271ee84f3b3a996c/numpy-2.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:ca0309a18d4dfea6fc6262a66d06c26cfe4640c3926ceec90e57791a82b6eee5", size = 10195936 }, - { url = "https://files.pythonhosted.org/packages/7d/b9/984c2b1ee61a8b803bf63582b4ac4242cf76e2dbd663efeafcb620cc0ccb/numpy-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f5415fb78995644253370985342cd03572ef8620b934da27d77377a2285955bf", size = 20949588 }, - { url = "https://files.pythonhosted.org/packages/a6/e4/07970e3bed0b1384d22af1e9912527ecbeb47d3b26e9b6a3bced068b3bea/numpy-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d00de139a3324e26ed5b95870ce63be7ec7352171bc69a4cf1f157a48e3eb6b7", size = 14177802 }, - { url = "https://files.pythonhosted.org/packages/35/c7/477a83887f9de61f1203bad89cf208b7c19cc9fef0cebef65d5a1a0619f2/numpy-2.3.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9dc13c6a5829610cc07422bc74d3ac083bd8323f14e2827d992f9e52e22cd6a6", size = 5106537 }, - { url = "https://files.pythonhosted.org/packages/52/47/93b953bd5866a6f6986344d045a207d3f1cfbad99db29f534ea9cee5108c/numpy-2.3.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:d79715d95f1894771eb4e60fb23f065663b2298f7d22945d66877aadf33d00c7", size = 6640743 }, - { url = "https://files.pythonhosted.org/packages/23/83/377f84aaeb800b64c0ef4de58b08769e782edcefa4fea712910b6f0afd3c/numpy-2.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:952cfd0748514ea7c3afc729a0fc639e61655ce4c55ab9acfab14bda4f402b4c", size = 14278881 }, - { url = "https://files.pythonhosted.org/packages/9a/a5/bf3db6e66c4b160d6ea10b534c381a1955dfab34cb1017ea93aa33c70ed3/numpy-2.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b83648633d46f77039c29078751f80da65aa64d5622a3cd62aaef9d835b6c93", size = 16636301 }, - { url = "https://files.pythonhosted.org/packages/a2/59/1287924242eb4fa3f9b3a2c30400f2e17eb2707020d1c5e3086fe7330717/numpy-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b001bae8cea1c7dfdb2ae2b017ed0a6f2102d7a70059df1e338e307a4c78a8ae", size = 16053645 }, - { url = "https://files.pythonhosted.org/packages/e6/93/b3d47ed882027c35e94ac2320c37e452a549f582a5e801f2d34b56973c97/numpy-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e9aced64054739037d42fb84c54dd38b81ee238816c948c8f3ed134665dcd86", size = 18578179 }, - { url = "https://files.pythonhosted.org/packages/20/d9/487a2bccbf7cc9d4bfc5f0f197761a5ef27ba870f1e3bbb9afc4bbe3fcc2/numpy-2.3.3-cp313-cp313-win32.whl", hash = "sha256:9591e1221db3f37751e6442850429b3aabf7026d3b05542d102944ca7f00c8a8", size = 6312250 }, - { url = "https://files.pythonhosted.org/packages/1b/b5/263ebbbbcede85028f30047eab3d58028d7ebe389d6493fc95ae66c636ab/numpy-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f0dadeb302887f07431910f67a14d57209ed91130be0adea2f9793f1a4f817cf", size = 12783269 }, - { url = "https://files.pythonhosted.org/packages/fa/75/67b8ca554bbeaaeb3fac2e8bce46967a5a06544c9108ec0cf5cece559b6c/numpy-2.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:3c7cf302ac6e0b76a64c4aecf1a09e51abd9b01fc7feee80f6c43e3ab1b1dbc5", size = 10195314 }, - { url = "https://files.pythonhosted.org/packages/11/d0/0d1ddec56b162042ddfafeeb293bac672de9b0cfd688383590090963720a/numpy-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:eda59e44957d272846bb407aad19f89dc6f58fecf3504bd144f4c5cf81a7eacc", size = 21048025 }, - { url = "https://files.pythonhosted.org/packages/36/9e/1996ca6b6d00415b6acbdd3c42f7f03ea256e2c3f158f80bd7436a8a19f3/numpy-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:823d04112bc85ef5c4fda73ba24e6096c8f869931405a80aa8b0e604510a26bc", size = 14301053 }, - { url = "https://files.pythonhosted.org/packages/05/24/43da09aa764c68694b76e84b3d3f0c44cb7c18cdc1ba80e48b0ac1d2cd39/numpy-2.3.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:40051003e03db4041aa325da2a0971ba41cf65714e65d296397cc0e32de6018b", size = 5229444 }, - { url = "https://files.pythonhosted.org/packages/bc/14/50ffb0f22f7218ef8af28dd089f79f68289a7a05a208db9a2c5dcbe123c1/numpy-2.3.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ee9086235dd6ab7ae75aba5662f582a81ced49f0f1c6de4260a78d8f2d91a19", size = 6738039 }, - { url = "https://files.pythonhosted.org/packages/55/52/af46ac0795e09657d45a7f4db961917314377edecf66db0e39fa7ab5c3d3/numpy-2.3.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94fcaa68757c3e2e668ddadeaa86ab05499a70725811e582b6a9858dd472fb30", size = 14352314 }, - { url = "https://files.pythonhosted.org/packages/a7/b1/dc226b4c90eb9f07a3fff95c2f0db3268e2e54e5cce97c4ac91518aee71b/numpy-2.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da1a74b90e7483d6ce5244053399a614b1d6b7bc30a60d2f570e5071f8959d3e", size = 16701722 }, - { url = "https://files.pythonhosted.org/packages/9d/9d/9d8d358f2eb5eced14dba99f110d83b5cd9a4460895230f3b396ad19a323/numpy-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2990adf06d1ecee3b3dcbb4977dfab6e9f09807598d647f04d385d29e7a3c3d3", size = 16132755 }, - { url = "https://files.pythonhosted.org/packages/b6/27/b3922660c45513f9377b3fb42240bec63f203c71416093476ec9aa0719dc/numpy-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ed635ff692483b8e3f0fcaa8e7eb8a75ee71aa6d975388224f70821421800cea", size = 18651560 }, - { url = "https://files.pythonhosted.org/packages/5b/8e/3ab61a730bdbbc201bb245a71102aa609f0008b9ed15255500a99cd7f780/numpy-2.3.3-cp313-cp313t-win32.whl", hash = "sha256:a333b4ed33d8dc2b373cc955ca57babc00cd6f9009991d9edc5ddbc1bac36bcd", size = 6442776 }, - { url = "https://files.pythonhosted.org/packages/1c/3a/e22b766b11f6030dc2decdeff5c2fb1610768055603f9f3be88b6d192fb2/numpy-2.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4384a169c4d8f97195980815d6fcad04933a7e1ab3b530921c3fef7a1c63426d", size = 12927281 }, - { url = "https://files.pythonhosted.org/packages/7b/42/c2e2bc48c5e9b2a83423f99733950fbefd86f165b468a3d85d52b30bf782/numpy-2.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:75370986cc0bc66f4ce5110ad35aae6d182cc4ce6433c40ad151f53690130bf1", size = 10265275 }, - { url = "https://files.pythonhosted.org/packages/6b/01/342ad585ad82419b99bcf7cebe99e61da6bedb89e213c5fd71acc467faee/numpy-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cd052f1fa6a78dee696b58a914b7229ecfa41f0a6d96dc663c1220a55e137593", size = 20951527 }, - { url = "https://files.pythonhosted.org/packages/ef/d8/204e0d73fc1b7a9ee80ab1fe1983dd33a4d64a4e30a05364b0208e9a241a/numpy-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:414a97499480067d305fcac9716c29cf4d0d76db6ebf0bf3cbce666677f12652", size = 14186159 }, - { url = "https://files.pythonhosted.org/packages/22/af/f11c916d08f3a18fb8ba81ab72b5b74a6e42ead4c2846d270eb19845bf74/numpy-2.3.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:50a5fe69f135f88a2be9b6ca0481a68a136f6febe1916e4920e12f1a34e708a7", size = 5114624 }, - { url = "https://files.pythonhosted.org/packages/fb/11/0ed919c8381ac9d2ffacd63fd1f0c34d27e99cab650f0eb6f110e6ae4858/numpy-2.3.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:b912f2ed2b67a129e6a601e9d93d4fa37bef67e54cac442a2f588a54afe5c67a", size = 6642627 }, - { url = "https://files.pythonhosted.org/packages/ee/83/deb5f77cb0f7ba6cb52b91ed388b47f8f3c2e9930d4665c600408d9b90b9/numpy-2.3.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9e318ee0596d76d4cb3d78535dc005fa60e5ea348cd131a51e99d0bdbe0b54fe", size = 14296926 }, - { url = "https://files.pythonhosted.org/packages/77/cc/70e59dcb84f2b005d4f306310ff0a892518cc0c8000a33d0e6faf7ca8d80/numpy-2.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce020080e4a52426202bdb6f7691c65bb55e49f261f31a8f506c9f6bc7450421", size = 16638958 }, - { url = "https://files.pythonhosted.org/packages/b6/5a/b2ab6c18b4257e099587d5b7f903317bd7115333ad8d4ec4874278eafa61/numpy-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e6687dc183aa55dae4a705b35f9c0f8cb178bcaa2f029b241ac5356221d5c021", size = 16071920 }, - { url = "https://files.pythonhosted.org/packages/b8/f1/8b3fdc44324a259298520dd82147ff648979bed085feeacc1250ef1656c0/numpy-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d8f3b1080782469fdc1718c4ed1d22549b5fb12af0d57d35e992158a772a37cf", size = 18577076 }, - { url = "https://files.pythonhosted.org/packages/f0/a1/b87a284fb15a42e9274e7fcea0dad259d12ddbf07c1595b26883151ca3b4/numpy-2.3.3-cp314-cp314-win32.whl", hash = "sha256:cb248499b0bc3be66ebd6578b83e5acacf1d6cb2a77f2248ce0e40fbec5a76d0", size = 6366952 }, - { url = "https://files.pythonhosted.org/packages/70/5f/1816f4d08f3b8f66576d8433a66f8fa35a5acfb3bbd0bf6c31183b003f3d/numpy-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:691808c2b26b0f002a032c73255d0bd89751425f379f7bcd22d140db593a96e8", size = 12919322 }, - { url = "https://files.pythonhosted.org/packages/8c/de/072420342e46a8ea41c324a555fa90fcc11637583fb8df722936aed1736d/numpy-2.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:9ad12e976ca7b10f1774b03615a2a4bab8addce37ecc77394d8e986927dc0dfe", size = 10478630 }, - { url = "https://files.pythonhosted.org/packages/d5/df/ee2f1c0a9de7347f14da5dd3cd3c3b034d1b8607ccb6883d7dd5c035d631/numpy-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9cc48e09feb11e1db00b320e9d30a4151f7369afb96bd0e48d942d09da3a0d00", size = 21047987 }, - { url = "https://files.pythonhosted.org/packages/d6/92/9453bdc5a4e9e69cf4358463f25e8260e2ffc126d52e10038b9077815989/numpy-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:901bf6123879b7f251d3631967fd574690734236075082078e0571977c6a8e6a", size = 14301076 }, - { url = "https://files.pythonhosted.org/packages/13/77/1447b9eb500f028bb44253105bd67534af60499588a5149a94f18f2ca917/numpy-2.3.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f025652034199c301049296b59fa7d52c7e625017cae4c75d8662e377bf487d", size = 5229491 }, - { url = "https://files.pythonhosted.org/packages/3d/f9/d72221b6ca205f9736cb4b2ce3b002f6e45cd67cd6a6d1c8af11a2f0b649/numpy-2.3.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:533ca5f6d325c80b6007d4d7fb1984c303553534191024ec6a524a4c92a5935a", size = 6737913 }, - { url = "https://files.pythonhosted.org/packages/3c/5f/d12834711962ad9c46af72f79bb31e73e416ee49d17f4c797f72c96b6ca5/numpy-2.3.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0edd58682a399824633b66885d699d7de982800053acf20be1eaa46d92009c54", size = 14352811 }, - { url = "https://files.pythonhosted.org/packages/a1/0d/fdbec6629d97fd1bebed56cd742884e4eead593611bbe1abc3eb40d304b2/numpy-2.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:367ad5d8fbec5d9296d18478804a530f1191e24ab4d75ab408346ae88045d25e", size = 16702689 }, - { url = "https://files.pythonhosted.org/packages/9b/09/0a35196dc5575adde1eb97ddfbc3e1687a814f905377621d18ca9bc2b7dd/numpy-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8f6ac61a217437946a1fa48d24c47c91a0c4f725237871117dea264982128097", size = 16133855 }, - { url = "https://files.pythonhosted.org/packages/7a/ca/c9de3ea397d576f1b6753eaa906d4cdef1bf97589a6d9825a349b4729cc2/numpy-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:179a42101b845a816d464b6fe9a845dfaf308fdfc7925387195570789bb2c970", size = 18652520 }, - { url = "https://files.pythonhosted.org/packages/fd/c2/e5ed830e08cd0196351db55db82f65bc0ab05da6ef2b72a836dcf1936d2f/numpy-2.3.3-cp314-cp314t-win32.whl", hash = "sha256:1250c5d3d2562ec4174bce2e3a1523041595f9b651065e4a4473f5f48a6bc8a5", size = 6515371 }, - { url = "https://files.pythonhosted.org/packages/47/c7/b0f6b5b67f6788a0725f744496badbb604d226bf233ba716683ebb47b570/numpy-2.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:b37a0b2e5935409daebe82c1e42274d30d9dd355852529eab91dab8dcca7419f", size = 13112576 }, - { url = "https://files.pythonhosted.org/packages/06/b9/33bba5ff6fb679aa0b1f8a07e853f002a6b04b9394db3069a1270a7784ca/numpy-2.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:78c9f6560dc7e6b3990e32df7ea1a50bbd0e2a111e05209963f5ddcab7073b0b", size = 10545953 }, +sdist = { url = "https://files.pythonhosted.org/packages/d0/19/95b3d357407220ed24c139018d2518fab0a61a948e68286a25f1a4d049ff/numpy-2.3.3.tar.gz", hash = "sha256:ddc7c39727ba62b80dfdbedf400d1c10ddfa8eefbd7ec8dcb118be8b56d31029", size = 20576648, upload_time = "2025-09-09T16:54:12.543Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/5d/bb7fc075b762c96329147799e1bcc9176ab07ca6375ea976c475482ad5b3/numpy-2.3.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cfdd09f9c84a1a934cde1eec2267f0a43a7cd44b2cca4ff95b7c0d14d144b0bf", size = 20957014, upload_time = "2025-09-09T15:56:29.966Z" }, + { url = "https://files.pythonhosted.org/packages/6b/0e/c6211bb92af26517acd52125a237a92afe9c3124c6a68d3b9f81b62a0568/numpy-2.3.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cb32e3cf0f762aee47ad1ddc6672988f7f27045b0783c887190545baba73aa25", size = 14185220, upload_time = "2025-09-09T15:56:32.175Z" }, + { url = "https://files.pythonhosted.org/packages/22/f2/07bb754eb2ede9073f4054f7c0286b0d9d2e23982e090a80d478b26d35ca/numpy-2.3.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:396b254daeb0a57b1fe0ecb5e3cff6fa79a380fa97c8f7781a6d08cd429418fe", size = 5113918, upload_time = "2025-09-09T15:56:34.175Z" }, + { url = "https://files.pythonhosted.org/packages/81/0a/afa51697e9fb74642f231ea36aca80fa17c8fb89f7a82abd5174023c3960/numpy-2.3.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:067e3d7159a5d8f8a0b46ee11148fc35ca9b21f61e3c49fbd0a027450e65a33b", size = 6647922, upload_time = "2025-09-09T15:56:36.149Z" }, + { url = "https://files.pythonhosted.org/packages/5d/f5/122d9cdb3f51c520d150fef6e87df9279e33d19a9611a87c0d2cf78a89f4/numpy-2.3.3-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1c02d0629d25d426585fb2e45a66154081b9fa677bc92a881ff1d216bc9919a8", size = 14281991, upload_time = "2025-09-09T15:56:40.548Z" }, + { url = "https://files.pythonhosted.org/packages/51/64/7de3c91e821a2debf77c92962ea3fe6ac2bc45d0778c1cbe15d4fce2fd94/numpy-2.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:d9192da52b9745f7f0766531dcfa978b7763916f158bb63bdb8a1eca0068ab20", size = 16641643, upload_time = "2025-09-09T15:56:43.343Z" }, + { url = "https://files.pythonhosted.org/packages/30/e4/961a5fa681502cd0d68907818b69f67542695b74e3ceaa513918103b7e80/numpy-2.3.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:cd7de500a5b66319db419dc3c345244404a164beae0d0937283b907d8152e6ea", size = 16056787, upload_time = "2025-09-09T15:56:46.141Z" }, + { url = "https://files.pythonhosted.org/packages/99/26/92c912b966e47fbbdf2ad556cb17e3a3088e2e1292b9833be1dfa5361a1a/numpy-2.3.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:93d4962d8f82af58f0b2eb85daaf1b3ca23fe0a85d0be8f1f2b7bb46034e56d7", size = 18579598, upload_time = "2025-09-09T15:56:49.844Z" }, + { url = "https://files.pythonhosted.org/packages/17/b6/fc8f82cb3520768718834f310c37d96380d9dc61bfdaf05fe5c0b7653e01/numpy-2.3.3-cp312-cp312-win32.whl", hash = "sha256:5534ed6b92f9b7dca6c0a19d6df12d41c68b991cef051d108f6dbff3babc4ebf", size = 6320800, upload_time = "2025-09-09T15:56:52.499Z" }, + { url = "https://files.pythonhosted.org/packages/32/ee/de999f2625b80d043d6d2d628c07d0d5555a677a3cf78fdf868d409b8766/numpy-2.3.3-cp312-cp312-win_amd64.whl", hash = "sha256:497d7cad08e7092dba36e3d296fe4c97708c93daf26643a1ae4b03f6294d30eb", size = 12786615, upload_time = "2025-09-09T15:56:54.422Z" }, + { url = "https://files.pythonhosted.org/packages/49/6e/b479032f8a43559c383acb20816644f5f91c88f633d9271ee84f3b3a996c/numpy-2.3.3-cp312-cp312-win_arm64.whl", hash = "sha256:ca0309a18d4dfea6fc6262a66d06c26cfe4640c3926ceec90e57791a82b6eee5", size = 10195936, upload_time = "2025-09-09T15:56:56.541Z" }, + { url = "https://files.pythonhosted.org/packages/7d/b9/984c2b1ee61a8b803bf63582b4ac4242cf76e2dbd663efeafcb620cc0ccb/numpy-2.3.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f5415fb78995644253370985342cd03572ef8620b934da27d77377a2285955bf", size = 20949588, upload_time = "2025-09-09T15:56:59.087Z" }, + { url = "https://files.pythonhosted.org/packages/a6/e4/07970e3bed0b1384d22af1e9912527ecbeb47d3b26e9b6a3bced068b3bea/numpy-2.3.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d00de139a3324e26ed5b95870ce63be7ec7352171bc69a4cf1f157a48e3eb6b7", size = 14177802, upload_time = "2025-09-09T15:57:01.73Z" }, + { url = "https://files.pythonhosted.org/packages/35/c7/477a83887f9de61f1203bad89cf208b7c19cc9fef0cebef65d5a1a0619f2/numpy-2.3.3-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:9dc13c6a5829610cc07422bc74d3ac083bd8323f14e2827d992f9e52e22cd6a6", size = 5106537, upload_time = "2025-09-09T15:57:03.765Z" }, + { url = "https://files.pythonhosted.org/packages/52/47/93b953bd5866a6f6986344d045a207d3f1cfbad99db29f534ea9cee5108c/numpy-2.3.3-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:d79715d95f1894771eb4e60fb23f065663b2298f7d22945d66877aadf33d00c7", size = 6640743, upload_time = "2025-09-09T15:57:07.921Z" }, + { url = "https://files.pythonhosted.org/packages/23/83/377f84aaeb800b64c0ef4de58b08769e782edcefa4fea712910b6f0afd3c/numpy-2.3.3-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:952cfd0748514ea7c3afc729a0fc639e61655ce4c55ab9acfab14bda4f402b4c", size = 14278881, upload_time = "2025-09-09T15:57:11.349Z" }, + { url = "https://files.pythonhosted.org/packages/9a/a5/bf3db6e66c4b160d6ea10b534c381a1955dfab34cb1017ea93aa33c70ed3/numpy-2.3.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5b83648633d46f77039c29078751f80da65aa64d5622a3cd62aaef9d835b6c93", size = 16636301, upload_time = "2025-09-09T15:57:14.245Z" }, + { url = "https://files.pythonhosted.org/packages/a2/59/1287924242eb4fa3f9b3a2c30400f2e17eb2707020d1c5e3086fe7330717/numpy-2.3.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:b001bae8cea1c7dfdb2ae2b017ed0a6f2102d7a70059df1e338e307a4c78a8ae", size = 16053645, upload_time = "2025-09-09T15:57:16.534Z" }, + { url = "https://files.pythonhosted.org/packages/e6/93/b3d47ed882027c35e94ac2320c37e452a549f582a5e801f2d34b56973c97/numpy-2.3.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8e9aced64054739037d42fb84c54dd38b81ee238816c948c8f3ed134665dcd86", size = 18578179, upload_time = "2025-09-09T15:57:18.883Z" }, + { url = "https://files.pythonhosted.org/packages/20/d9/487a2bccbf7cc9d4bfc5f0f197761a5ef27ba870f1e3bbb9afc4bbe3fcc2/numpy-2.3.3-cp313-cp313-win32.whl", hash = "sha256:9591e1221db3f37751e6442850429b3aabf7026d3b05542d102944ca7f00c8a8", size = 6312250, upload_time = "2025-09-09T15:57:21.296Z" }, + { url = "https://files.pythonhosted.org/packages/1b/b5/263ebbbbcede85028f30047eab3d58028d7ebe389d6493fc95ae66c636ab/numpy-2.3.3-cp313-cp313-win_amd64.whl", hash = "sha256:f0dadeb302887f07431910f67a14d57209ed91130be0adea2f9793f1a4f817cf", size = 12783269, upload_time = "2025-09-09T15:57:23.034Z" }, + { url = "https://files.pythonhosted.org/packages/fa/75/67b8ca554bbeaaeb3fac2e8bce46967a5a06544c9108ec0cf5cece559b6c/numpy-2.3.3-cp313-cp313-win_arm64.whl", hash = "sha256:3c7cf302ac6e0b76a64c4aecf1a09e51abd9b01fc7feee80f6c43e3ab1b1dbc5", size = 10195314, upload_time = "2025-09-09T15:57:25.045Z" }, + { url = "https://files.pythonhosted.org/packages/11/d0/0d1ddec56b162042ddfafeeb293bac672de9b0cfd688383590090963720a/numpy-2.3.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:eda59e44957d272846bb407aad19f89dc6f58fecf3504bd144f4c5cf81a7eacc", size = 21048025, upload_time = "2025-09-09T15:57:27.257Z" }, + { url = "https://files.pythonhosted.org/packages/36/9e/1996ca6b6d00415b6acbdd3c42f7f03ea256e2c3f158f80bd7436a8a19f3/numpy-2.3.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:823d04112bc85ef5c4fda73ba24e6096c8f869931405a80aa8b0e604510a26bc", size = 14301053, upload_time = "2025-09-09T15:57:30.077Z" }, + { url = "https://files.pythonhosted.org/packages/05/24/43da09aa764c68694b76e84b3d3f0c44cb7c18cdc1ba80e48b0ac1d2cd39/numpy-2.3.3-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:40051003e03db4041aa325da2a0971ba41cf65714e65d296397cc0e32de6018b", size = 5229444, upload_time = "2025-09-09T15:57:32.733Z" }, + { url = "https://files.pythonhosted.org/packages/bc/14/50ffb0f22f7218ef8af28dd089f79f68289a7a05a208db9a2c5dcbe123c1/numpy-2.3.3-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6ee9086235dd6ab7ae75aba5662f582a81ced49f0f1c6de4260a78d8f2d91a19", size = 6738039, upload_time = "2025-09-09T15:57:34.328Z" }, + { url = "https://files.pythonhosted.org/packages/55/52/af46ac0795e09657d45a7f4db961917314377edecf66db0e39fa7ab5c3d3/numpy-2.3.3-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:94fcaa68757c3e2e668ddadeaa86ab05499a70725811e582b6a9858dd472fb30", size = 14352314, upload_time = "2025-09-09T15:57:36.255Z" }, + { url = "https://files.pythonhosted.org/packages/a7/b1/dc226b4c90eb9f07a3fff95c2f0db3268e2e54e5cce97c4ac91518aee71b/numpy-2.3.3-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:da1a74b90e7483d6ce5244053399a614b1d6b7bc30a60d2f570e5071f8959d3e", size = 16701722, upload_time = "2025-09-09T15:57:38.622Z" }, + { url = "https://files.pythonhosted.org/packages/9d/9d/9d8d358f2eb5eced14dba99f110d83b5cd9a4460895230f3b396ad19a323/numpy-2.3.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:2990adf06d1ecee3b3dcbb4977dfab6e9f09807598d647f04d385d29e7a3c3d3", size = 16132755, upload_time = "2025-09-09T15:57:41.16Z" }, + { url = "https://files.pythonhosted.org/packages/b6/27/b3922660c45513f9377b3fb42240bec63f203c71416093476ec9aa0719dc/numpy-2.3.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ed635ff692483b8e3f0fcaa8e7eb8a75ee71aa6d975388224f70821421800cea", size = 18651560, upload_time = "2025-09-09T15:57:43.459Z" }, + { url = "https://files.pythonhosted.org/packages/5b/8e/3ab61a730bdbbc201bb245a71102aa609f0008b9ed15255500a99cd7f780/numpy-2.3.3-cp313-cp313t-win32.whl", hash = "sha256:a333b4ed33d8dc2b373cc955ca57babc00cd6f9009991d9edc5ddbc1bac36bcd", size = 6442776, upload_time = "2025-09-09T15:57:45.793Z" }, + { url = "https://files.pythonhosted.org/packages/1c/3a/e22b766b11f6030dc2decdeff5c2fb1610768055603f9f3be88b6d192fb2/numpy-2.3.3-cp313-cp313t-win_amd64.whl", hash = "sha256:4384a169c4d8f97195980815d6fcad04933a7e1ab3b530921c3fef7a1c63426d", size = 12927281, upload_time = "2025-09-09T15:57:47.492Z" }, + { url = "https://files.pythonhosted.org/packages/7b/42/c2e2bc48c5e9b2a83423f99733950fbefd86f165b468a3d85d52b30bf782/numpy-2.3.3-cp313-cp313t-win_arm64.whl", hash = "sha256:75370986cc0bc66f4ce5110ad35aae6d182cc4ce6433c40ad151f53690130bf1", size = 10265275, upload_time = "2025-09-09T15:57:49.647Z" }, + { url = "https://files.pythonhosted.org/packages/6b/01/342ad585ad82419b99bcf7cebe99e61da6bedb89e213c5fd71acc467faee/numpy-2.3.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:cd052f1fa6a78dee696b58a914b7229ecfa41f0a6d96dc663c1220a55e137593", size = 20951527, upload_time = "2025-09-09T15:57:52.006Z" }, + { url = "https://files.pythonhosted.org/packages/ef/d8/204e0d73fc1b7a9ee80ab1fe1983dd33a4d64a4e30a05364b0208e9a241a/numpy-2.3.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:414a97499480067d305fcac9716c29cf4d0d76db6ebf0bf3cbce666677f12652", size = 14186159, upload_time = "2025-09-09T15:57:54.407Z" }, + { url = "https://files.pythonhosted.org/packages/22/af/f11c916d08f3a18fb8ba81ab72b5b74a6e42ead4c2846d270eb19845bf74/numpy-2.3.3-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:50a5fe69f135f88a2be9b6ca0481a68a136f6febe1916e4920e12f1a34e708a7", size = 5114624, upload_time = "2025-09-09T15:57:56.5Z" }, + { url = "https://files.pythonhosted.org/packages/fb/11/0ed919c8381ac9d2ffacd63fd1f0c34d27e99cab650f0eb6f110e6ae4858/numpy-2.3.3-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:b912f2ed2b67a129e6a601e9d93d4fa37bef67e54cac442a2f588a54afe5c67a", size = 6642627, upload_time = "2025-09-09T15:57:58.206Z" }, + { url = "https://files.pythonhosted.org/packages/ee/83/deb5f77cb0f7ba6cb52b91ed388b47f8f3c2e9930d4665c600408d9b90b9/numpy-2.3.3-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9e318ee0596d76d4cb3d78535dc005fa60e5ea348cd131a51e99d0bdbe0b54fe", size = 14296926, upload_time = "2025-09-09T15:58:00.035Z" }, + { url = "https://files.pythonhosted.org/packages/77/cc/70e59dcb84f2b005d4f306310ff0a892518cc0c8000a33d0e6faf7ca8d80/numpy-2.3.3-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ce020080e4a52426202bdb6f7691c65bb55e49f261f31a8f506c9f6bc7450421", size = 16638958, upload_time = "2025-09-09T15:58:02.738Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5a/b2ab6c18b4257e099587d5b7f903317bd7115333ad8d4ec4874278eafa61/numpy-2.3.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:e6687dc183aa55dae4a705b35f9c0f8cb178bcaa2f029b241ac5356221d5c021", size = 16071920, upload_time = "2025-09-09T15:58:05.029Z" }, + { url = "https://files.pythonhosted.org/packages/b8/f1/8b3fdc44324a259298520dd82147ff648979bed085feeacc1250ef1656c0/numpy-2.3.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:d8f3b1080782469fdc1718c4ed1d22549b5fb12af0d57d35e992158a772a37cf", size = 18577076, upload_time = "2025-09-09T15:58:07.745Z" }, + { url = "https://files.pythonhosted.org/packages/f0/a1/b87a284fb15a42e9274e7fcea0dad259d12ddbf07c1595b26883151ca3b4/numpy-2.3.3-cp314-cp314-win32.whl", hash = "sha256:cb248499b0bc3be66ebd6578b83e5acacf1d6cb2a77f2248ce0e40fbec5a76d0", size = 6366952, upload_time = "2025-09-09T15:58:10.096Z" }, + { url = "https://files.pythonhosted.org/packages/70/5f/1816f4d08f3b8f66576d8433a66f8fa35a5acfb3bbd0bf6c31183b003f3d/numpy-2.3.3-cp314-cp314-win_amd64.whl", hash = "sha256:691808c2b26b0f002a032c73255d0bd89751425f379f7bcd22d140db593a96e8", size = 12919322, upload_time = "2025-09-09T15:58:12.138Z" }, + { url = "https://files.pythonhosted.org/packages/8c/de/072420342e46a8ea41c324a555fa90fcc11637583fb8df722936aed1736d/numpy-2.3.3-cp314-cp314-win_arm64.whl", hash = "sha256:9ad12e976ca7b10f1774b03615a2a4bab8addce37ecc77394d8e986927dc0dfe", size = 10478630, upload_time = "2025-09-09T15:58:14.64Z" }, + { url = "https://files.pythonhosted.org/packages/d5/df/ee2f1c0a9de7347f14da5dd3cd3c3b034d1b8607ccb6883d7dd5c035d631/numpy-2.3.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9cc48e09feb11e1db00b320e9d30a4151f7369afb96bd0e48d942d09da3a0d00", size = 21047987, upload_time = "2025-09-09T15:58:16.889Z" }, + { url = "https://files.pythonhosted.org/packages/d6/92/9453bdc5a4e9e69cf4358463f25e8260e2ffc126d52e10038b9077815989/numpy-2.3.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:901bf6123879b7f251d3631967fd574690734236075082078e0571977c6a8e6a", size = 14301076, upload_time = "2025-09-09T15:58:20.343Z" }, + { url = "https://files.pythonhosted.org/packages/13/77/1447b9eb500f028bb44253105bd67534af60499588a5149a94f18f2ca917/numpy-2.3.3-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:7f025652034199c301049296b59fa7d52c7e625017cae4c75d8662e377bf487d", size = 5229491, upload_time = "2025-09-09T15:58:22.481Z" }, + { url = "https://files.pythonhosted.org/packages/3d/f9/d72221b6ca205f9736cb4b2ce3b002f6e45cd67cd6a6d1c8af11a2f0b649/numpy-2.3.3-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:533ca5f6d325c80b6007d4d7fb1984c303553534191024ec6a524a4c92a5935a", size = 6737913, upload_time = "2025-09-09T15:58:24.569Z" }, + { url = "https://files.pythonhosted.org/packages/3c/5f/d12834711962ad9c46af72f79bb31e73e416ee49d17f4c797f72c96b6ca5/numpy-2.3.3-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0edd58682a399824633b66885d699d7de982800053acf20be1eaa46d92009c54", size = 14352811, upload_time = "2025-09-09T15:58:26.416Z" }, + { url = "https://files.pythonhosted.org/packages/a1/0d/fdbec6629d97fd1bebed56cd742884e4eead593611bbe1abc3eb40d304b2/numpy-2.3.3-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:367ad5d8fbec5d9296d18478804a530f1191e24ab4d75ab408346ae88045d25e", size = 16702689, upload_time = "2025-09-09T15:58:28.831Z" }, + { url = "https://files.pythonhosted.org/packages/9b/09/0a35196dc5575adde1eb97ddfbc3e1687a814f905377621d18ca9bc2b7dd/numpy-2.3.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:8f6ac61a217437946a1fa48d24c47c91a0c4f725237871117dea264982128097", size = 16133855, upload_time = "2025-09-09T15:58:31.349Z" }, + { url = "https://files.pythonhosted.org/packages/7a/ca/c9de3ea397d576f1b6753eaa906d4cdef1bf97589a6d9825a349b4729cc2/numpy-2.3.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:179a42101b845a816d464b6fe9a845dfaf308fdfc7925387195570789bb2c970", size = 18652520, upload_time = "2025-09-09T15:58:33.762Z" }, + { url = "https://files.pythonhosted.org/packages/fd/c2/e5ed830e08cd0196351db55db82f65bc0ab05da6ef2b72a836dcf1936d2f/numpy-2.3.3-cp314-cp314t-win32.whl", hash = "sha256:1250c5d3d2562ec4174bce2e3a1523041595f9b651065e4a4473f5f48a6bc8a5", size = 6515371, upload_time = "2025-09-09T15:58:36.04Z" }, + { url = "https://files.pythonhosted.org/packages/47/c7/b0f6b5b67f6788a0725f744496badbb604d226bf233ba716683ebb47b570/numpy-2.3.3-cp314-cp314t-win_amd64.whl", hash = "sha256:b37a0b2e5935409daebe82c1e42274d30d9dd355852529eab91dab8dcca7419f", size = 13112576, upload_time = "2025-09-09T15:58:37.927Z" }, + { url = "https://files.pythonhosted.org/packages/06/b9/33bba5ff6fb679aa0b1f8a07e853f002a6b04b9394db3069a1270a7784ca/numpy-2.3.3-cp314-cp314t-win_arm64.whl", hash = "sha256:78c9f6560dc7e6b3990e32df7ea1a50bbd0e2a111e05209963f5ddcab7073b0b", size = 10545953, upload_time = "2025-09-09T15:58:40.576Z" }, ] [[package]] name = "oda-reader" -version = "1.2.2" +version = "1.3.1" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "filelock" }, { name = "joblib" }, { name = "openpyxl" }, { name = "pandas" }, + { name = "platformdirs" }, { name = "pyarrow" }, { name = "requests" }, + { name = "requests-cache" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1a/d1/5c0bb2a714ebea7df131b8e87010eab39d0df75878f6785f2a214ff66bb2/oda_reader-1.2.2.tar.gz", hash = "sha256:55be081e1744e75184eca3d09e794fad71958201d08b48fb497aac97a95f3685", size = 35630 } +sdist = { url = "https://files.pythonhosted.org/packages/32/b9/4ac1d7304001bf702d4835beeea0ef3a6fb60c8034ecb047c3141b2624ba/oda_reader-1.3.1.tar.gz", hash = "sha256:2201595bffbe72f7719e0f362db36a0a40968be252adefbe932f2fd284f5cf17", size = 43135, upload_time = "2025-10-27T14:10:45.762Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d8/ec/59338ec9108848dc53f50e7381b9817595bf98f414f4a732100a06828a3b/oda_reader-1.2.2-py3-none-any.whl", hash = "sha256:7f7b854ab1e9bc2cf64b6c63bd56a2ac64cb90ec054518fd01b741fd518cf007", size = 45314 }, + { url = "https://files.pythonhosted.org/packages/55/e8/abbd6b6fb8678adc0d83d0c537a55e84b1798fd3322d3e6edc9acc7a9dd8/oda_reader-1.3.1-py3-none-any.whl", hash = "sha256:57c8fbe5dda303689fb538f01fb0735e34f733547ccc24665f2632a67b93814d", size = 59216, upload_time = "2025-10-27T14:10:44.832Z" }, ] [[package]] @@ -1764,27 +1790,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "et-xmlfile" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464 } +sdist = { url = "https://files.pythonhosted.org/packages/3d/f9/88d94a75de065ea32619465d2f77b29a0469500e99012523b91cc4141cd1/openpyxl-3.1.5.tar.gz", hash = "sha256:cf0e3cf56142039133628b5acffe8ef0c12bc902d2aadd3e0fe5878dc08d1050", size = 186464, upload_time = "2024-06-28T14:03:44.161Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910 }, + { url = "https://files.pythonhosted.org/packages/c0/da/977ded879c29cbd04de313843e76868e6e13408a94ed6b987245dc7c8506/openpyxl-3.1.5-py2.py3-none-any.whl", hash = "sha256:5282c12b107bffeef825f4617dc029afaf41d0ea60823bbb665ef3079dc79de2", size = 250910, upload_time = "2024-06-28T14:03:41.161Z" }, ] [[package]] name = "packaging" version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload_time = "2025-04-19T11:48:59.673Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload_time = "2025-04-19T11:48:57.875Z" }, ] [[package]] name = "paginate" version = "0.5.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload_time = "2024-08-25T14:17:24.139Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload_time = "2024-08-25T14:17:22.55Z" }, ] [[package]] @@ -1797,64 +1823,80 @@ dependencies = [ { name = "pytz" }, { name = "tzdata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/79/8e/0e90233ac205ad182bd6b422532695d2b9414944a280488105d598c70023/pandas-2.3.2.tar.gz", hash = "sha256:ab7b58f8f82706890924ccdfb5f48002b83d2b5a3845976a9fb705d36c34dcdb", size = 4488684 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/db/614c20fb7a85a14828edd23f1c02db58a30abf3ce76f38806155d160313c/pandas-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fbb977f802156e7a3f829e9d1d5398f6192375a3e2d1a9ee0803e35fe70a2b9", size = 11587652 }, - { url = "https://files.pythonhosted.org/packages/99/b0/756e52f6582cade5e746f19bad0517ff27ba9c73404607c0306585c201b3/pandas-2.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b9b52693123dd234b7c985c68b709b0b009f4521000d0525f2b95c22f15944b", size = 10717686 }, - { url = "https://files.pythonhosted.org/packages/37/4c/dd5ccc1e357abfeee8353123282de17997f90ff67855f86154e5a13b81e5/pandas-2.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bd281310d4f412733f319a5bc552f86d62cddc5f51d2e392c8787335c994175", size = 11278722 }, - { url = "https://files.pythonhosted.org/packages/d3/a4/f7edcfa47e0a88cda0be8b068a5bae710bf264f867edfdf7b71584ace362/pandas-2.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96d31a6b4354e3b9b8a2c848af75d31da390657e3ac6f30c05c82068b9ed79b9", size = 11987803 }, - { url = "https://files.pythonhosted.org/packages/f6/61/1bce4129f93ab66f1c68b7ed1c12bac6a70b1b56c5dab359c6bbcd480b52/pandas-2.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:df4df0b9d02bb873a106971bb85d448378ef14b86ba96f035f50bbd3688456b4", size = 12766345 }, - { url = "https://files.pythonhosted.org/packages/8e/46/80d53de70fee835531da3a1dae827a1e76e77a43ad22a8cd0f8142b61587/pandas-2.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:213a5adf93d020b74327cb2c1b842884dbdd37f895f42dcc2f09d451d949f811", size = 13439314 }, - { url = "https://files.pythonhosted.org/packages/28/30/8114832daff7489f179971dbc1d854109b7f4365a546e3ea75b6516cea95/pandas-2.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c13b81a9347eb8c7548f53fd9a4f08d4dfe996836543f805c987bafa03317ae", size = 10983326 }, - { url = "https://files.pythonhosted.org/packages/27/64/a2f7bf678af502e16b472527735d168b22b7824e45a4d7e96a4fbb634b59/pandas-2.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0c6ecbac99a354a051ef21c5307601093cb9e0f4b1855984a084bfec9302699e", size = 11531061 }, - { url = "https://files.pythonhosted.org/packages/54/4c/c3d21b2b7769ef2f4c2b9299fcadd601efa6729f1357a8dbce8dd949ed70/pandas-2.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c6f048aa0fd080d6a06cc7e7537c09b53be6642d330ac6f54a600c3ace857ee9", size = 10668666 }, - { url = "https://files.pythonhosted.org/packages/50/e2/f775ba76ecfb3424d7f5862620841cf0edb592e9abd2d2a5387d305fe7a8/pandas-2.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0064187b80a5be6f2f9c9d6bdde29372468751dfa89f4211a3c5871854cfbf7a", size = 11332835 }, - { url = "https://files.pythonhosted.org/packages/8f/52/0634adaace9be2d8cac9ef78f05c47f3a675882e068438b9d7ec7ef0c13f/pandas-2.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ac8c320bded4718b298281339c1a50fb00a6ba78cb2a63521c39bec95b0209b", size = 12057211 }, - { url = "https://files.pythonhosted.org/packages/0b/9d/2df913f14b2deb9c748975fdb2491da1a78773debb25abbc7cbc67c6b549/pandas-2.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:114c2fe4f4328cf98ce5716d1532f3ab79c5919f95a9cfee81d9140064a2e4d6", size = 12749277 }, - { url = "https://files.pythonhosted.org/packages/87/af/da1a2417026bd14d98c236dba88e39837182459d29dcfcea510b2ac9e8a1/pandas-2.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:48fa91c4dfb3b2b9bfdb5c24cd3567575f4e13f9636810462ffed8925352be5a", size = 13415256 }, - { url = "https://files.pythonhosted.org/packages/22/3c/f2af1ce8840ef648584a6156489636b5692c162771918aa95707c165ad2b/pandas-2.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:12d039facec710f7ba305786837d0225a3444af7bbd9c15c32ca2d40d157ed8b", size = 10982579 }, - { url = "https://files.pythonhosted.org/packages/f3/98/8df69c4097a6719e357dc249bf437b8efbde808038268e584421696cbddf/pandas-2.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c624b615ce97864eb588779ed4046186f967374185c047070545253a52ab2d57", size = 12028163 }, - { url = "https://files.pythonhosted.org/packages/0e/23/f95cbcbea319f349e10ff90db488b905c6883f03cbabd34f6b03cbc3c044/pandas-2.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0cee69d583b9b128823d9514171cabb6861e09409af805b54459bd0c821a35c2", size = 11391860 }, - { url = "https://files.pythonhosted.org/packages/ad/1b/6a984e98c4abee22058aa75bfb8eb90dce58cf8d7296f8bc56c14bc330b0/pandas-2.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2319656ed81124982900b4c37f0e0c58c015af9a7bbc62342ba5ad07ace82ba9", size = 11309830 }, - { url = "https://files.pythonhosted.org/packages/15/d5/f0486090eb18dd8710bf60afeaf638ba6817047c0c8ae5c6a25598665609/pandas-2.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b37205ad6f00d52f16b6d09f406434ba928c1a1966e2771006a9033c736d30d2", size = 11883216 }, - { url = "https://files.pythonhosted.org/packages/10/86/692050c119696da19e20245bbd650d8dfca6ceb577da027c3a73c62a047e/pandas-2.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:837248b4fc3a9b83b9c6214699a13f069dc13510a6a6d7f9ba33145d2841a012", size = 12699743 }, - { url = "https://files.pythonhosted.org/packages/cd/d7/612123674d7b17cf345aad0a10289b2a384bff404e0463a83c4a3a59d205/pandas-2.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d2c3554bd31b731cd6490d94a28f3abb8dd770634a9e06eb6d2911b9827db370", size = 13186141 }, +sdist = { url = "https://files.pythonhosted.org/packages/79/8e/0e90233ac205ad182bd6b422532695d2b9414944a280488105d598c70023/pandas-2.3.2.tar.gz", hash = "sha256:ab7b58f8f82706890924ccdfb5f48002b83d2b5a3845976a9fb705d36c34dcdb", size = 4488684, upload_time = "2025-08-21T10:28:29.257Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/db/614c20fb7a85a14828edd23f1c02db58a30abf3ce76f38806155d160313c/pandas-2.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fbb977f802156e7a3f829e9d1d5398f6192375a3e2d1a9ee0803e35fe70a2b9", size = 11587652, upload_time = "2025-08-21T10:27:15.888Z" }, + { url = "https://files.pythonhosted.org/packages/99/b0/756e52f6582cade5e746f19bad0517ff27ba9c73404607c0306585c201b3/pandas-2.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1b9b52693123dd234b7c985c68b709b0b009f4521000d0525f2b95c22f15944b", size = 10717686, upload_time = "2025-08-21T10:27:18.486Z" }, + { url = "https://files.pythonhosted.org/packages/37/4c/dd5ccc1e357abfeee8353123282de17997f90ff67855f86154e5a13b81e5/pandas-2.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bd281310d4f412733f319a5bc552f86d62cddc5f51d2e392c8787335c994175", size = 11278722, upload_time = "2025-08-21T10:27:21.149Z" }, + { url = "https://files.pythonhosted.org/packages/d3/a4/f7edcfa47e0a88cda0be8b068a5bae710bf264f867edfdf7b71584ace362/pandas-2.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:96d31a6b4354e3b9b8a2c848af75d31da390657e3ac6f30c05c82068b9ed79b9", size = 11987803, upload_time = "2025-08-21T10:27:23.767Z" }, + { url = "https://files.pythonhosted.org/packages/f6/61/1bce4129f93ab66f1c68b7ed1c12bac6a70b1b56c5dab359c6bbcd480b52/pandas-2.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:df4df0b9d02bb873a106971bb85d448378ef14b86ba96f035f50bbd3688456b4", size = 12766345, upload_time = "2025-08-21T10:27:26.6Z" }, + { url = "https://files.pythonhosted.org/packages/8e/46/80d53de70fee835531da3a1dae827a1e76e77a43ad22a8cd0f8142b61587/pandas-2.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:213a5adf93d020b74327cb2c1b842884dbdd37f895f42dcc2f09d451d949f811", size = 13439314, upload_time = "2025-08-21T10:27:29.213Z" }, + { url = "https://files.pythonhosted.org/packages/28/30/8114832daff7489f179971dbc1d854109b7f4365a546e3ea75b6516cea95/pandas-2.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c13b81a9347eb8c7548f53fd9a4f08d4dfe996836543f805c987bafa03317ae", size = 10983326, upload_time = "2025-08-21T10:27:31.901Z" }, + { url = "https://files.pythonhosted.org/packages/27/64/a2f7bf678af502e16b472527735d168b22b7824e45a4d7e96a4fbb634b59/pandas-2.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0c6ecbac99a354a051ef21c5307601093cb9e0f4b1855984a084bfec9302699e", size = 11531061, upload_time = "2025-08-21T10:27:34.647Z" }, + { url = "https://files.pythonhosted.org/packages/54/4c/c3d21b2b7769ef2f4c2b9299fcadd601efa6729f1357a8dbce8dd949ed70/pandas-2.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c6f048aa0fd080d6a06cc7e7537c09b53be6642d330ac6f54a600c3ace857ee9", size = 10668666, upload_time = "2025-08-21T10:27:37.203Z" }, + { url = "https://files.pythonhosted.org/packages/50/e2/f775ba76ecfb3424d7f5862620841cf0edb592e9abd2d2a5387d305fe7a8/pandas-2.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0064187b80a5be6f2f9c9d6bdde29372468751dfa89f4211a3c5871854cfbf7a", size = 11332835, upload_time = "2025-08-21T10:27:40.188Z" }, + { url = "https://files.pythonhosted.org/packages/8f/52/0634adaace9be2d8cac9ef78f05c47f3a675882e068438b9d7ec7ef0c13f/pandas-2.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4ac8c320bded4718b298281339c1a50fb00a6ba78cb2a63521c39bec95b0209b", size = 12057211, upload_time = "2025-08-21T10:27:43.117Z" }, + { url = "https://files.pythonhosted.org/packages/0b/9d/2df913f14b2deb9c748975fdb2491da1a78773debb25abbc7cbc67c6b549/pandas-2.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:114c2fe4f4328cf98ce5716d1532f3ab79c5919f95a9cfee81d9140064a2e4d6", size = 12749277, upload_time = "2025-08-21T10:27:45.474Z" }, + { url = "https://files.pythonhosted.org/packages/87/af/da1a2417026bd14d98c236dba88e39837182459d29dcfcea510b2ac9e8a1/pandas-2.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:48fa91c4dfb3b2b9bfdb5c24cd3567575f4e13f9636810462ffed8925352be5a", size = 13415256, upload_time = "2025-08-21T10:27:49.885Z" }, + { url = "https://files.pythonhosted.org/packages/22/3c/f2af1ce8840ef648584a6156489636b5692c162771918aa95707c165ad2b/pandas-2.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:12d039facec710f7ba305786837d0225a3444af7bbd9c15c32ca2d40d157ed8b", size = 10982579, upload_time = "2025-08-21T10:28:08.435Z" }, + { url = "https://files.pythonhosted.org/packages/f3/98/8df69c4097a6719e357dc249bf437b8efbde808038268e584421696cbddf/pandas-2.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:c624b615ce97864eb588779ed4046186f967374185c047070545253a52ab2d57", size = 12028163, upload_time = "2025-08-21T10:27:52.232Z" }, + { url = "https://files.pythonhosted.org/packages/0e/23/f95cbcbea319f349e10ff90db488b905c6883f03cbabd34f6b03cbc3c044/pandas-2.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0cee69d583b9b128823d9514171cabb6861e09409af805b54459bd0c821a35c2", size = 11391860, upload_time = "2025-08-21T10:27:54.673Z" }, + { url = "https://files.pythonhosted.org/packages/ad/1b/6a984e98c4abee22058aa75bfb8eb90dce58cf8d7296f8bc56c14bc330b0/pandas-2.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2319656ed81124982900b4c37f0e0c58c015af9a7bbc62342ba5ad07ace82ba9", size = 11309830, upload_time = "2025-08-21T10:27:56.957Z" }, + { url = "https://files.pythonhosted.org/packages/15/d5/f0486090eb18dd8710bf60afeaf638ba6817047c0c8ae5c6a25598665609/pandas-2.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b37205ad6f00d52f16b6d09f406434ba928c1a1966e2771006a9033c736d30d2", size = 11883216, upload_time = "2025-08-21T10:27:59.302Z" }, + { url = "https://files.pythonhosted.org/packages/10/86/692050c119696da19e20245bbd650d8dfca6ceb577da027c3a73c62a047e/pandas-2.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:837248b4fc3a9b83b9c6214699a13f069dc13510a6a6d7f9ba33145d2841a012", size = 12699743, upload_time = "2025-08-21T10:28:02.447Z" }, + { url = "https://files.pythonhosted.org/packages/cd/d7/612123674d7b17cf345aad0a10289b2a384bff404e0463a83c4a3a59d205/pandas-2.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d2c3554bd31b731cd6490d94a28f3abb8dd770634a9e06eb6d2911b9827db370", size = 13186141, upload_time = "2025-08-21T10:28:05.377Z" }, +] + +[[package]] +name = "pandera" +version = "0.27.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "packaging" }, + { name = "pydantic" }, + { name = "typeguard" }, + { name = "typing-extensions" }, + { name = "typing-inspect" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ed/9d/36af210c7cef275d646b8dded8cc555078a271514e34f8f8d1c056462dc3/pandera-0.27.0.tar.gz", hash = "sha256:83c66d5896b97b3a91c810621038d2495f56c83864493819e7587d2059e641ad", size = 567135, upload_time = "2025-11-25T16:20:35.156Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/26/8e4a28ffbf3406c60d58eaa7f0529fb6197f5ae49f77b173dc84c057e1a2/pandera-0.27.0-py3-none-any.whl", hash = "sha256:e43b8062dfcde984300d798686815cc93feaae09645d3cddee3ab437f2d11ed5", size = 295880, upload_time = "2025-11-25T16:20:33.635Z" }, ] [[package]] name = "pandocfilters" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454 } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload_time = "2024-01-18T20:08:13.726Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663 }, + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload_time = "2024-01-18T20:08:11.28Z" }, ] [[package]] name = "parso" version = "0.8.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d4/de/53e0bcf53d13e005bd8c92e7855142494f41171b34c2536b86187474184d/parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", size = 401205 } +sdist = { url = "https://files.pythonhosted.org/packages/d4/de/53e0bcf53d13e005bd8c92e7855142494f41171b34c2536b86187474184d/parso-0.8.5.tar.gz", hash = "sha256:034d7354a9a018bdce352f48b2a8a450f05e9d6ee85db84764e9b6bd96dafe5a", size = 401205, upload_time = "2025-08-23T15:15:28.028Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668 }, + { url = "https://files.pythonhosted.org/packages/16/32/f8e3c85d1d5250232a5d3477a2a28cc291968ff175caeadaf3cc19ce0e4a/parso-0.8.5-py2.py3-none-any.whl", hash = "sha256:646204b5ee239c396d040b90f9e272e9a8017c630092bf59980beb62fd033887", size = 106668, upload_time = "2025-08-23T15:15:25.663Z" }, ] [[package]] name = "pathspec" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload_time = "2023-12-10T22:30:45Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload_time = "2023-12-10T22:30:43.14Z" }, ] [[package]] name = "petl" version = "1.7.17" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/07/16a40e30700f7c6975e62cba01c2f94afbb347dd8ed224a5918c686a47fe/petl-1.7.17.tar.gz", hash = "sha256:802696187c2ef35894c4acf3c0ff9fecff6035cb335944c194416b9a18e8390b", size = 424376 } +sdist = { url = "https://files.pythonhosted.org/packages/a5/07/16a40e30700f7c6975e62cba01c2f94afbb347dd8ed224a5918c686a47fe/petl-1.7.17.tar.gz", hash = "sha256:802696187c2ef35894c4acf3c0ff9fecff6035cb335944c194416b9a18e8390b", size = 424376, upload_time = "2025-07-10T20:47:13.523Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/5c/ea831abc18dd3268046d7d9a0119f1f8ddc69642e0a5245f839602b8114d/petl-1.7.17-py3-none-any.whl", hash = "sha256:53785128bcdf46eb4472638ad572acc6d87cc83f80b567fed06ee4a947eea5d1", size = 233093 }, + { url = "https://files.pythonhosted.org/packages/9f/5c/ea831abc18dd3268046d7d9a0119f1f8ddc69642e0a5245f839602b8114d/petl-1.7.17-py3-none-any.whl", hash = "sha256:53785128bcdf46eb4472638ad572acc6d87cc83f80b567fed06ee4a947eea5d1", size = 233093, upload_time = "2025-07-10T20:47:12.03Z" }, ] [[package]] @@ -1864,75 +1906,75 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ptyprocess" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 } +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload_time = "2023-11-25T09:07:26.339Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 }, + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload_time = "2023-11-25T06:56:14.81Z" }, ] [[package]] name = "pillow" version = "11.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800 }, - { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296 }, - { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726 }, - { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652 }, - { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787 }, - { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236 }, - { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950 }, - { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358 }, - { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079 }, - { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324 }, - { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067 }, - { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328 }, - { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652 }, - { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443 }, - { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474 }, - { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038 }, - { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407 }, - { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094 }, - { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503 }, - { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574 }, - { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060 }, - { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407 }, - { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841 }, - { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450 }, - { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055 }, - { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110 }, - { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547 }, - { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554 }, - { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132 }, - { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001 }, - { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814 }, - { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124 }, - { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186 }, - { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546 }, - { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102 }, - { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803 }, - { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520 }, - { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116 }, - { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597 }, - { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246 }, - { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336 }, - { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699 }, - { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789 }, - { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386 }, - { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911 }, - { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383 }, - { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385 }, - { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129 }, - { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580 }, - { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860 }, - { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694 }, - { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888 }, - { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330 }, - { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089 }, - { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206 }, - { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370 }, - { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500 }, - { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835 }, +sdist = { url = "https://files.pythonhosted.org/packages/f3/0d/d0d6dea55cd152ce3d6767bb38a8fc10e33796ba4ba210cbab9354b6d238/pillow-11.3.0.tar.gz", hash = "sha256:3828ee7586cd0b2091b6209e5ad53e20d0649bbe87164a459d0676e035e8f523", size = 47113069, upload_time = "2025-07-01T09:16:30.666Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/fe/1bc9b3ee13f68487a99ac9529968035cca2f0a51ec36892060edcc51d06a/pillow-11.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdae223722da47b024b867c1ea0be64e0df702c5e0a60e27daad39bf960dd1e4", size = 5278800, upload_time = "2025-07-01T09:14:17.648Z" }, + { url = "https://files.pythonhosted.org/packages/2c/32/7e2ac19b5713657384cec55f89065fb306b06af008cfd87e572035b27119/pillow-11.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:921bd305b10e82b4d1f5e802b6850677f965d8394203d182f078873851dada69", size = 4686296, upload_time = "2025-07-01T09:14:19.828Z" }, + { url = "https://files.pythonhosted.org/packages/8e/1e/b9e12bbe6e4c2220effebc09ea0923a07a6da1e1f1bfbc8d7d29a01ce32b/pillow-11.3.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:eb76541cba2f958032d79d143b98a3a6b3ea87f0959bbe256c0b5e416599fd5d", size = 5871726, upload_time = "2025-07-03T13:10:04.448Z" }, + { url = "https://files.pythonhosted.org/packages/8d/33/e9200d2bd7ba00dc3ddb78df1198a6e80d7669cce6c2bdbeb2530a74ec58/pillow-11.3.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:67172f2944ebba3d4a7b54f2e95c786a3a50c21b88456329314caaa28cda70f6", size = 7644652, upload_time = "2025-07-03T13:10:10.391Z" }, + { url = "https://files.pythonhosted.org/packages/41/f1/6f2427a26fc683e00d985bc391bdd76d8dd4e92fac33d841127eb8fb2313/pillow-11.3.0-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:97f07ed9f56a3b9b5f49d3661dc9607484e85c67e27f3e8be2c7d28ca032fec7", size = 5977787, upload_time = "2025-07-01T09:14:21.63Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c9/06dd4a38974e24f932ff5f98ea3c546ce3f8c995d3f0985f8e5ba48bba19/pillow-11.3.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:676b2815362456b5b3216b4fd5bd89d362100dc6f4945154ff172e206a22c024", size = 6645236, upload_time = "2025-07-01T09:14:23.321Z" }, + { url = "https://files.pythonhosted.org/packages/40/e7/848f69fb79843b3d91241bad658e9c14f39a32f71a301bcd1d139416d1be/pillow-11.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3e184b2f26ff146363dd07bde8b711833d7b0202e27d13540bfe2e35a323a809", size = 6086950, upload_time = "2025-07-01T09:14:25.237Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1a/7cff92e695a2a29ac1958c2a0fe4c0b2393b60aac13b04a4fe2735cad52d/pillow-11.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6be31e3fc9a621e071bc17bb7de63b85cbe0bfae91bb0363c893cbe67247780d", size = 6723358, upload_time = "2025-07-01T09:14:27.053Z" }, + { url = "https://files.pythonhosted.org/packages/26/7d/73699ad77895f69edff76b0f332acc3d497f22f5d75e5360f78cbcaff248/pillow-11.3.0-cp312-cp312-win32.whl", hash = "sha256:7b161756381f0918e05e7cb8a371fff367e807770f8fe92ecb20d905d0e1c149", size = 6275079, upload_time = "2025-07-01T09:14:30.104Z" }, + { url = "https://files.pythonhosted.org/packages/8c/ce/e7dfc873bdd9828f3b6e5c2bbb74e47a98ec23cc5c74fc4e54462f0d9204/pillow-11.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:a6444696fce635783440b7f7a9fc24b3ad10a9ea3f0ab66c5905be1c19ccf17d", size = 6986324, upload_time = "2025-07-01T09:14:31.899Z" }, + { url = "https://files.pythonhosted.org/packages/16/8f/b13447d1bf0b1f7467ce7d86f6e6edf66c0ad7cf44cf5c87a37f9bed9936/pillow-11.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:2aceea54f957dd4448264f9bf40875da0415c83eb85f55069d89c0ed436e3542", size = 2423067, upload_time = "2025-07-01T09:14:33.709Z" }, + { url = "https://files.pythonhosted.org/packages/1e/93/0952f2ed8db3a5a4c7a11f91965d6184ebc8cd7cbb7941a260d5f018cd2d/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphoneos.whl", hash = "sha256:1c627742b539bba4309df89171356fcb3cc5a9178355b2727d1b74a6cf155fbd", size = 2128328, upload_time = "2025-07-01T09:14:35.276Z" }, + { url = "https://files.pythonhosted.org/packages/4b/e8/100c3d114b1a0bf4042f27e0f87d2f25e857e838034e98ca98fe7b8c0a9c/pillow-11.3.0-cp313-cp313-ios_13_0_arm64_iphonesimulator.whl", hash = "sha256:30b7c02f3899d10f13d7a48163c8969e4e653f8b43416d23d13d1bbfdc93b9f8", size = 2170652, upload_time = "2025-07-01T09:14:37.203Z" }, + { url = "https://files.pythonhosted.org/packages/aa/86/3f758a28a6e381758545f7cdb4942e1cb79abd271bea932998fc0db93cb6/pillow-11.3.0-cp313-cp313-ios_13_0_x86_64_iphonesimulator.whl", hash = "sha256:7859a4cc7c9295f5838015d8cc0a9c215b77e43d07a25e460f35cf516df8626f", size = 2227443, upload_time = "2025-07-01T09:14:39.344Z" }, + { url = "https://files.pythonhosted.org/packages/01/f4/91d5b3ffa718df2f53b0dc109877993e511f4fd055d7e9508682e8aba092/pillow-11.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:ec1ee50470b0d050984394423d96325b744d55c701a439d2bd66089bff963d3c", size = 5278474, upload_time = "2025-07-01T09:14:41.843Z" }, + { url = "https://files.pythonhosted.org/packages/f9/0e/37d7d3eca6c879fbd9dba21268427dffda1ab00d4eb05b32923d4fbe3b12/pillow-11.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:7db51d222548ccfd274e4572fdbf3e810a5e66b00608862f947b163e613b67dd", size = 4686038, upload_time = "2025-07-01T09:14:44.008Z" }, + { url = "https://files.pythonhosted.org/packages/ff/b0/3426e5c7f6565e752d81221af9d3676fdbb4f352317ceafd42899aaf5d8a/pillow-11.3.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:2d6fcc902a24ac74495df63faad1884282239265c6839a0a6416d33faedfae7e", size = 5864407, upload_time = "2025-07-03T13:10:15.628Z" }, + { url = "https://files.pythonhosted.org/packages/fc/c1/c6c423134229f2a221ee53f838d4be9d82bab86f7e2f8e75e47b6bf6cd77/pillow-11.3.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f0f5d8f4a08090c6d6d578351a2b91acf519a54986c055af27e7a93feae6d3f1", size = 7639094, upload_time = "2025-07-03T13:10:21.857Z" }, + { url = "https://files.pythonhosted.org/packages/ba/c9/09e6746630fe6372c67c648ff9deae52a2bc20897d51fa293571977ceb5d/pillow-11.3.0-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c37d8ba9411d6003bba9e518db0db0c58a680ab9fe5179f040b0463644bc9805", size = 5973503, upload_time = "2025-07-01T09:14:45.698Z" }, + { url = "https://files.pythonhosted.org/packages/d5/1c/a2a29649c0b1983d3ef57ee87a66487fdeb45132df66ab30dd37f7dbe162/pillow-11.3.0-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:13f87d581e71d9189ab21fe0efb5a23e9f28552d5be6979e84001d3b8505abe8", size = 6642574, upload_time = "2025-07-01T09:14:47.415Z" }, + { url = "https://files.pythonhosted.org/packages/36/de/d5cc31cc4b055b6c6fd990e3e7f0f8aaf36229a2698501bcb0cdf67c7146/pillow-11.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:023f6d2d11784a465f09fd09a34b150ea4672e85fb3d05931d89f373ab14abb2", size = 6084060, upload_time = "2025-07-01T09:14:49.636Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ea/502d938cbaeec836ac28a9b730193716f0114c41325db428e6b280513f09/pillow-11.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:45dfc51ac5975b938e9809451c51734124e73b04d0f0ac621649821a63852e7b", size = 6721407, upload_time = "2025-07-01T09:14:51.962Z" }, + { url = "https://files.pythonhosted.org/packages/45/9c/9c5e2a73f125f6cbc59cc7087c8f2d649a7ae453f83bd0362ff7c9e2aee2/pillow-11.3.0-cp313-cp313-win32.whl", hash = "sha256:a4d336baed65d50d37b88ca5b60c0fa9d81e3a87d4a7930d3880d1624d5b31f3", size = 6273841, upload_time = "2025-07-01T09:14:54.142Z" }, + { url = "https://files.pythonhosted.org/packages/23/85/397c73524e0cd212067e0c969aa245b01d50183439550d24d9f55781b776/pillow-11.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:0bce5c4fd0921f99d2e858dc4d4d64193407e1b99478bc5cacecba2311abde51", size = 6978450, upload_time = "2025-07-01T09:14:56.436Z" }, + { url = "https://files.pythonhosted.org/packages/17/d2/622f4547f69cd173955194b78e4d19ca4935a1b0f03a302d655c9f6aae65/pillow-11.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:1904e1264881f682f02b7f8167935cce37bc97db457f8e7849dc3a6a52b99580", size = 2423055, upload_time = "2025-07-01T09:14:58.072Z" }, + { url = "https://files.pythonhosted.org/packages/dd/80/a8a2ac21dda2e82480852978416cfacd439a4b490a501a288ecf4fe2532d/pillow-11.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:4c834a3921375c48ee6b9624061076bc0a32a60b5532b322cc0ea64e639dd50e", size = 5281110, upload_time = "2025-07-01T09:14:59.79Z" }, + { url = "https://files.pythonhosted.org/packages/44/d6/b79754ca790f315918732e18f82a8146d33bcd7f4494380457ea89eb883d/pillow-11.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5e05688ccef30ea69b9317a9ead994b93975104a677a36a8ed8106be9260aa6d", size = 4689547, upload_time = "2025-07-01T09:15:01.648Z" }, + { url = "https://files.pythonhosted.org/packages/49/20/716b8717d331150cb00f7fdd78169c01e8e0c219732a78b0e59b6bdb2fd6/pillow-11.3.0-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:1019b04af07fc0163e2810167918cb5add8d74674b6267616021ab558dc98ced", size = 5901554, upload_time = "2025-07-03T13:10:27.018Z" }, + { url = "https://files.pythonhosted.org/packages/74/cf/a9f3a2514a65bb071075063a96f0a5cf949c2f2fce683c15ccc83b1c1cab/pillow-11.3.0-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f944255db153ebb2b19c51fe85dd99ef0ce494123f21b9db4877ffdfc5590c7c", size = 7669132, upload_time = "2025-07-03T13:10:33.01Z" }, + { url = "https://files.pythonhosted.org/packages/98/3c/da78805cbdbee9cb43efe8261dd7cc0b4b93f2ac79b676c03159e9db2187/pillow-11.3.0-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1f85acb69adf2aaee8b7da124efebbdb959a104db34d3a2cb0f3793dbae422a8", size = 6005001, upload_time = "2025-07-01T09:15:03.365Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fa/ce044b91faecf30e635321351bba32bab5a7e034c60187fe9698191aef4f/pillow-11.3.0-cp313-cp313t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:05f6ecbeff5005399bb48d198f098a9b4b6bdf27b8487c7f38ca16eeb070cd59", size = 6668814, upload_time = "2025-07-01T09:15:05.655Z" }, + { url = "https://files.pythonhosted.org/packages/7b/51/90f9291406d09bf93686434f9183aba27b831c10c87746ff49f127ee80cb/pillow-11.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a7bc6e6fd0395bc052f16b1a8670859964dbd7003bd0af2ff08342eb6e442cfe", size = 6113124, upload_time = "2025-07-01T09:15:07.358Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5a/6fec59b1dfb619234f7636d4157d11fb4e196caeee220232a8d2ec48488d/pillow-11.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:83e1b0161c9d148125083a35c1c5a89db5b7054834fd4387499e06552035236c", size = 6747186, upload_time = "2025-07-01T09:15:09.317Z" }, + { url = "https://files.pythonhosted.org/packages/49/6b/00187a044f98255225f172de653941e61da37104a9ea60e4f6887717e2b5/pillow-11.3.0-cp313-cp313t-win32.whl", hash = "sha256:2a3117c06b8fb646639dce83694f2f9eac405472713fcb1ae887469c0d4f6788", size = 6277546, upload_time = "2025-07-01T09:15:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5c/6caaba7e261c0d75bab23be79f1d06b5ad2a2ae49f028ccec801b0e853d6/pillow-11.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:857844335c95bea93fb39e0fa2726b4d9d758850b34075a7e3ff4f4fa3aa3b31", size = 6985102, upload_time = "2025-07-01T09:15:13.164Z" }, + { url = "https://files.pythonhosted.org/packages/f3/7e/b623008460c09a0cb38263c93b828c666493caee2eb34ff67f778b87e58c/pillow-11.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:8797edc41f3e8536ae4b10897ee2f637235c94f27404cac7297f7b607dd0716e", size = 2424803, upload_time = "2025-07-01T09:15:15.695Z" }, + { url = "https://files.pythonhosted.org/packages/73/f4/04905af42837292ed86cb1b1dabe03dce1edc008ef14c473c5c7e1443c5d/pillow-11.3.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:d9da3df5f9ea2a89b81bb6087177fb1f4d1c7146d583a3fe5c672c0d94e55e12", size = 5278520, upload_time = "2025-07-01T09:15:17.429Z" }, + { url = "https://files.pythonhosted.org/packages/41/b0/33d79e377a336247df6348a54e6d2a2b85d644ca202555e3faa0cf811ecc/pillow-11.3.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:0b275ff9b04df7b640c59ec5a3cb113eefd3795a8df80bac69646ef699c6981a", size = 4686116, upload_time = "2025-07-01T09:15:19.423Z" }, + { url = "https://files.pythonhosted.org/packages/49/2d/ed8bc0ab219ae8768f529597d9509d184fe8a6c4741a6864fea334d25f3f/pillow-11.3.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0743841cabd3dba6a83f38a92672cccbd69af56e3e91777b0ee7f4dba4385632", size = 5864597, upload_time = "2025-07-03T13:10:38.404Z" }, + { url = "https://files.pythonhosted.org/packages/b5/3d/b932bb4225c80b58dfadaca9d42d08d0b7064d2d1791b6a237f87f661834/pillow-11.3.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2465a69cf967b8b49ee1b96d76718cd98c4e925414ead59fdf75cf0fd07df673", size = 7638246, upload_time = "2025-07-03T13:10:44.987Z" }, + { url = "https://files.pythonhosted.org/packages/09/b5/0487044b7c096f1b48f0d7ad416472c02e0e4bf6919541b111efd3cae690/pillow-11.3.0-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:41742638139424703b4d01665b807c6468e23e699e8e90cffefe291c5832b027", size = 5973336, upload_time = "2025-07-01T09:15:21.237Z" }, + { url = "https://files.pythonhosted.org/packages/a8/2d/524f9318f6cbfcc79fbc004801ea6b607ec3f843977652fdee4857a7568b/pillow-11.3.0-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:93efb0b4de7e340d99057415c749175e24c8864302369e05914682ba642e5d77", size = 6642699, upload_time = "2025-07-01T09:15:23.186Z" }, + { url = "https://files.pythonhosted.org/packages/6f/d2/a9a4f280c6aefedce1e8f615baaa5474e0701d86dd6f1dede66726462bbd/pillow-11.3.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7966e38dcd0fa11ca390aed7c6f20454443581d758242023cf36fcb319b1a874", size = 6083789, upload_time = "2025-07-01T09:15:25.1Z" }, + { url = "https://files.pythonhosted.org/packages/fe/54/86b0cd9dbb683a9d5e960b66c7379e821a19be4ac5810e2e5a715c09a0c0/pillow-11.3.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:98a9afa7b9007c67ed84c57c9e0ad86a6000da96eaa638e4f8abe5b65ff83f0a", size = 6720386, upload_time = "2025-07-01T09:15:27.378Z" }, + { url = "https://files.pythonhosted.org/packages/e7/95/88efcaf384c3588e24259c4203b909cbe3e3c2d887af9e938c2022c9dd48/pillow-11.3.0-cp314-cp314-win32.whl", hash = "sha256:02a723e6bf909e7cea0dac1b0e0310be9d7650cd66222a5f1c571455c0a45214", size = 6370911, upload_time = "2025-07-01T09:15:29.294Z" }, + { url = "https://files.pythonhosted.org/packages/2e/cc/934e5820850ec5eb107e7b1a72dd278140731c669f396110ebc326f2a503/pillow-11.3.0-cp314-cp314-win_amd64.whl", hash = "sha256:a418486160228f64dd9e9efcd132679b7a02a5f22c982c78b6fc7dab3fefb635", size = 7117383, upload_time = "2025-07-01T09:15:31.128Z" }, + { url = "https://files.pythonhosted.org/packages/d6/e9/9c0a616a71da2a5d163aa37405e8aced9a906d574b4a214bede134e731bc/pillow-11.3.0-cp314-cp314-win_arm64.whl", hash = "sha256:155658efb5e044669c08896c0c44231c5e9abcaadbc5cd3648df2f7c0b96b9a6", size = 2511385, upload_time = "2025-07-01T09:15:33.328Z" }, + { url = "https://files.pythonhosted.org/packages/1a/33/c88376898aff369658b225262cd4f2659b13e8178e7534df9e6e1fa289f6/pillow-11.3.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:59a03cdf019efbfeeed910bf79c7c93255c3d54bc45898ac2a4140071b02b4ae", size = 5281129, upload_time = "2025-07-01T09:15:35.194Z" }, + { url = "https://files.pythonhosted.org/packages/1f/70/d376247fb36f1844b42910911c83a02d5544ebd2a8bad9efcc0f707ea774/pillow-11.3.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:f8a5827f84d973d8636e9dc5764af4f0cf2318d26744b3d902931701b0d46653", size = 4689580, upload_time = "2025-07-01T09:15:37.114Z" }, + { url = "https://files.pythonhosted.org/packages/eb/1c/537e930496149fbac69efd2fc4329035bbe2e5475b4165439e3be9cb183b/pillow-11.3.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ee92f2fd10f4adc4b43d07ec5e779932b4eb3dbfbc34790ada5a6669bc095aa6", size = 5902860, upload_time = "2025-07-03T13:10:50.248Z" }, + { url = "https://files.pythonhosted.org/packages/bd/57/80f53264954dcefeebcf9dae6e3eb1daea1b488f0be8b8fef12f79a3eb10/pillow-11.3.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c96d333dcf42d01f47b37e0979b6bd73ec91eae18614864622d9b87bbd5bbf36", size = 7670694, upload_time = "2025-07-03T13:10:56.432Z" }, + { url = "https://files.pythonhosted.org/packages/70/ff/4727d3b71a8578b4587d9c276e90efad2d6fe0335fd76742a6da08132e8c/pillow-11.3.0-cp314-cp314t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4c96f993ab8c98460cd0c001447bff6194403e8b1d7e149ade5f00594918128b", size = 6005888, upload_time = "2025-07-01T09:15:39.436Z" }, + { url = "https://files.pythonhosted.org/packages/05/ae/716592277934f85d3be51d7256f3636672d7b1abfafdc42cf3f8cbd4b4c8/pillow-11.3.0-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:41342b64afeba938edb034d122b2dda5db2139b9a4af999729ba8818e0056477", size = 6670330, upload_time = "2025-07-01T09:15:41.269Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7fe6cddcc8827b01b1a9766f5fdeb7418680744f9082035bdbabecf1d57f/pillow-11.3.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:068d9c39a2d1b358eb9f245ce7ab1b5c3246c7c8c7d9ba58cfa5b43146c06e50", size = 6114089, upload_time = "2025-07-01T09:15:43.13Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f5/06bfaa444c8e80f1a8e4bff98da9c83b37b5be3b1deaa43d27a0db37ef84/pillow-11.3.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:a1bc6ba083b145187f648b667e05a2534ecc4b9f2784c2cbe3089e44868f2b9b", size = 6748206, upload_time = "2025-07-01T09:15:44.937Z" }, + { url = "https://files.pythonhosted.org/packages/f0/77/bc6f92a3e8e6e46c0ca78abfffec0037845800ea38c73483760362804c41/pillow-11.3.0-cp314-cp314t-win32.whl", hash = "sha256:118ca10c0d60b06d006be10a501fd6bbdfef559251ed31b794668ed569c87e12", size = 6377370, upload_time = "2025-07-01T09:15:46.673Z" }, + { url = "https://files.pythonhosted.org/packages/4a/82/3a721f7d69dca802befb8af08b7c79ebcab461007ce1c18bd91a5d5896f9/pillow-11.3.0-cp314-cp314t-win_amd64.whl", hash = "sha256:8924748b688aa210d79883357d102cd64690e56b923a186f35a82cbc10f997db", size = 7121500, upload_time = "2025-07-01T09:15:48.512Z" }, + { url = "https://files.pythonhosted.org/packages/89/c7/5572fa4a3f45740eaab6ae86fcdf7195b55beac1371ac8c619d880cfe948/pillow-11.3.0-cp314-cp314t-win_arm64.whl", hash = "sha256:79ea0d14d3ebad43ec77ad5272e6ff9bba5b679ef73375ea760261207fa8e0aa", size = 2512835, upload_time = "2025-07-01T09:15:50.399Z" }, ] [[package]] @@ -1945,36 +1987,36 @@ dependencies = [ { name = "platformdirs" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5a/cb/e6ffaf3d019e8501b1264dac529bf829ac2f1fe1d488cfcf67f1fccadacf/pint-0.25.tar.gz", hash = "sha256:22911a30d682ee0540d656571c19a7b1806ce00b2be88a16f67218108b7b8cc2", size = 253010 } +sdist = { url = "https://files.pythonhosted.org/packages/5a/cb/e6ffaf3d019e8501b1264dac529bf829ac2f1fe1d488cfcf67f1fccadacf/pint-0.25.tar.gz", hash = "sha256:22911a30d682ee0540d656571c19a7b1806ce00b2be88a16f67218108b7b8cc2", size = 253010, upload_time = "2025-08-15T19:49:12.72Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/cc/c528311d798e22ec884b816e8aa2989e0f1f28cdc8e5969e2be5f10bce85/pint-0.25-py3-none-any.whl", hash = "sha256:cc20ae3dff010b9bbea41fb80c2de008f683cc83512cea73633d55aead80aa1e", size = 305462 }, + { url = "https://files.pythonhosted.org/packages/76/cc/c528311d798e22ec884b816e8aa2989e0f1f28cdc8e5969e2be5f10bce85/pint-0.25-py3-none-any.whl", hash = "sha256:cc20ae3dff010b9bbea41fb80c2de008f683cc83512cea73633d55aead80aa1e", size = 305462, upload_time = "2025-08-15T19:49:11.083Z" }, ] [[package]] name = "platformdirs" -version = "4.4.0" +version = "4.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/23/e8/21db9c9987b0e728855bd57bff6984f67952bea55d6f75e055c46b5383e8/platformdirs-4.4.0.tar.gz", hash = "sha256:ca753cf4d81dc309bc67b0ea38fd15dc97bc30ce419a7f58d13eb3bf14c4febf", size = 21634 } +sdist = { url = "https://files.pythonhosted.org/packages/61/33/9611380c2bdb1225fdef633e2a9610622310fed35ab11dac9620972ee088/platformdirs-4.5.0.tar.gz", hash = "sha256:70ddccdd7c99fc5942e9fc25636a8b34d04c24b335100223152c2803e4063312", size = 21632, upload_time = "2025-10-08T17:44:48.791Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/40/4b/2028861e724d3bd36227adfa20d3fd24c3fc6d52032f4a93c133be5d17ce/platformdirs-4.4.0-py3-none-any.whl", hash = "sha256:abd01743f24e5287cd7a5db3752faf1a2d65353f38ec26d98e25a6db65958c85", size = 18654 }, + { url = "https://files.pythonhosted.org/packages/73/cb/ac7874b3e5d58441674fb70742e6c374b28b0c7cb988d37d991cde47166c/platformdirs-4.5.0-py3-none-any.whl", hash = "sha256:e578a81bb873cbb89a41fcc904c7ef523cc18284b7e3b3ccf06aca1403b7ebd3", size = 18651, upload_time = "2025-10-08T17:44:47.223Z" }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload_time = "2025-05-15T12:30:07.975Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload_time = "2025-05-15T12:30:06.134Z" }, ] [[package]] name = "ply" version = "3.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130 } +sdist = { url = "https://files.pythonhosted.org/packages/e5/69/882ee5c9d017149285cab114ebeab373308ef0f874fcdac9beb90e0ac4da/ply-3.11.tar.gz", hash = "sha256:00c7c1aaa88358b9c765b6d3000c6eec0ba42abca5351b095321aef446081da3", size = 159130, upload_time = "2018-02-15T19:01:31.097Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567 }, + { url = "https://files.pythonhosted.org/packages/a3/58/35da89ee790598a0700ea49b2a66594140f44dec458c07e8e3d4979137fc/ply-3.11-py2.py3-none-any.whl", hash = "sha256:096f9b8350b65ebd2fd1346b12452efe5b9607f7482813ffca50c22722a807ce", size = 49567, upload_time = "2018-02-15T19:01:27.172Z" }, ] [[package]] @@ -1988,9 +2030,9 @@ dependencies = [ { name = "pyyaml" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ff/29/7cf5bbc236333876e4b41f56e06857a87937ce4bf91e117a6991a2dbb02a/pre_commit-4.3.0.tar.gz", hash = "sha256:499fe450cc9d42e9d58e606262795ecb64dd05438943c62b66f6a8673da30b16", size = 193792 } +sdist = { url = "https://files.pythonhosted.org/packages/ff/29/7cf5bbc236333876e4b41f56e06857a87937ce4bf91e117a6991a2dbb02a/pre_commit-4.3.0.tar.gz", hash = "sha256:499fe450cc9d42e9d58e606262795ecb64dd05438943c62b66f6a8673da30b16", size = 193792, upload_time = "2025-08-09T18:56:14.651Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/a5/987a405322d78a73b66e39e4a90e4ef156fd7141bf71df987e50717c321b/pre_commit-4.3.0-py2.py3-none-any.whl", hash = "sha256:2b0747ad7e6e967169136edffee14c16e148a778a54e4f967921aa1ebf2308d8", size = 220965 }, + { url = "https://files.pythonhosted.org/packages/5b/a5/987a405322d78a73b66e39e4a90e4ef156fd7141bf71df987e50717c321b/pre_commit-4.3.0-py2.py3-none-any.whl", hash = "sha256:2b0747ad7e6e967169136edffee14c16e148a778a54e4f967921aa1ebf2308d8", size = 220965, upload_time = "2025-08-09T18:56:13.192Z" }, ] [[package]] @@ -2000,81 +2042,81 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wcwidth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198 } +sdist = { url = "https://files.pythonhosted.org/packages/a1/96/06e01a7b38dce6fe1db213e061a4602dd6032a8a97ef6c1a862537732421/prompt_toolkit-3.0.52.tar.gz", hash = "sha256:28cde192929c8e7321de85de1ddbe736f1375148b02f2e17edd840042b1be855", size = 434198, upload_time = "2025-08-27T15:24:02.057Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431 }, + { url = "https://files.pythonhosted.org/packages/84/03/0d3ce49e2505ae70cf43bc5bb3033955d2fc9f932163e84dc0779cc47f48/prompt_toolkit-3.0.52-py3-none-any.whl", hash = "sha256:9aac639a3bbd33284347de5ad8d68ecc044b91a762dc39b7c21095fcd6a19955", size = 391431, upload_time = "2025-08-27T15:23:59.498Z" }, ] [[package]] name = "psutil" version = "7.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b3/31/4723d756b59344b643542936e37a31d1d3204bcdc42a7daa8ee9eb06fb50/psutil-7.1.0.tar.gz", hash = "sha256:655708b3c069387c8b77b072fc429a57d0e214221d01c0a772df7dfedcb3bcd2", size = 497660 } +sdist = { url = "https://files.pythonhosted.org/packages/b3/31/4723d756b59344b643542936e37a31d1d3204bcdc42a7daa8ee9eb06fb50/psutil-7.1.0.tar.gz", hash = "sha256:655708b3c069387c8b77b072fc429a57d0e214221d01c0a772df7dfedcb3bcd2", size = 497660, upload_time = "2025-09-17T20:14:52.902Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/46/62/ce4051019ee20ce0ed74432dd73a5bb087a6704284a470bb8adff69a0932/psutil-7.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:76168cef4397494250e9f4e73eb3752b146de1dd950040b29186d0cce1d5ca13", size = 245242 }, - { url = "https://files.pythonhosted.org/packages/38/61/f76959fba841bf5b61123fbf4b650886dc4094c6858008b5bf73d9057216/psutil-7.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:5d007560c8c372efdff9e4579c2846d71de737e4605f611437255e81efcca2c5", size = 246682 }, - { url = "https://files.pythonhosted.org/packages/88/7a/37c99d2e77ec30d63398ffa6a660450b8a62517cabe44b3e9bae97696e8d/psutil-7.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22e4454970b32472ce7deaa45d045b34d3648ce478e26a04c7e858a0a6e75ff3", size = 287994 }, - { url = "https://files.pythonhosted.org/packages/9d/de/04c8c61232f7244aa0a4b9a9fbd63a89d5aeaf94b2fc9d1d16e2faa5cbb0/psutil-7.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c70e113920d51e89f212dd7be06219a9b88014e63a4cec69b684c327bc474e3", size = 291163 }, - { url = "https://files.pythonhosted.org/packages/f4/58/c4f976234bf6d4737bc8c02a81192f045c307b72cf39c9e5c5a2d78927f6/psutil-7.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d4a113425c037300de3ac8b331637293da9be9713855c4fc9d2d97436d7259d", size = 293625 }, - { url = "https://files.pythonhosted.org/packages/79/87/157c8e7959ec39ced1b11cc93c730c4fb7f9d408569a6c59dbd92ceb35db/psutil-7.1.0-cp37-abi3-win32.whl", hash = "sha256:09ad740870c8d219ed8daae0ad3b726d3bf9a028a198e7f3080f6a1888b99bca", size = 244812 }, - { url = "https://files.pythonhosted.org/packages/bf/e9/b44c4f697276a7a95b8e94d0e320a7bf7f3318521b23de69035540b39838/psutil-7.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:57f5e987c36d3146c0dd2528cd42151cf96cd359b9d67cfff836995cc5df9a3d", size = 247965 }, - { url = "https://files.pythonhosted.org/packages/26/65/1070a6e3c036f39142c2820c4b52e9243246fcfc3f96239ac84472ba361e/psutil-7.1.0-cp37-abi3-win_arm64.whl", hash = "sha256:6937cb68133e7c97b6cc9649a570c9a18ba0efebed46d8c5dae4c07fa1b67a07", size = 244971 }, + { url = "https://files.pythonhosted.org/packages/46/62/ce4051019ee20ce0ed74432dd73a5bb087a6704284a470bb8adff69a0932/psutil-7.1.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:76168cef4397494250e9f4e73eb3752b146de1dd950040b29186d0cce1d5ca13", size = 245242, upload_time = "2025-09-17T20:14:56.126Z" }, + { url = "https://files.pythonhosted.org/packages/38/61/f76959fba841bf5b61123fbf4b650886dc4094c6858008b5bf73d9057216/psutil-7.1.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:5d007560c8c372efdff9e4579c2846d71de737e4605f611437255e81efcca2c5", size = 246682, upload_time = "2025-09-17T20:14:58.25Z" }, + { url = "https://files.pythonhosted.org/packages/88/7a/37c99d2e77ec30d63398ffa6a660450b8a62517cabe44b3e9bae97696e8d/psutil-7.1.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:22e4454970b32472ce7deaa45d045b34d3648ce478e26a04c7e858a0a6e75ff3", size = 287994, upload_time = "2025-09-17T20:14:59.901Z" }, + { url = "https://files.pythonhosted.org/packages/9d/de/04c8c61232f7244aa0a4b9a9fbd63a89d5aeaf94b2fc9d1d16e2faa5cbb0/psutil-7.1.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c70e113920d51e89f212dd7be06219a9b88014e63a4cec69b684c327bc474e3", size = 291163, upload_time = "2025-09-17T20:15:01.481Z" }, + { url = "https://files.pythonhosted.org/packages/f4/58/c4f976234bf6d4737bc8c02a81192f045c307b72cf39c9e5c5a2d78927f6/psutil-7.1.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7d4a113425c037300de3ac8b331637293da9be9713855c4fc9d2d97436d7259d", size = 293625, upload_time = "2025-09-17T20:15:04.492Z" }, + { url = "https://files.pythonhosted.org/packages/79/87/157c8e7959ec39ced1b11cc93c730c4fb7f9d408569a6c59dbd92ceb35db/psutil-7.1.0-cp37-abi3-win32.whl", hash = "sha256:09ad740870c8d219ed8daae0ad3b726d3bf9a028a198e7f3080f6a1888b99bca", size = 244812, upload_time = "2025-09-17T20:15:07.462Z" }, + { url = "https://files.pythonhosted.org/packages/bf/e9/b44c4f697276a7a95b8e94d0e320a7bf7f3318521b23de69035540b39838/psutil-7.1.0-cp37-abi3-win_amd64.whl", hash = "sha256:57f5e987c36d3146c0dd2528cd42151cf96cd359b9d67cfff836995cc5df9a3d", size = 247965, upload_time = "2025-09-17T20:15:09.673Z" }, + { url = "https://files.pythonhosted.org/packages/26/65/1070a6e3c036f39142c2820c4b52e9243246fcfc3f96239ac84472ba361e/psutil-7.1.0-cp37-abi3-win_arm64.whl", hash = "sha256:6937cb68133e7c97b6cc9649a570c9a18ba0efebed46d8c5dae4c07fa1b67a07", size = 244971, upload_time = "2025-09-17T20:15:12.262Z" }, ] [[package]] name = "ptyprocess" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762 } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload_time = "2020-12-28T15:15:30.155Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993 }, + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload_time = "2020-12-28T15:15:28.35Z" }, ] [[package]] name = "pure-eval" version = "0.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752 } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload_time = "2024-07-21T12:58:21.801Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842 }, + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload_time = "2024-07-21T12:58:20.04Z" }, ] [[package]] name = "pyarrow" version = "21.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ef/c2/ea068b8f00905c06329a3dfcd40d0fcc2b7d0f2e355bdb25b65e0a0e4cd4/pyarrow-21.0.0.tar.gz", hash = "sha256:5051f2dccf0e283ff56335760cbc8622cf52264d67e359d5569541ac11b6d5bc", size = 1133487 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ca/d4/d4f817b21aacc30195cf6a46ba041dd1be827efa4a623cc8bf39a1c2a0c0/pyarrow-21.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:3a302f0e0963db37e0a24a70c56cf91a4faa0bca51c23812279ca2e23481fccd", size = 31160305 }, - { url = "https://files.pythonhosted.org/packages/a2/9c/dcd38ce6e4b4d9a19e1d36914cb8e2b1da4e6003dd075474c4cfcdfe0601/pyarrow-21.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:b6b27cf01e243871390474a211a7922bfbe3bda21e39bc9160daf0da3fe48876", size = 32684264 }, - { url = "https://files.pythonhosted.org/packages/4f/74/2a2d9f8d7a59b639523454bec12dba35ae3d0a07d8ab529dc0809f74b23c/pyarrow-21.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:e72a8ec6b868e258a2cd2672d91f2860ad532d590ce94cdf7d5e7ec674ccf03d", size = 41108099 }, - { url = "https://files.pythonhosted.org/packages/ad/90/2660332eeb31303c13b653ea566a9918484b6e4d6b9d2d46879a33ab0622/pyarrow-21.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b7ae0bbdc8c6674259b25bef5d2a1d6af5d39d7200c819cf99e07f7dfef1c51e", size = 42829529 }, - { url = "https://files.pythonhosted.org/packages/33/27/1a93a25c92717f6aa0fca06eb4700860577d016cd3ae51aad0e0488ac899/pyarrow-21.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:58c30a1729f82d201627c173d91bd431db88ea74dcaa3885855bc6203e433b82", size = 43367883 }, - { url = "https://files.pythonhosted.org/packages/05/d9/4d09d919f35d599bc05c6950095e358c3e15148ead26292dfca1fb659b0c/pyarrow-21.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:072116f65604b822a7f22945a7a6e581cfa28e3454fdcc6939d4ff6090126623", size = 45133802 }, - { url = "https://files.pythonhosted.org/packages/71/30/f3795b6e192c3ab881325ffe172e526499eb3780e306a15103a2764916a2/pyarrow-21.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf56ec8b0a5c8c9d7021d6fd754e688104f9ebebf1bf4449613c9531f5346a18", size = 26203175 }, - { url = "https://files.pythonhosted.org/packages/16/ca/c7eaa8e62db8fb37ce942b1ea0c6d7abfe3786ca193957afa25e71b81b66/pyarrow-21.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e99310a4ebd4479bcd1964dff9e14af33746300cb014aa4a3781738ac63baf4a", size = 31154306 }, - { url = "https://files.pythonhosted.org/packages/ce/e8/e87d9e3b2489302b3a1aea709aaca4b781c5252fcb812a17ab6275a9a484/pyarrow-21.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:d2fe8e7f3ce329a71b7ddd7498b3cfac0eeb200c2789bd840234f0dc271a8efe", size = 32680622 }, - { url = "https://files.pythonhosted.org/packages/84/52/79095d73a742aa0aba370c7942b1b655f598069489ab387fe47261a849e1/pyarrow-21.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:f522e5709379d72fb3da7785aa489ff0bb87448a9dc5a75f45763a795a089ebd", size = 41104094 }, - { url = "https://files.pythonhosted.org/packages/89/4b/7782438b551dbb0468892a276b8c789b8bbdb25ea5c5eb27faadd753e037/pyarrow-21.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:69cbbdf0631396e9925e048cfa5bce4e8c3d3b41562bbd70c685a8eb53a91e61", size = 42825576 }, - { url = "https://files.pythonhosted.org/packages/b3/62/0f29de6e0a1e33518dec92c65be0351d32d7ca351e51ec5f4f837a9aab91/pyarrow-21.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:731c7022587006b755d0bdb27626a1a3bb004bb56b11fb30d98b6c1b4718579d", size = 43368342 }, - { url = "https://files.pythonhosted.org/packages/90/c7/0fa1f3f29cf75f339768cc698c8ad4ddd2481c1742e9741459911c9ac477/pyarrow-21.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc56bc708f2d8ac71bd1dcb927e458c93cec10b98eb4120206a4091db7b67b99", size = 45131218 }, - { url = "https://files.pythonhosted.org/packages/01/63/581f2076465e67b23bc5a37d4a2abff8362d389d29d8105832e82c9c811c/pyarrow-21.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:186aa00bca62139f75b7de8420f745f2af12941595bbbfa7ed3870ff63e25636", size = 26087551 }, - { url = "https://files.pythonhosted.org/packages/c9/ab/357d0d9648bb8241ee7348e564f2479d206ebe6e1c47ac5027c2e31ecd39/pyarrow-21.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:a7a102574faa3f421141a64c10216e078df467ab9576684d5cd696952546e2da", size = 31290064 }, - { url = "https://files.pythonhosted.org/packages/3f/8a/5685d62a990e4cac2043fc76b4661bf38d06efed55cf45a334b455bd2759/pyarrow-21.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:1e005378c4a2c6db3ada3ad4c217b381f6c886f0a80d6a316fe586b90f77efd7", size = 32727837 }, - { url = "https://files.pythonhosted.org/packages/fc/de/c0828ee09525c2bafefd3e736a248ebe764d07d0fd762d4f0929dbc516c9/pyarrow-21.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:65f8e85f79031449ec8706b74504a316805217b35b6099155dd7e227eef0d4b6", size = 41014158 }, - { url = "https://files.pythonhosted.org/packages/6e/26/a2865c420c50b7a3748320b614f3484bfcde8347b2639b2b903b21ce6a72/pyarrow-21.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:3a81486adc665c7eb1a2bde0224cfca6ceaba344a82a971ef059678417880eb8", size = 42667885 }, - { url = "https://files.pythonhosted.org/packages/0a/f9/4ee798dc902533159250fb4321267730bc0a107d8c6889e07c3add4fe3a5/pyarrow-21.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fc0d2f88b81dcf3ccf9a6ae17f89183762c8a94a5bdcfa09e05cfe413acf0503", size = 43276625 }, - { url = "https://files.pythonhosted.org/packages/5a/da/e02544d6997037a4b0d22d8e5f66bc9315c3671371a8b18c79ade1cefe14/pyarrow-21.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6299449adf89df38537837487a4f8d3bd91ec94354fdd2a7d30bc11c48ef6e79", size = 44951890 }, - { url = "https://files.pythonhosted.org/packages/e5/4e/519c1bc1876625fe6b71e9a28287c43ec2f20f73c658b9ae1d485c0c206e/pyarrow-21.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:222c39e2c70113543982c6b34f3077962b44fca38c0bd9e68bb6781534425c10", size = 26371006 }, +sdist = { url = "https://files.pythonhosted.org/packages/ef/c2/ea068b8f00905c06329a3dfcd40d0fcc2b7d0f2e355bdb25b65e0a0e4cd4/pyarrow-21.0.0.tar.gz", hash = "sha256:5051f2dccf0e283ff56335760cbc8622cf52264d67e359d5569541ac11b6d5bc", size = 1133487, upload_time = "2025-07-18T00:57:31.761Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/d4/d4f817b21aacc30195cf6a46ba041dd1be827efa4a623cc8bf39a1c2a0c0/pyarrow-21.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:3a302f0e0963db37e0a24a70c56cf91a4faa0bca51c23812279ca2e23481fccd", size = 31160305, upload_time = "2025-07-18T00:55:35.373Z" }, + { url = "https://files.pythonhosted.org/packages/a2/9c/dcd38ce6e4b4d9a19e1d36914cb8e2b1da4e6003dd075474c4cfcdfe0601/pyarrow-21.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:b6b27cf01e243871390474a211a7922bfbe3bda21e39bc9160daf0da3fe48876", size = 32684264, upload_time = "2025-07-18T00:55:39.303Z" }, + { url = "https://files.pythonhosted.org/packages/4f/74/2a2d9f8d7a59b639523454bec12dba35ae3d0a07d8ab529dc0809f74b23c/pyarrow-21.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:e72a8ec6b868e258a2cd2672d91f2860ad532d590ce94cdf7d5e7ec674ccf03d", size = 41108099, upload_time = "2025-07-18T00:55:42.889Z" }, + { url = "https://files.pythonhosted.org/packages/ad/90/2660332eeb31303c13b653ea566a9918484b6e4d6b9d2d46879a33ab0622/pyarrow-21.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b7ae0bbdc8c6674259b25bef5d2a1d6af5d39d7200c819cf99e07f7dfef1c51e", size = 42829529, upload_time = "2025-07-18T00:55:47.069Z" }, + { url = "https://files.pythonhosted.org/packages/33/27/1a93a25c92717f6aa0fca06eb4700860577d016cd3ae51aad0e0488ac899/pyarrow-21.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:58c30a1729f82d201627c173d91bd431db88ea74dcaa3885855bc6203e433b82", size = 43367883, upload_time = "2025-07-18T00:55:53.069Z" }, + { url = "https://files.pythonhosted.org/packages/05/d9/4d09d919f35d599bc05c6950095e358c3e15148ead26292dfca1fb659b0c/pyarrow-21.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:072116f65604b822a7f22945a7a6e581cfa28e3454fdcc6939d4ff6090126623", size = 45133802, upload_time = "2025-07-18T00:55:57.714Z" }, + { url = "https://files.pythonhosted.org/packages/71/30/f3795b6e192c3ab881325ffe172e526499eb3780e306a15103a2764916a2/pyarrow-21.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:cf56ec8b0a5c8c9d7021d6fd754e688104f9ebebf1bf4449613c9531f5346a18", size = 26203175, upload_time = "2025-07-18T00:56:01.364Z" }, + { url = "https://files.pythonhosted.org/packages/16/ca/c7eaa8e62db8fb37ce942b1ea0c6d7abfe3786ca193957afa25e71b81b66/pyarrow-21.0.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e99310a4ebd4479bcd1964dff9e14af33746300cb014aa4a3781738ac63baf4a", size = 31154306, upload_time = "2025-07-18T00:56:04.42Z" }, + { url = "https://files.pythonhosted.org/packages/ce/e8/e87d9e3b2489302b3a1aea709aaca4b781c5252fcb812a17ab6275a9a484/pyarrow-21.0.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:d2fe8e7f3ce329a71b7ddd7498b3cfac0eeb200c2789bd840234f0dc271a8efe", size = 32680622, upload_time = "2025-07-18T00:56:07.505Z" }, + { url = "https://files.pythonhosted.org/packages/84/52/79095d73a742aa0aba370c7942b1b655f598069489ab387fe47261a849e1/pyarrow-21.0.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:f522e5709379d72fb3da7785aa489ff0bb87448a9dc5a75f45763a795a089ebd", size = 41104094, upload_time = "2025-07-18T00:56:10.994Z" }, + { url = "https://files.pythonhosted.org/packages/89/4b/7782438b551dbb0468892a276b8c789b8bbdb25ea5c5eb27faadd753e037/pyarrow-21.0.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:69cbbdf0631396e9925e048cfa5bce4e8c3d3b41562bbd70c685a8eb53a91e61", size = 42825576, upload_time = "2025-07-18T00:56:15.569Z" }, + { url = "https://files.pythonhosted.org/packages/b3/62/0f29de6e0a1e33518dec92c65be0351d32d7ca351e51ec5f4f837a9aab91/pyarrow-21.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:731c7022587006b755d0bdb27626a1a3bb004bb56b11fb30d98b6c1b4718579d", size = 43368342, upload_time = "2025-07-18T00:56:19.531Z" }, + { url = "https://files.pythonhosted.org/packages/90/c7/0fa1f3f29cf75f339768cc698c8ad4ddd2481c1742e9741459911c9ac477/pyarrow-21.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:dc56bc708f2d8ac71bd1dcb927e458c93cec10b98eb4120206a4091db7b67b99", size = 45131218, upload_time = "2025-07-18T00:56:23.347Z" }, + { url = "https://files.pythonhosted.org/packages/01/63/581f2076465e67b23bc5a37d4a2abff8362d389d29d8105832e82c9c811c/pyarrow-21.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:186aa00bca62139f75b7de8420f745f2af12941595bbbfa7ed3870ff63e25636", size = 26087551, upload_time = "2025-07-18T00:56:26.758Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ab/357d0d9648bb8241ee7348e564f2479d206ebe6e1c47ac5027c2e31ecd39/pyarrow-21.0.0-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:a7a102574faa3f421141a64c10216e078df467ab9576684d5cd696952546e2da", size = 31290064, upload_time = "2025-07-18T00:56:30.214Z" }, + { url = "https://files.pythonhosted.org/packages/3f/8a/5685d62a990e4cac2043fc76b4661bf38d06efed55cf45a334b455bd2759/pyarrow-21.0.0-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:1e005378c4a2c6db3ada3ad4c217b381f6c886f0a80d6a316fe586b90f77efd7", size = 32727837, upload_time = "2025-07-18T00:56:33.935Z" }, + { url = "https://files.pythonhosted.org/packages/fc/de/c0828ee09525c2bafefd3e736a248ebe764d07d0fd762d4f0929dbc516c9/pyarrow-21.0.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:65f8e85f79031449ec8706b74504a316805217b35b6099155dd7e227eef0d4b6", size = 41014158, upload_time = "2025-07-18T00:56:37.528Z" }, + { url = "https://files.pythonhosted.org/packages/6e/26/a2865c420c50b7a3748320b614f3484bfcde8347b2639b2b903b21ce6a72/pyarrow-21.0.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:3a81486adc665c7eb1a2bde0224cfca6ceaba344a82a971ef059678417880eb8", size = 42667885, upload_time = "2025-07-18T00:56:41.483Z" }, + { url = "https://files.pythonhosted.org/packages/0a/f9/4ee798dc902533159250fb4321267730bc0a107d8c6889e07c3add4fe3a5/pyarrow-21.0.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:fc0d2f88b81dcf3ccf9a6ae17f89183762c8a94a5bdcfa09e05cfe413acf0503", size = 43276625, upload_time = "2025-07-18T00:56:48.002Z" }, + { url = "https://files.pythonhosted.org/packages/5a/da/e02544d6997037a4b0d22d8e5f66bc9315c3671371a8b18c79ade1cefe14/pyarrow-21.0.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:6299449adf89df38537837487a4f8d3bd91ec94354fdd2a7d30bc11c48ef6e79", size = 44951890, upload_time = "2025-07-18T00:56:52.568Z" }, + { url = "https://files.pythonhosted.org/packages/e5/4e/519c1bc1876625fe6b71e9a28287c43ec2f20f73c658b9ae1d485c0c206e/pyarrow-21.0.0-cp313-cp313t-win_amd64.whl", hash = "sha256:222c39e2c70113543982c6b34f3077962b44fca38c0bd9e68bb6781534425c10", size = 26371006, upload_time = "2025-07-18T00:56:56.379Z" }, ] [[package]] name = "pycparser" version = "2.23" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734 } +sdist = { url = "https://files.pythonhosted.org/packages/fe/cf/d2d3b9f5699fb1e4615c8e32ff220203e43b248e1dfcc6736ad9057731ca/pycparser-2.23.tar.gz", hash = "sha256:78816d4f24add8f10a06d6f05b4d424ad9e96cfebf68a4ddc99c65c0720d00c2", size = 173734, upload_time = "2025-09-09T13:23:47.91Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140 }, + { url = "https://files.pythonhosted.org/packages/a0/e3/59cd50310fc9b59512193629e1984c1f95e5c8ae6e5d8c69532ccc65a7fe/pycparser-2.23-py3-none-any.whl", hash = "sha256:e5c6e8d3fbad53479cab09ac03729e0a9faf2bee3db8208a550daf5af81a5934", size = 118140, upload_time = "2025-09-09T13:23:46.651Z" }, ] [[package]] @@ -2087,9 +2129,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ff/5d/09a551ba512d7ca404d785072700d3f6727a02f6f3c24ecfd081c7cf0aa8/pydantic-2.11.9.tar.gz", hash = "sha256:6b8ffda597a14812a7975c90b82a8a2e777d9257aba3453f973acd3c032a18e2", size = 788495 } +sdist = { url = "https://files.pythonhosted.org/packages/ff/5d/09a551ba512d7ca404d785072700d3f6727a02f6f3c24ecfd081c7cf0aa8/pydantic-2.11.9.tar.gz", hash = "sha256:6b8ffda597a14812a7975c90b82a8a2e777d9257aba3453f973acd3c032a18e2", size = 788495, upload_time = "2025-09-13T11:26:39.325Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3e/d3/108f2006987c58e76691d5ae5d200dd3e0f532cb4e5fa3560751c3a1feba/pydantic-2.11.9-py3-none-any.whl", hash = "sha256:c42dd626f5cfc1c6950ce6205ea58c93efa406da65f479dcb4029d5934857da2", size = 444855 }, + { url = "https://files.pythonhosted.org/packages/3e/d3/108f2006987c58e76691d5ae5d200dd3e0f532cb4e5fa3560751c3a1feba/pydantic-2.11.9-py3-none-any.whl", hash = "sha256:c42dd626f5cfc1c6950ce6205ea58c93efa406da65f479dcb4029d5934857da2", size = 444855, upload_time = "2025-09-13T11:26:36.909Z" }, ] [[package]] @@ -2099,57 +2141,60 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, - { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688 }, - { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808 }, - { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580 }, - { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859 }, - { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810 }, - { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498 }, - { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611 }, - { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924 }, - { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196 }, - { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389 }, - { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223 }, - { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473 }, - { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269 }, - { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921 }, - { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162 }, - { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560 }, - { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777 }, +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload_time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload_time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload_time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload_time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload_time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload_time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload_time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload_time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload_time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload_time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload_time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload_time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload_time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload_time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload_time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/46/8c/99040727b41f56616573a28771b1bfa08a3d3fe74d3d513f01251f79f172/pydantic_core-2.33.2-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:1082dd3e2d7109ad8b7da48e1d4710c8d06c253cbc4a27c1cff4fbcaa97a9e3f", size = 2015688, upload_time = "2025-04-23T18:31:53.175Z" }, + { url = "https://files.pythonhosted.org/packages/3a/cc/5999d1eb705a6cefc31f0b4a90e9f7fc400539b1a1030529700cc1b51838/pydantic_core-2.33.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f517ca031dfc037a9c07e748cefd8d96235088b83b4f4ba8939105d20fa1dcd6", size = 1844808, upload_time = "2025-04-23T18:31:54.79Z" }, + { url = "https://files.pythonhosted.org/packages/6f/5e/a0a7b8885c98889a18b6e376f344da1ef323d270b44edf8174d6bce4d622/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a9f2c9dd19656823cb8250b0724ee9c60a82f3cdf68a080979d13092a3b0fef", size = 1885580, upload_time = "2025-04-23T18:31:57.393Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/953581f343c7d11a304581156618c3f592435523dd9d79865903272c256a/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:2b0a451c263b01acebe51895bfb0e1cc842a5c666efe06cdf13846c7418caa9a", size = 1973859, upload_time = "2025-04-23T18:31:59.065Z" }, + { url = "https://files.pythonhosted.org/packages/e6/55/f1a813904771c03a3f97f676c62cca0c0a4138654107c1b61f19c644868b/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1ea40a64d23faa25e62a70ad163571c0b342b8bf66d5fa612ac0dec4f069d916", size = 2120810, upload_time = "2025-04-23T18:32:00.78Z" }, + { url = "https://files.pythonhosted.org/packages/aa/c3/053389835a996e18853ba107a63caae0b9deb4a276c6b472931ea9ae6e48/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0fb2d542b4d66f9470e8065c5469ec676978d625a8b7a363f07d9a501a9cb36a", size = 2676498, upload_time = "2025-04-23T18:32:02.418Z" }, + { url = "https://files.pythonhosted.org/packages/eb/3c/f4abd740877a35abade05e437245b192f9d0ffb48bbbbd708df33d3cda37/pydantic_core-2.33.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9fdac5d6ffa1b5a83bca06ffe7583f5576555e6c8b3a91fbd25ea7780f825f7d", size = 2000611, upload_time = "2025-04-23T18:32:04.152Z" }, + { url = "https://files.pythonhosted.org/packages/59/a7/63ef2fed1837d1121a894d0ce88439fe3e3b3e48c7543b2a4479eb99c2bd/pydantic_core-2.33.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04a1a413977ab517154eebb2d326da71638271477d6ad87a769102f7c2488c56", size = 2107924, upload_time = "2025-04-23T18:32:06.129Z" }, + { url = "https://files.pythonhosted.org/packages/04/8f/2551964ef045669801675f1cfc3b0d74147f4901c3ffa42be2ddb1f0efc4/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:c8e7af2f4e0194c22b5b37205bfb293d166a7344a5b0d0eaccebc376546d77d5", size = 2063196, upload_time = "2025-04-23T18:32:08.178Z" }, + { url = "https://files.pythonhosted.org/packages/26/bd/d9602777e77fc6dbb0c7db9ad356e9a985825547dce5ad1d30ee04903918/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_armv7l.whl", hash = "sha256:5c92edd15cd58b3c2d34873597a1e20f13094f59cf88068adb18947df5455b4e", size = 2236389, upload_time = "2025-04-23T18:32:10.242Z" }, + { url = "https://files.pythonhosted.org/packages/42/db/0e950daa7e2230423ab342ae918a794964b053bec24ba8af013fc7c94846/pydantic_core-2.33.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:65132b7b4a1c0beded5e057324b7e16e10910c106d43675d9bd87d4f38dde162", size = 2239223, upload_time = "2025-04-23T18:32:12.382Z" }, + { url = "https://files.pythonhosted.org/packages/58/4d/4f937099c545a8a17eb52cb67fe0447fd9a373b348ccfa9a87f141eeb00f/pydantic_core-2.33.2-cp313-cp313-win32.whl", hash = "sha256:52fb90784e0a242bb96ec53f42196a17278855b0f31ac7c3cc6f5c1ec4811849", size = 1900473, upload_time = "2025-04-23T18:32:14.034Z" }, + { url = "https://files.pythonhosted.org/packages/a0/75/4a0a9bac998d78d889def5e4ef2b065acba8cae8c93696906c3a91f310ca/pydantic_core-2.33.2-cp313-cp313-win_amd64.whl", hash = "sha256:c083a3bdd5a93dfe480f1125926afcdbf2917ae714bdb80b36d34318b2bec5d9", size = 1955269, upload_time = "2025-04-23T18:32:15.783Z" }, + { url = "https://files.pythonhosted.org/packages/f9/86/1beda0576969592f1497b4ce8e7bc8cbdf614c352426271b1b10d5f0aa64/pydantic_core-2.33.2-cp313-cp313-win_arm64.whl", hash = "sha256:e80b087132752f6b3d714f041ccf74403799d3b23a72722ea2e6ba2e892555b9", size = 1893921, upload_time = "2025-04-23T18:32:18.473Z" }, + { url = "https://files.pythonhosted.org/packages/a4/7d/e09391c2eebeab681df2b74bfe6c43422fffede8dc74187b2b0bf6fd7571/pydantic_core-2.33.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:61c18fba8e5e9db3ab908620af374db0ac1baa69f0f32df4f61ae23f15e586ac", size = 1806162, upload_time = "2025-04-23T18:32:20.188Z" }, + { url = "https://files.pythonhosted.org/packages/f1/3d/847b6b1fed9f8ed3bb95a9ad04fbd0b212e832d4f0f50ff4d9ee5a9f15cf/pydantic_core-2.33.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95237e53bb015f67b63c91af7518a62a8660376a6a0db19b89acc77a4d6199f5", size = 1981560, upload_time = "2025-04-23T18:32:22.354Z" }, + { url = "https://files.pythonhosted.org/packages/6f/9a/e73262f6c6656262b5fdd723ad90f518f579b7bc8622e43a942eec53c938/pydantic_core-2.33.2-cp313-cp313t-win_amd64.whl", hash = "sha256:c2fc0a768ef76c15ab9238afa6da7f69895bb5d1ee83aeea2e3509af4472d0b9", size = 1935777, upload_time = "2025-04-23T18:32:25.088Z" }, ] [[package]] name = "pydeflate" -version = "2.1.3" +version = "2.3.3" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "filelock" }, { name = "hdx-python-country" }, { name = "imf-reader" }, { name = "oda-reader" }, { name = "pandas" }, + { name = "pandera" }, + { name = "platformdirs" }, { name = "pyarrow" }, { name = "requests" }, { name = "wbgapi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/72/3e56d8166ca4b366a4e37c85711a706bba66768f70ba690bdb279f728d8d/pydeflate-2.1.3.tar.gz", hash = "sha256:48a2b74ad900dd8c50dfb1e4cdfcea8ca11cbd2d3a713bf9208f2028fea4cf4f", size = 26586 } +sdist = { url = "https://files.pythonhosted.org/packages/09/cc/1661ca602d899247552cf851b3d48e95e152ce7ffd706f6c15afc918619c/pydeflate-2.3.3.tar.gz", hash = "sha256:298607a894cff9fb9786ba85924ff122fd72258b6802a6debf5ef66af1f33bf3", size = 39487, upload_time = "2025-12-07T09:41:36.937Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/31/e703ab5bc311c58e4dc00759d7a48a850877b8bbcd64c9778e2315e06bd5/pydeflate-2.1.3-py3-none-any.whl", hash = "sha256:09ebdde04eb2fea1c4b6712889cb2a9d4c2dd22ce0204aaeae64f4335667354f", size = 32540 }, + { url = "https://files.pythonhosted.org/packages/15/fc/52a47b29d97d22fec1289602fe65346dedfffbc797fe3df953f484641a31/pydeflate-2.3.3-py3-none-any.whl", hash = "sha256:a19448158bd5cc17848336391d8461f860421dbf75c984b4685e14b93e8b88f3", size = 54114, upload_time = "2025-12-07T09:41:37.803Z" }, ] [[package]] @@ -2163,36 +2208,36 @@ dependencies = [ { name = "typing-extensions" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c1/74/e560bdeffea72ecb26cff27f0fad548bbff5ecc51d6a155311ea7f9e4c4c/pygithub-2.8.1.tar.gz", hash = "sha256:341b7c78521cb07324ff670afd1baa2bf5c286f8d9fd302c1798ba594a5400c9", size = 2246994 } +sdist = { url = "https://files.pythonhosted.org/packages/c1/74/e560bdeffea72ecb26cff27f0fad548bbff5ecc51d6a155311ea7f9e4c4c/pygithub-2.8.1.tar.gz", hash = "sha256:341b7c78521cb07324ff670afd1baa2bf5c286f8d9fd302c1798ba594a5400c9", size = 2246994, upload_time = "2025-09-02T17:41:54.674Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/ba/7049ce39f653f6140aac4beb53a5aaf08b4407b6a3019aae394c1c5244ff/pygithub-2.8.1-py3-none-any.whl", hash = "sha256:23a0a5bca93baef082e03411bf0ce27204c32be8bfa7abc92fe4a3e132936df0", size = 432709 }, + { url = "https://files.pythonhosted.org/packages/07/ba/7049ce39f653f6140aac4beb53a5aaf08b4407b6a3019aae394c1c5244ff/pygithub-2.8.1-py3-none-any.whl", hash = "sha256:23a0a5bca93baef082e03411bf0ce27204c32be8bfa7abc92fe4a3e132936df0", size = 432709, upload_time = "2025-09-02T17:41:52.947Z" }, ] [[package]] name = "pygments" version = "2.19.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631 } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload_time = "2025-06-21T13:39:12.283Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217 }, + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload_time = "2025-06-21T13:39:07.939Z" }, ] [[package]] name = "pygtrie" version = "2.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b9/13/55deec25bf09383216fa7f1dfcdbfca40a04aa00b6d15a5cbf25af8fce5f/pygtrie-2.5.0.tar.gz", hash = "sha256:203514ad826eb403dab1d2e2ddd034e0d1534bbe4dbe0213bb0593f66beba4e2", size = 39266 } +sdist = { url = "https://files.pythonhosted.org/packages/b9/13/55deec25bf09383216fa7f1dfcdbfca40a04aa00b6d15a5cbf25af8fce5f/pygtrie-2.5.0.tar.gz", hash = "sha256:203514ad826eb403dab1d2e2ddd034e0d1534bbe4dbe0213bb0593f66beba4e2", size = 39266, upload_time = "2022-07-16T14:29:47.459Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/cd/bd196b2cf014afb1009de8b0f05ecd54011d881944e62763f3c1b1e8ef37/pygtrie-2.5.0-py3-none-any.whl", hash = "sha256:8795cda8105493d5ae159a5bef313ff13156c5d4d72feddefacaad59f8c8ce16", size = 25099 }, + { url = "https://files.pythonhosted.org/packages/ec/cd/bd196b2cf014afb1009de8b0f05ecd54011d881944e62763f3c1b1e8ef37/pygtrie-2.5.0-py3-none-any.whl", hash = "sha256:8795cda8105493d5ae159a5bef313ff13156c5d4d72feddefacaad59f8c8ce16", size = 25099, upload_time = "2022-09-23T20:30:05.12Z" }, ] [[package]] name = "pyjwt" version = "2.10.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785 } +sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785, upload_time = "2024-11-28T03:43:29.933Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997 }, + { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997, upload_time = "2024-11-28T03:43:27.893Z" }, ] [package.optional-dependencies] @@ -2208,9 +2253,9 @@ dependencies = [ { name = "markdown" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/b3/6d2b3f149bc5413b0a29761c2c5832d8ce904a1d7f621e86616d96f505cc/pymdown_extensions-10.16.1.tar.gz", hash = "sha256:aace82bcccba3efc03e25d584e6a22d27a8e17caa3f4dd9f207e49b787aa9a91", size = 853277 } +sdist = { url = "https://files.pythonhosted.org/packages/55/b3/6d2b3f149bc5413b0a29761c2c5832d8ce904a1d7f621e86616d96f505cc/pymdown_extensions-10.16.1.tar.gz", hash = "sha256:aace82bcccba3efc03e25d584e6a22d27a8e17caa3f4dd9f207e49b787aa9a91", size = 853277, upload_time = "2025-07-28T16:19:34.167Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/06/43084e6cbd4b3bc0e80f6be743b2e79fbc6eed8de9ad8c629939fa55d972/pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d", size = 266178 }, + { url = "https://files.pythonhosted.org/packages/e4/06/43084e6cbd4b3bc0e80f6be743b2e79fbc6eed8de9ad8c629939fa55d972/pymdown_extensions-10.16.1-py3-none-any.whl", hash = "sha256:d6ba157a6c03146a7fb122b2b9a121300056384eafeec9c9f9e584adfdb2a32d", size = 266178, upload_time = "2025-07-28T16:19:31.401Z" }, ] [[package]] @@ -2220,34 +2265,34 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/c6/a3124dee667a423f2c637cfd262a54d67d8ccf3e160f3c50f622a85b7723/pynacl-1.6.0.tar.gz", hash = "sha256:cb36deafe6e2bce3b286e5d1f3e1c246e0ccdb8808ddb4550bb2792f2df298f2", size = 3505641 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/70/24/1b639176401255605ba7c2b93a7b1eb1e379e0710eca62613633eb204201/pynacl-1.6.0-cp314-cp314t-macosx_10_10_universal2.whl", hash = "sha256:f46386c24a65383a9081d68e9c2de909b1834ec74ff3013271f1bca9c2d233eb", size = 384141 }, - { url = "https://files.pythonhosted.org/packages/5e/7b/874efdf57d6bf172db0df111b479a553c3d9e8bb4f1f69eb3ffff772d6e8/pynacl-1.6.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:dea103a1afcbc333bc0e992e64233d360d393d1e63d0bc88554f572365664348", size = 808132 }, - { url = "https://files.pythonhosted.org/packages/f3/61/9b53f5913f3b75ac3d53170cdb897101b2b98afc76f4d9d3c8de5aa3ac05/pynacl-1.6.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:04f20784083014e265ad58c1b2dd562c3e35864b5394a14ab54f5d150ee9e53e", size = 1407253 }, - { url = "https://files.pythonhosted.org/packages/7c/0a/b138916b22bbf03a1bdbafecec37d714e7489dd7bcaf80cd17852f8b67be/pynacl-1.6.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bbcc4452a1eb10cd5217318c822fde4be279c9de8567f78bad24c773c21254f8", size = 843719 }, - { url = "https://files.pythonhosted.org/packages/01/3b/17c368197dfb2c817ce033f94605a47d0cc27901542109e640cef263f0af/pynacl-1.6.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51fed9fe1bec9e7ff9af31cd0abba179d0e984a2960c77e8e5292c7e9b7f7b5d", size = 1445441 }, - { url = "https://files.pythonhosted.org/packages/35/3c/f79b185365ab9be80cd3cd01dacf30bf5895f9b7b001e683b369e0bb6d3d/pynacl-1.6.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:10d755cf2a455d8c0f8c767a43d68f24d163b8fe93ccfaabfa7bafd26be58d73", size = 825691 }, - { url = "https://files.pythonhosted.org/packages/f7/1f/8b37d25e95b8f2a434a19499a601d4d272b9839ab8c32f6b0fc1e40c383f/pynacl-1.6.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:536703b8f90e911294831a7fbcd0c062b837f3ccaa923d92a6254e11178aaf42", size = 1410726 }, - { url = "https://files.pythonhosted.org/packages/bd/93/5a4a4cf9913014f83d615ad6a2df9187330f764f606246b3a744c0788c03/pynacl-1.6.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:6b08eab48c9669d515a344fb0ef27e2cbde847721e34bba94a343baa0f33f1f4", size = 801035 }, - { url = "https://files.pythonhosted.org/packages/bf/60/40da6b0fe6a4d5fd88f608389eb1df06492ba2edca93fca0b3bebff9b948/pynacl-1.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5789f016e08e5606803161ba24de01b5a345d24590a80323379fc4408832d290", size = 1371854 }, - { url = "https://files.pythonhosted.org/packages/44/b2/37ac1d65008f824cba6b5bf68d18b76d97d0f62d7a032367ea69d4a187c8/pynacl-1.6.0-cp314-cp314t-win32.whl", hash = "sha256:4853c154dc16ea12f8f3ee4b7e763331876316cc3a9f06aeedf39bcdca8f9995", size = 230345 }, - { url = "https://files.pythonhosted.org/packages/f4/5a/9234b7b45af890d02ebee9aae41859b9b5f15fb4a5a56d88e3b4d1659834/pynacl-1.6.0-cp314-cp314t-win_amd64.whl", hash = "sha256:347dcddce0b4d83ed3f32fd00379c83c425abee5a9d2cd0a2c84871334eaff64", size = 243103 }, - { url = "https://files.pythonhosted.org/packages/c9/2c/c1a0f19d720ab0af3bc4241af2bdf4d813c3ecdcb96392b5e1ddf2d8f24f/pynacl-1.6.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2d6cd56ce4998cb66a6c112fda7b1fdce5266c9f05044fa72972613bef376d15", size = 187778 }, - { url = "https://files.pythonhosted.org/packages/63/37/87c72df19857c5b3b47ace6f211a26eb862ada495cc96daa372d96048fca/pynacl-1.6.0-cp38-abi3-macosx_10_10_universal2.whl", hash = "sha256:f4b3824920e206b4f52abd7de621ea7a44fd3cb5c8daceb7c3612345dfc54f2e", size = 382610 }, - { url = "https://files.pythonhosted.org/packages/0c/64/3ce958a5817fd3cc6df4ec14441c43fd9854405668d73babccf77f9597a3/pynacl-1.6.0-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:16dd347cdc8ae0b0f6187a2608c0af1c8b7ecbbe6b4a06bff8253c192f696990", size = 798744 }, - { url = "https://files.pythonhosted.org/packages/e4/8a/3f0dd297a0a33fa3739c255feebd0206bb1df0b44c52fbe2caf8e8bc4425/pynacl-1.6.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:16c60daceee88d04f8d41d0a4004a7ed8d9a5126b997efd2933e08e93a3bd850", size = 1397879 }, - { url = "https://files.pythonhosted.org/packages/41/94/028ff0434a69448f61348d50d2c147dda51aabdd4fbc93ec61343332174d/pynacl-1.6.0-cp38-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25720bad35dfac34a2bcdd61d9e08d6bfc6041bebc7751d9c9f2446cf1e77d64", size = 833907 }, - { url = "https://files.pythonhosted.org/packages/52/bc/a5cff7f8c30d5f4c26a07dfb0bcda1176ab8b2de86dda3106c00a02ad787/pynacl-1.6.0-cp38-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8bfaa0a28a1ab718bad6239979a5a57a8d1506d0caf2fba17e524dbb409441cf", size = 1436649 }, - { url = "https://files.pythonhosted.org/packages/7a/20/c397be374fd5d84295046e398de4ba5f0722dc14450f65db76a43c121471/pynacl-1.6.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ef214b90556bb46a485b7da8258e59204c244b1b5b576fb71848819b468c44a7", size = 817142 }, - { url = "https://files.pythonhosted.org/packages/12/30/5efcef3406940cda75296c6d884090b8a9aad2dcc0c304daebb5ae99fb4a/pynacl-1.6.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:49c336dd80ea54780bcff6a03ee1a476be1612423010472e60af83452aa0f442", size = 1401794 }, - { url = "https://files.pythonhosted.org/packages/be/e1/a8fe1248cc17ccb03b676d80fa90763760a6d1247da434844ea388d0816c/pynacl-1.6.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:f3482abf0f9815e7246d461fab597aa179b7524628a4bc36f86a7dc418d2608d", size = 772161 }, - { url = "https://files.pythonhosted.org/packages/a3/76/8a62702fb657d6d9104ce13449db221a345665d05e6a3fdefb5a7cafd2ad/pynacl-1.6.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:140373378e34a1f6977e573033d1dd1de88d2a5d90ec6958c9485b2fd9f3eb90", size = 1370720 }, - { url = "https://files.pythonhosted.org/packages/6d/38/9e9e9b777a1c4c8204053733e1a0269672c0bd40852908c9ad6b6eaba82c/pynacl-1.6.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6b393bc5e5a0eb86bb85b533deb2d2c815666665f840a09e0aa3362bb6088736", size = 791252 }, - { url = "https://files.pythonhosted.org/packages/63/ef/d972ce3d92ae05c9091363cf185e8646933f91c376e97b8be79ea6e96c22/pynacl-1.6.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4a25cfede801f01e54179b8ff9514bd7b5944da560b7040939732d1804d25419", size = 1362910 }, - { url = "https://files.pythonhosted.org/packages/35/2c/ee0b373a1861f66a7ca8bdb999331525615061320dd628527a50ba8e8a60/pynacl-1.6.0-cp38-abi3-win32.whl", hash = "sha256:dcdeb41c22ff3c66eef5e63049abf7639e0db4edee57ba70531fc1b6b133185d", size = 226461 }, - { url = "https://files.pythonhosted.org/packages/75/f7/41b6c0b9dd9970173b6acc026bab7b4c187e4e5beef2756d419ad65482da/pynacl-1.6.0-cp38-abi3-win_amd64.whl", hash = "sha256:cf831615cc16ba324240de79d925eacae8265b7691412ac6b24221db157f6bd1", size = 238802 }, - { url = "https://files.pythonhosted.org/packages/8e/0f/462326910c6172fa2c6ed07922b22ffc8e77432b3affffd9e18f444dbfbb/pynacl-1.6.0-cp38-abi3-win_arm64.whl", hash = "sha256:84709cea8f888e618c21ed9a0efdb1a59cc63141c403db8bf56c469b71ad56f2", size = 183846 }, +sdist = { url = "https://files.pythonhosted.org/packages/06/c6/a3124dee667a423f2c637cfd262a54d67d8ccf3e160f3c50f622a85b7723/pynacl-1.6.0.tar.gz", hash = "sha256:cb36deafe6e2bce3b286e5d1f3e1c246e0ccdb8808ddb4550bb2792f2df298f2", size = 3505641, upload_time = "2025-09-10T23:39:22.308Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/70/24/1b639176401255605ba7c2b93a7b1eb1e379e0710eca62613633eb204201/pynacl-1.6.0-cp314-cp314t-macosx_10_10_universal2.whl", hash = "sha256:f46386c24a65383a9081d68e9c2de909b1834ec74ff3013271f1bca9c2d233eb", size = 384141, upload_time = "2025-09-10T23:38:28.675Z" }, + { url = "https://files.pythonhosted.org/packages/5e/7b/874efdf57d6bf172db0df111b479a553c3d9e8bb4f1f69eb3ffff772d6e8/pynacl-1.6.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:dea103a1afcbc333bc0e992e64233d360d393d1e63d0bc88554f572365664348", size = 808132, upload_time = "2025-09-10T23:38:38.995Z" }, + { url = "https://files.pythonhosted.org/packages/f3/61/9b53f5913f3b75ac3d53170cdb897101b2b98afc76f4d9d3c8de5aa3ac05/pynacl-1.6.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:04f20784083014e265ad58c1b2dd562c3e35864b5394a14ab54f5d150ee9e53e", size = 1407253, upload_time = "2025-09-10T23:38:40.492Z" }, + { url = "https://files.pythonhosted.org/packages/7c/0a/b138916b22bbf03a1bdbafecec37d714e7489dd7bcaf80cd17852f8b67be/pynacl-1.6.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bbcc4452a1eb10cd5217318c822fde4be279c9de8567f78bad24c773c21254f8", size = 843719, upload_time = "2025-09-10T23:38:30.87Z" }, + { url = "https://files.pythonhosted.org/packages/01/3b/17c368197dfb2c817ce033f94605a47d0cc27901542109e640cef263f0af/pynacl-1.6.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51fed9fe1bec9e7ff9af31cd0abba179d0e984a2960c77e8e5292c7e9b7f7b5d", size = 1445441, upload_time = "2025-09-10T23:38:33.078Z" }, + { url = "https://files.pythonhosted.org/packages/35/3c/f79b185365ab9be80cd3cd01dacf30bf5895f9b7b001e683b369e0bb6d3d/pynacl-1.6.0-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:10d755cf2a455d8c0f8c767a43d68f24d163b8fe93ccfaabfa7bafd26be58d73", size = 825691, upload_time = "2025-09-10T23:38:34.832Z" }, + { url = "https://files.pythonhosted.org/packages/f7/1f/8b37d25e95b8f2a434a19499a601d4d272b9839ab8c32f6b0fc1e40c383f/pynacl-1.6.0-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:536703b8f90e911294831a7fbcd0c062b837f3ccaa923d92a6254e11178aaf42", size = 1410726, upload_time = "2025-09-10T23:38:36.893Z" }, + { url = "https://files.pythonhosted.org/packages/bd/93/5a4a4cf9913014f83d615ad6a2df9187330f764f606246b3a744c0788c03/pynacl-1.6.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:6b08eab48c9669d515a344fb0ef27e2cbde847721e34bba94a343baa0f33f1f4", size = 801035, upload_time = "2025-09-10T23:38:42.109Z" }, + { url = "https://files.pythonhosted.org/packages/bf/60/40da6b0fe6a4d5fd88f608389eb1df06492ba2edca93fca0b3bebff9b948/pynacl-1.6.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:5789f016e08e5606803161ba24de01b5a345d24590a80323379fc4408832d290", size = 1371854, upload_time = "2025-09-10T23:38:44.16Z" }, + { url = "https://files.pythonhosted.org/packages/44/b2/37ac1d65008f824cba6b5bf68d18b76d97d0f62d7a032367ea69d4a187c8/pynacl-1.6.0-cp314-cp314t-win32.whl", hash = "sha256:4853c154dc16ea12f8f3ee4b7e763331876316cc3a9f06aeedf39bcdca8f9995", size = 230345, upload_time = "2025-09-10T23:38:48.276Z" }, + { url = "https://files.pythonhosted.org/packages/f4/5a/9234b7b45af890d02ebee9aae41859b9b5f15fb4a5a56d88e3b4d1659834/pynacl-1.6.0-cp314-cp314t-win_amd64.whl", hash = "sha256:347dcddce0b4d83ed3f32fd00379c83c425abee5a9d2cd0a2c84871334eaff64", size = 243103, upload_time = "2025-09-10T23:38:45.503Z" }, + { url = "https://files.pythonhosted.org/packages/c9/2c/c1a0f19d720ab0af3bc4241af2bdf4d813c3ecdcb96392b5e1ddf2d8f24f/pynacl-1.6.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2d6cd56ce4998cb66a6c112fda7b1fdce5266c9f05044fa72972613bef376d15", size = 187778, upload_time = "2025-09-10T23:38:46.731Z" }, + { url = "https://files.pythonhosted.org/packages/63/37/87c72df19857c5b3b47ace6f211a26eb862ada495cc96daa372d96048fca/pynacl-1.6.0-cp38-abi3-macosx_10_10_universal2.whl", hash = "sha256:f4b3824920e206b4f52abd7de621ea7a44fd3cb5c8daceb7c3612345dfc54f2e", size = 382610, upload_time = "2025-09-10T23:38:49.459Z" }, + { url = "https://files.pythonhosted.org/packages/0c/64/3ce958a5817fd3cc6df4ec14441c43fd9854405668d73babccf77f9597a3/pynacl-1.6.0-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:16dd347cdc8ae0b0f6187a2608c0af1c8b7ecbbe6b4a06bff8253c192f696990", size = 798744, upload_time = "2025-09-10T23:38:58.531Z" }, + { url = "https://files.pythonhosted.org/packages/e4/8a/3f0dd297a0a33fa3739c255feebd0206bb1df0b44c52fbe2caf8e8bc4425/pynacl-1.6.0-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:16c60daceee88d04f8d41d0a4004a7ed8d9a5126b997efd2933e08e93a3bd850", size = 1397879, upload_time = "2025-09-10T23:39:00.44Z" }, + { url = "https://files.pythonhosted.org/packages/41/94/028ff0434a69448f61348d50d2c147dda51aabdd4fbc93ec61343332174d/pynacl-1.6.0-cp38-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:25720bad35dfac34a2bcdd61d9e08d6bfc6041bebc7751d9c9f2446cf1e77d64", size = 833907, upload_time = "2025-09-10T23:38:50.936Z" }, + { url = "https://files.pythonhosted.org/packages/52/bc/a5cff7f8c30d5f4c26a07dfb0bcda1176ab8b2de86dda3106c00a02ad787/pynacl-1.6.0-cp38-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8bfaa0a28a1ab718bad6239979a5a57a8d1506d0caf2fba17e524dbb409441cf", size = 1436649, upload_time = "2025-09-10T23:38:52.783Z" }, + { url = "https://files.pythonhosted.org/packages/7a/20/c397be374fd5d84295046e398de4ba5f0722dc14450f65db76a43c121471/pynacl-1.6.0-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:ef214b90556bb46a485b7da8258e59204c244b1b5b576fb71848819b468c44a7", size = 817142, upload_time = "2025-09-10T23:38:54.4Z" }, + { url = "https://files.pythonhosted.org/packages/12/30/5efcef3406940cda75296c6d884090b8a9aad2dcc0c304daebb5ae99fb4a/pynacl-1.6.0-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:49c336dd80ea54780bcff6a03ee1a476be1612423010472e60af83452aa0f442", size = 1401794, upload_time = "2025-09-10T23:38:56.614Z" }, + { url = "https://files.pythonhosted.org/packages/be/e1/a8fe1248cc17ccb03b676d80fa90763760a6d1247da434844ea388d0816c/pynacl-1.6.0-cp38-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:f3482abf0f9815e7246d461fab597aa179b7524628a4bc36f86a7dc418d2608d", size = 772161, upload_time = "2025-09-10T23:39:01.93Z" }, + { url = "https://files.pythonhosted.org/packages/a3/76/8a62702fb657d6d9104ce13449db221a345665d05e6a3fdefb5a7cafd2ad/pynacl-1.6.0-cp38-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:140373378e34a1f6977e573033d1dd1de88d2a5d90ec6958c9485b2fd9f3eb90", size = 1370720, upload_time = "2025-09-10T23:39:03.531Z" }, + { url = "https://files.pythonhosted.org/packages/6d/38/9e9e9b777a1c4c8204053733e1a0269672c0bd40852908c9ad6b6eaba82c/pynacl-1.6.0-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:6b393bc5e5a0eb86bb85b533deb2d2c815666665f840a09e0aa3362bb6088736", size = 791252, upload_time = "2025-09-10T23:39:05.058Z" }, + { url = "https://files.pythonhosted.org/packages/63/ef/d972ce3d92ae05c9091363cf185e8646933f91c376e97b8be79ea6e96c22/pynacl-1.6.0-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:4a25cfede801f01e54179b8ff9514bd7b5944da560b7040939732d1804d25419", size = 1362910, upload_time = "2025-09-10T23:39:06.924Z" }, + { url = "https://files.pythonhosted.org/packages/35/2c/ee0b373a1861f66a7ca8bdb999331525615061320dd628527a50ba8e8a60/pynacl-1.6.0-cp38-abi3-win32.whl", hash = "sha256:dcdeb41c22ff3c66eef5e63049abf7639e0db4edee57ba70531fc1b6b133185d", size = 226461, upload_time = "2025-09-10T23:39:11.894Z" }, + { url = "https://files.pythonhosted.org/packages/75/f7/41b6c0b9dd9970173b6acc026bab7b4c187e4e5beef2756d419ad65482da/pynacl-1.6.0-cp38-abi3-win_amd64.whl", hash = "sha256:cf831615cc16ba324240de79d925eacae8265b7691412ac6b24221db157f6bd1", size = 238802, upload_time = "2025-09-10T23:39:08.966Z" }, + { url = "https://files.pythonhosted.org/packages/8e/0f/462326910c6172fa2c6ed07922b22ffc8e77432b3affffd9e18f444dbfbb/pynacl-1.6.0-cp38-abi3-win_arm64.whl", hash = "sha256:84709cea8f888e618c21ed9a0efdb1a59cc63141c403db8bf56c469b71ad56f2", size = 183846, upload_time = "2025-09-10T23:39:10.552Z" }, ] [[package]] @@ -2257,17 +2302,17 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ply" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/91/d4/bbb4ab79bb3015e3bdd488435ef71f7806144cc6ae4146ee6c5f64ac53f2/pyomo-6.9.4.tar.gz", hash = "sha256:34ad22cd6bf9956de9c0d3842d01c1f92dee0515b25aa3e8f113b326549b1231", size = 3033231 } +sdist = { url = "https://files.pythonhosted.org/packages/91/d4/bbb4ab79bb3015e3bdd488435ef71f7806144cc6ae4146ee6c5f64ac53f2/pyomo-6.9.4.tar.gz", hash = "sha256:34ad22cd6bf9956de9c0d3842d01c1f92dee0515b25aa3e8f113b326549b1231", size = 3033231, upload_time = "2025-08-28T02:11:24.976Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/18/6b/80f40b4b72a3c6a207130ce431765f897c76133a15e7e38e66f9f40d36f3/pyomo-6.9.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cc3cd52c143991071821bbb9943d2a59512481b5d15adb7add32f92def4172ce", size = 4266926 }, - { url = "https://files.pythonhosted.org/packages/48/30/f7ef1be3deb445694b63800de6a36dff31670014d5aa67d42e1716c04970/pyomo-6.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3a5e1dc79e1a2ec1f6247f0df59ac3572781e40218093a624f9213dd3ae6913f", size = 4255513 }, - { url = "https://files.pythonhosted.org/packages/76/f4/9493daae82595d7d776ba6cd0d5d167951700670e363dec443415e753808/pyomo-6.9.4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:abea6ca55295b179c1c91184db4eece7589cfd6099869eff8e3e6aa8a06463d1", size = 4311852 }, - { url = "https://files.pythonhosted.org/packages/83/d7/e39e605ab33c2729afb043bed94ce7ee382bd5b4bc708f6c90a1d2600456/pyomo-6.9.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddd48dec34b270ca2621863a216c4f3a6fcc409db86a7dc34c31eb788a44b8c6", size = 4343130 }, - { url = "https://files.pythonhosted.org/packages/65/04/dc4d3d9369c4cb1b6e68ce18bbba066ea83284942322836e791dbf693bb2/pyomo-6.9.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1a768a178ae3f0391c66e2334da3d1618c9c85c9d879bc86de441efd143f491", size = 4267029 }, - { url = "https://files.pythonhosted.org/packages/6b/52/824e9cea51ed0a25636b66e8c122dce5fcd22a197bf4646dd6c5f138fe36/pyomo-6.9.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:09cde10e5fe8414f453d1ed3bccef1b42fc048fc2da0a9c936e40b2f877201bf", size = 4255606 }, - { url = "https://files.pythonhosted.org/packages/a2/dc/97005d683ca57e231a8f613921adaf480d3a82f40d280c6d0185855a92c6/pyomo-6.9.4-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df3e173d330666f881258deefa79f37373b941d4a5b00edc6aa5b10680720dc1", size = 4312670 }, - { url = "https://files.pythonhosted.org/packages/64/73/47525078660eced084abb9a79e1e4c74098c992316c93ab6ead2dc7f8bda/pyomo-6.9.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a13baebcdb05deadeb0ec4b04ecedffa65f1e86179418fa67e603a4f8f1bf17", size = 4344540 }, - { url = "https://files.pythonhosted.org/packages/d8/e3/56c20c3358e58206e7270a42ff666a267a6c01492213c8c47aad8676b487/pyomo-6.9.4-py3-none-any.whl", hash = "sha256:a274d74616c0b793279931f3b2175a31f9c63213f2d7b86c14d168c6c264f782", size = 3892640 }, + { url = "https://files.pythonhosted.org/packages/18/6b/80f40b4b72a3c6a207130ce431765f897c76133a15e7e38e66f9f40d36f3/pyomo-6.9.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:cc3cd52c143991071821bbb9943d2a59512481b5d15adb7add32f92def4172ce", size = 4266926, upload_time = "2025-08-28T02:09:44.833Z" }, + { url = "https://files.pythonhosted.org/packages/48/30/f7ef1be3deb445694b63800de6a36dff31670014d5aa67d42e1716c04970/pyomo-6.9.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3a5e1dc79e1a2ec1f6247f0df59ac3572781e40218093a624f9213dd3ae6913f", size = 4255513, upload_time = "2025-08-28T02:09:49.197Z" }, + { url = "https://files.pythonhosted.org/packages/76/f4/9493daae82595d7d776ba6cd0d5d167951700670e363dec443415e753808/pyomo-6.9.4-cp312-cp312-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:abea6ca55295b179c1c91184db4eece7589cfd6099869eff8e3e6aa8a06463d1", size = 4311852, upload_time = "2025-08-28T02:09:53.415Z" }, + { url = "https://files.pythonhosted.org/packages/83/d7/e39e605ab33c2729afb043bed94ce7ee382bd5b4bc708f6c90a1d2600456/pyomo-6.9.4-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ddd48dec34b270ca2621863a216c4f3a6fcc409db86a7dc34c31eb788a44b8c6", size = 4343130, upload_time = "2025-08-28T02:09:57.397Z" }, + { url = "https://files.pythonhosted.org/packages/65/04/dc4d3d9369c4cb1b6e68ce18bbba066ea83284942322836e791dbf693bb2/pyomo-6.9.4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:e1a768a178ae3f0391c66e2334da3d1618c9c85c9d879bc86de441efd143f491", size = 4267029, upload_time = "2025-08-28T02:10:02.066Z" }, + { url = "https://files.pythonhosted.org/packages/6b/52/824e9cea51ed0a25636b66e8c122dce5fcd22a197bf4646dd6c5f138fe36/pyomo-6.9.4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:09cde10e5fe8414f453d1ed3bccef1b42fc048fc2da0a9c936e40b2f877201bf", size = 4255606, upload_time = "2025-08-28T02:10:06.383Z" }, + { url = "https://files.pythonhosted.org/packages/a2/dc/97005d683ca57e231a8f613921adaf480d3a82f40d280c6d0185855a92c6/pyomo-6.9.4-cp313-cp313-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:df3e173d330666f881258deefa79f37373b941d4a5b00edc6aa5b10680720dc1", size = 4312670, upload_time = "2025-08-28T02:10:11.563Z" }, + { url = "https://files.pythonhosted.org/packages/64/73/47525078660eced084abb9a79e1e4c74098c992316c93ab6ead2dc7f8bda/pyomo-6.9.4-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8a13baebcdb05deadeb0ec4b04ecedffa65f1e86179418fa67e603a4f8f1bf17", size = 4344540, upload_time = "2025-08-28T02:10:15.731Z" }, + { url = "https://files.pythonhosted.org/packages/d8/e3/56c20c3358e58206e7270a42ff666a267a6c01492213c8c47aad8676b487/pyomo-6.9.4-py3-none-any.whl", hash = "sha256:a274d74616c0b793279931f3b2175a31f9c63213f2d7b86c14d168c6c264f782", size = 3892640, upload_time = "2025-08-28T02:11:13.845Z" }, ] [[package]] @@ -2277,9 +2322,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "unidecode" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d6/7c/7c45a9e9bf6ddb57b67e66cf4e8076a7baf3a790a3411daac1a7a2df0c5b/pyphonetics-0.5.3.tar.gz", hash = "sha256:2d3c2e359fde91a3c57914f0b5468bba7a5daf38e7927fd999992ea68990fbe4", size = 10314 } +sdist = { url = "https://files.pythonhosted.org/packages/d6/7c/7c45a9e9bf6ddb57b67e66cf4e8076a7baf3a790a3411daac1a7a2df0c5b/pyphonetics-0.5.3.tar.gz", hash = "sha256:2d3c2e359fde91a3c57914f0b5468bba7a5daf38e7927fd999992ea68990fbe4", size = 10314, upload_time = "2020-02-25T12:08:31.049Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/dd/a7d0a860efd3d4335d538b4361b8e9af8311f2aba2e8c7e4c7a47d623b6e/pyphonetics-0.5.3-py2.py3-none-any.whl", hash = "sha256:e6b29671d0d624dda1cac59c0c5a8a7216d8db504bae4941bfc482e04a0621d1", size = 10729 }, + { url = "https://files.pythonhosted.org/packages/bd/dd/a7d0a860efd3d4335d538b4361b8e9af8311f2aba2e8c7e4c7a47d623b6e/pyphonetics-0.5.3-py2.py3-none-any.whl", hash = "sha256:e6b29671d0d624dda1cac59c0c5a8a7216d8db504bae4941bfc482e04a0621d1", size = 10729, upload_time = "2020-02-25T12:08:25.368Z" }, ] [[package]] @@ -2293,9 +2338,9 @@ dependencies = [ { name = "pluggy" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618 } +sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload_time = "2025-09-04T14:34:22.711Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750 }, + { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload_time = "2025-09-04T14:34:20.226Z" }, ] [[package]] @@ -2307,9 +2352,9 @@ dependencies = [ { name = "pluggy" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5e/f7/c933acc76f5208b3b00089573cf6a2bc26dc80a8aece8f52bb7d6b1855ca/pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1", size = 54328 } +sdist = { url = "https://files.pythonhosted.org/packages/5e/f7/c933acc76f5208b3b00089573cf6a2bc26dc80a8aece8f52bb7d6b1855ca/pytest_cov-7.0.0.tar.gz", hash = "sha256:33c97eda2e049a0c5298e91f519302a1334c26ac65c1a483d6206fd458361af1", size = 54328, upload_time = "2025-09-09T10:57:02.113Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/49/1377b49de7d0c1ce41292161ea0f721913fa8722c19fb9c1e3aa0367eecb/pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861", size = 22424 }, + { url = "https://files.pythonhosted.org/packages/ee/49/1377b49de7d0c1ce41292161ea0f721913fa8722c19fb9c1e3aa0367eecb/pytest_cov-7.0.0-py3-none-any.whl", hash = "sha256:3b8e9558b16cc1479da72058bdecf8073661c7f57f7d3c5f22a1c23507f2d861", size = 22424, upload_time = "2025-09-09T10:57:00.695Z" }, ] [[package]] @@ -2320,76 +2365,76 @@ dependencies = [ { name = "execnet" }, { name = "pytest" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/78/b4/439b179d1ff526791eb921115fca8e44e596a13efeda518b9d845a619450/pytest_xdist-3.8.0.tar.gz", hash = "sha256:7e578125ec9bc6050861aa93f2d59f1d8d085595d6551c2c90b6f4fad8d3a9f1", size = 88069 } +sdist = { url = "https://files.pythonhosted.org/packages/78/b4/439b179d1ff526791eb921115fca8e44e596a13efeda518b9d845a619450/pytest_xdist-3.8.0.tar.gz", hash = "sha256:7e578125ec9bc6050861aa93f2d59f1d8d085595d6551c2c90b6f4fad8d3a9f1", size = 88069, upload_time = "2025-07-01T13:30:59.346Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ca/31/d4e37e9e550c2b92a9cbc2e4d0b7420a27224968580b5a447f420847c975/pytest_xdist-3.8.0-py3-none-any.whl", hash = "sha256:202ca578cfeb7370784a8c33d6d05bc6e13b4f25b5053c30a152269fd10f0b88", size = 46396 }, + { url = "https://files.pythonhosted.org/packages/ca/31/d4e37e9e550c2b92a9cbc2e4d0b7420a27224968580b5a447f420847c975/pytest_xdist-3.8.0-py3-none-any.whl", hash = "sha256:202ca578cfeb7370784a8c33d6d05bc6e13b4f25b5053c30a152269fd10f0b88", size = 46396, upload_time = "2025-07-01T13:30:56.632Z" }, ] [[package]] name = "python-calamine" version = "0.5.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/ca/295b37a97275d53f072c7307c9d0c4bfec565d3d74157e7fe336ea18de0a/python_calamine-0.5.3.tar.gz", hash = "sha256:b4529c955fa64444184630d5bc8c82c472d1cf6bfe631f0a7bfc5e4802d4e996", size = 130874 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/05/24/f6e3369be221baa6a50476b8a02f5100980ae487a630d80d4983b4c73879/python_calamine-0.5.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b9a78e471bc02d3f76c294bf996562a9d0fbf2ad0a49d628330ba247865190f1", size = 844280 }, - { url = "https://files.pythonhosted.org/packages/e7/32/f9b689fe40616376457d1a6fd5ab84834066db31fa5ffd10a5b02f996a44/python_calamine-0.5.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bcbd277a4d0a0108aa2f5126a89ca3f2bb18d0bec7ba7d614da02a4556d18ef2", size = 814054 }, - { url = "https://files.pythonhosted.org/packages/f7/26/a07bb6993ae0a524251060397edc710af413dbb175d56f1e1bbc7a2c39c9/python_calamine-0.5.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04e6b68b26346f559a086bb84c960d4e9ddc79be8c3499752c1ba96051fea98f", size = 889447 }, - { url = "https://files.pythonhosted.org/packages/d8/79/5902d00658e2dd4efe3a4062b710a7eaa6082001c199717468fbcd8cef69/python_calamine-0.5.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e60ebeafebf66889753bfad0055edaa38068663961bb9a18e9f89aef2c9cec50", size = 883540 }, - { url = "https://files.pythonhosted.org/packages/d0/85/6299c909fcbba0663b527b82c87d204372e6f469b4ed5602f7bc1f7f1103/python_calamine-0.5.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2d9da11edb40e9d2fb214fcf575be8004b44b1b407930eceb2458f1a84be634f", size = 1034891 }, - { url = "https://files.pythonhosted.org/packages/65/2c/d0cfd9161b3404528bfba9fe000093be19f2c83ede42c255da4ebfd4da17/python_calamine-0.5.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:44d22bc52fe26b72a6dc07ab8a167d5d97aeb28282957f52b930e92106a35e3c", size = 935055 }, - { url = "https://files.pythonhosted.org/packages/b8/69/420c382535d1aca9af6bc929c78ad6b9f8416312aa4955b7977f5f864082/python_calamine-0.5.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b9ace667e04ea6631a0ada0e43dbc796c56e0d021f04bd64cdacb44de4504da", size = 904143 }, - { url = "https://files.pythonhosted.org/packages/d8/2b/19cc87654f9c85fbb6265a7ebe92cf0f649c308f0cf8f262b5c3de754d19/python_calamine-0.5.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7ec0da29de7366258de2eb765a90b9e9fbe9f9865772f3609dacff302b894393", size = 948890 }, - { url = "https://files.pythonhosted.org/packages/18/e8/3547cb72d3a0f67c173ca07d9137046f2a6c87fdc31316b10e2d7d851f2a/python_calamine-0.5.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bba5adf123200503e6c07c667a8ce82c3b62ba02f9b3e99205be24fc73abc49", size = 1067802 }, - { url = "https://files.pythonhosted.org/packages/cb/69/31ab3e8010cbed814b5fcdb2ace43e5b76d6464f8abb1dfab9191416ca3d/python_calamine-0.5.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f4c49bc58f3cfd1e9595a05cab7e71aa94f6cff5bf3916de2b87cdaa9b4ce9a3", size = 1074607 }, - { url = "https://files.pythonhosted.org/packages/c4/40/112d113d974bee5fff564e355b01df5bd524dbd5820c913c9dae574fe80a/python_calamine-0.5.3-cp312-cp312-win32.whl", hash = "sha256:42315463e139f5e44f4dedb9444fa0971c51e82573e872428050914f0dec4194", size = 669578 }, - { url = "https://files.pythonhosted.org/packages/3e/87/0af1cf4ad01a2df273cfd3abb7efaba4fba50395b98f5e871cee016d4f09/python_calamine-0.5.3-cp312-cp312-win_amd64.whl", hash = "sha256:8a24bd4c72bd984311f5ebf2e17a8aa3ce4e5ae87eda517c61c3507db8c045de", size = 713021 }, - { url = "https://files.pythonhosted.org/packages/5d/4e/6ed2ed3bb4c4c479e85d3444742f101f7b3099db1819e422bf861cf9923b/python_calamine-0.5.3-cp312-cp312-win_arm64.whl", hash = "sha256:e4a713e56d3cca752d1a7d6a00dca81b224e2e1a0567d370bc0db537e042d6b0", size = 679615 }, - { url = "https://files.pythonhosted.org/packages/33/e7/14f2bec7b4bead0e71e78fa2549e22192c498a3204d931bd0e6522ec955d/python_calamine-0.5.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:90389cc459500644bbc1a1170b5e50a95160f34cedc8de7fe9a4bd1c08764039", size = 843906 }, - { url = "https://files.pythonhosted.org/packages/c2/6c/8c6e7a8c9b421e99ad1a637c3b96d94fef25abad6bf790a7ce35bfc5a48d/python_calamine-0.5.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:221b64c0e126a1263a14d575c61a60177cad852829dca61dfb4f5a8fb9603251", size = 813859 }, - { url = "https://files.pythonhosted.org/packages/c4/ee/f6745016a431f10620b4e803f306d95c57e828dea064e32fb944c0260559/python_calamine-0.5.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49f3aa50d532c6639be851a644875d5c9cd63892cf545ee614a5c0593dc50c3b", size = 889212 }, - { url = "https://files.pythonhosted.org/packages/b9/72/8de0af1823d587b2683eb25c6feef14c7ea917cfb975d094ad09f46245d0/python_calamine-0.5.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7d8bf3b3542c771795cfcfa8a77d1373273311735517cca599aa7f89c34f38ae", size = 883584 }, - { url = "https://files.pythonhosted.org/packages/5a/90/47b91cf573b6bd4e6dbaeef4f993caf26dc0d2b8117261bc965bd70b38ce/python_calamine-0.5.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d8e452fc1335ab1f7738c3d4d5144f11719b9c5585f3cb5102d47293355067a", size = 1034378 }, - { url = "https://files.pythonhosted.org/packages/48/f7/c75e5f0b0918f0f60b45fad4c313d159633615aa1c96a5170e3fe940862d/python_calamine-0.5.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4fc75ac97be47539465191a00de305c0e150465da8632c14fc1107a0b304f97", size = 934310 }, - { url = "https://files.pythonhosted.org/packages/cd/04/8b5806bdbfabdb51fd2816deac6870d031560f0bbd90d9729ac86b903579/python_calamine-0.5.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1258368551e0b235d5b46c105137294cbb5ca683b2c13f5851f3ebec7f2d42b", size = 903602 }, - { url = "https://files.pythonhosted.org/packages/75/4e/ec27837d5023b8db775db7798b3340eeb6bcb7f61ad64e892d4e1b14853e/python_calamine-0.5.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3a7c51270e5ea518cb02cb531d84a2eb2de68da3cf48b26adae622f031dc5284", size = 948410 }, - { url = "https://files.pythonhosted.org/packages/3d/ba/8b5193637bfa0f363284974ae998f96fa1c8561a0a4d90378b0f202ac317/python_calamine-0.5.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:e1d0df3d69b32da05e3e7648bb5802559d44979be721983f0d669b4128f920fa", size = 1067274 }, - { url = "https://files.pythonhosted.org/packages/da/1c/506791e4c7078f2fed1ee2d69703d62c0acfd5b671db157bb755f47cff42/python_calamine-0.5.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:6d674ae194744b6080f20a0b5a253a9976d632ee91dc00e13e539e968167cd35", size = 1073351 }, - { url = "https://files.pythonhosted.org/packages/dc/83/e30e21484b1ed55668f67a63578d8a6ba70597a4d7ee8da23d759d3e1b3f/python_calamine-0.5.3-cp313-cp313-win32.whl", hash = "sha256:7a42ff0dae44457a4a3e65ea49357ffdf92e44f8b022ef1fb32c6498097d6d57", size = 669416 }, - { url = "https://files.pythonhosted.org/packages/1d/8f/29c617e9548ed2704657ebaa7d79067cad06cbbf7dd432a6cacd4cc19d16/python_calamine-0.5.3-cp313-cp313-win_amd64.whl", hash = "sha256:054aee805c2cd5ab9848c2b8459822f2581cf22af45ff60251c9f45585cc06e0", size = 712760 }, - { url = "https://files.pythonhosted.org/packages/f8/35/d8117f99037100a28d17d9fbde121511c19d54ff4e5968d6aed693caeb87/python_calamine-0.5.3-cp313-cp313-win_arm64.whl", hash = "sha256:0e870f57651e2f76e7c1f009492aa342a7b1819f8b1131bf501240872777f944", size = 679372 }, - { url = "https://files.pythonhosted.org/packages/d9/0a/61949009a354af9ff5dc19e6816ae68a56281c0765520c9db4ff0ed20054/python_calamine-0.5.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:e98c819cd43a7f0048f6d97c9d4ec23d72889cd722de1d6b68e0de24b1f8f037", size = 843418 }, - { url = "https://files.pythonhosted.org/packages/52/7b/4cb7fa988d17c98a0be6e9f74561d8a2381f28a2b88adb89f16abe345d2f/python_calamine-0.5.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cf90ce46420545f922cde95004ea8d5efaf3864b5a380a5d1defc7abd219421a", size = 813611 }, - { url = "https://files.pythonhosted.org/packages/01/34/4c2a6827da90f366be3fb9c7788f672f5e7d60808f9dbd01da5acc6f11ca/python_calamine-0.5.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e89caa6a1a55215be742cd44f6d94611fb6ab222a30325e772abc40566693e5", size = 888097 }, - { url = "https://files.pythonhosted.org/packages/17/bc/ecf5f6ac95195dfd3e9d63ab8c60b78d6466009751dfb1cdacf71d5f5e19/python_calamine-0.5.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b13177e42dac8de57870995699b237ce5a7886d9bd7fb745a36f867e5d3d3e62", size = 880861 }, - { url = "https://files.pythonhosted.org/packages/6e/55/8b60f99221a408f08db280b553aa4321c4cd9365e5c3101638249002d5a4/python_calamine-0.5.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:948e28b5f3246177440c70550661e0a27b414cb15535111fca7dbac2a63721b1", size = 1033023 }, - { url = "https://files.pythonhosted.org/packages/05/c5/8c378d3c2c56d12606e20b59eee3538d3b1177fe00b103bb98ef15176610/python_calamine-0.5.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e37fef2b67bcd66b5dfc65b0779da9522c82f1ef9f97fc6034848072ff60b3f7", size = 933097 }, - { url = "https://files.pythonhosted.org/packages/26/04/cf14e91ac5c2d6d9795e1c39f3f53e0f173fcbaed4b00198e22a58265fdd/python_calamine-0.5.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddcef4e0e9d0479e027c90d9e1537bcf05de9bdd137cd7dfdbfc0034b1850973", size = 901917 }, - { url = "https://files.pythonhosted.org/packages/6e/2f/5b2065b9360bda792504fe3ac1cef6d9da51ceba6230ee7634886b44cce9/python_calamine-0.5.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6732b47f923102357bde348021a2892a41c2fb173958268c0a1ff8d5abb6b7e8", size = 943328 }, - { url = "https://files.pythonhosted.org/packages/ce/5a/45e4bd8473264b918d83297d15f160471029390cd06ed0056fc57e8f29eb/python_calamine-0.5.3-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:543db1b886cf994aaf7da0752022b37c42c05acb7605b56d09047023c8387610", size = 1065993 }, - { url = "https://files.pythonhosted.org/packages/35/6b/2afd47608495f23408bdf2f1ff57a144700aed8b5bbe50285ac4864edf53/python_calamine-0.5.3-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:b79135dd96129253dc0e547778c700e1e3782e7671e7047c8b106b5501e33706", size = 1071801 }, - { url = "https://files.pythonhosted.org/packages/f7/db/b06a15f25e63290c2efc5433fa8b395bfe870aacbf4ea6c930764d53eca6/python_calamine-0.5.3-cp313-cp313t-win32.whl", hash = "sha256:d84dc3b78adf038a2b452fc784523dcc90477f1631d33aabc0872812db5beb26", size = 669485 }, - { url = "https://files.pythonhosted.org/packages/2d/40/e51adf1dae2002f189c83ae527aad017372d1a1b97a22172dc2e51ce502d/python_calamine-0.5.3-cp313-cp313t-win_amd64.whl", hash = "sha256:8a3fd541576fdf2708e40064ebaaf561a0a2afcab01de91c83ec212193bede34", size = 712636 }, - { url = "https://files.pythonhosted.org/packages/56/fa/db4dc8d27a5daa14a153aebc0cb98bad6fd700befd9e67440a8017f0e108/python_calamine-0.5.3-cp313-cp313t-win_arm64.whl", hash = "sha256:b28a9c9318a5e7dabcead1803bfd48be5bf7c9f339d6e505a5989650a6102487", size = 678307 }, - { url = "https://files.pythonhosted.org/packages/ee/7f/a098680c9d6ad36fe850f2c2c28627ee3bc95aaa052f375806f69c075475/python_calamine-0.5.3-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:b5cdcd85cc08a1805d267fc66aa100940712de6b4524951ab91ba47fa60d481f", size = 843921 }, - { url = "https://files.pythonhosted.org/packages/09/ce/3de5d714779fac6e3333e7ea98ce4eae3b2479eb8a3d2f7d9e4487e16681/python_calamine-0.5.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:828cd5d49fe9eb9c1fc9219fe484b07f2ba9a1e5e3b8475d7f1415e0fa316df8", size = 814173 }, - { url = "https://files.pythonhosted.org/packages/cb/14/ef98575838091b6b24274160d53607e78df94f0176af360bcb063512e643/python_calamine-0.5.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d3f4d0532ab4de422fc4b707cdbb93d57ca7ccf9be8bc4742fb9376dc68f861", size = 888958 }, - { url = "https://files.pythonhosted.org/packages/c0/b1/c999dd1f89f415ff06f88f37bce643ece3c4d51ae051e0a143ff16f44c1c/python_calamine-0.5.3-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:89a9ba0a16e4335b676232ddbbea0fd09bfb94757ca6e4cf90ce1348aa843f3f", size = 880988 }, - { url = "https://files.pythonhosted.org/packages/74/16/4984532280e4b2c81aa26ae57b37fc3eaeda414e46e2d9c6a9cfdb27cd56/python_calamine-0.5.3-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0928d0eb1cdea229464de280d0f7cd99314ba28cffd2c4d6c9ce6902f9d6d448", size = 1035685 }, - { url = "https://files.pythonhosted.org/packages/cd/dc/91776b34ab09f36ea41449951148bef731f9b355a2d2b25d398eec774926/python_calamine-0.5.3-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c7f9519dd3b8814ef6e801b9797f918fe7a59937fac4784cb280c8350fb1a2cf", size = 933865 }, - { url = "https://files.pythonhosted.org/packages/01/97/12deaff5e608207398a9f0eaa06447ed69e8c4873ee953be553f9440881a/python_calamine-0.5.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:954cd764c6b24735c749a447523b4ccf4b9d2b7c231ddd304ed42c15afca9516", size = 902310 }, - { url = "https://files.pythonhosted.org/packages/45/da/45063eee203f6c9d9436d29dfc0f01db85c9264c86d1e438c3b452d7e97f/python_calamine-0.5.3-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3f0e9c59fece6bbf1a916947fba33e9b635327eb165784d05efed40027164d1", size = 948143 }, - { url = "https://files.pythonhosted.org/packages/33/07/0b661166dd58367bd5d6cc2bf8441f61004dd5ef2555ab224da97b1ac5d3/python_calamine-0.5.3-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:63bb47cc080d8eb9bc654f0961ada385b58a57d4628b0a33d1003c8f62e6ae3d", size = 1067181 }, - { url = "https://files.pythonhosted.org/packages/5d/80/58b107dc2c2e6bad581f58f54b3ccb07705094ff23734c8dd30bd8aef4e8/python_calamine-0.5.3-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:adb62aab9b9298b2fc378b2aec6dd5802f7ee199c3431abae29368ef046f8005", size = 1072683 }, - { url = "https://files.pythonhosted.org/packages/4c/b4/667e40dbe7d4f19a2e69f9cd186e069cd3af0411a177aa2a90231e3e0b06/python_calamine-0.5.3-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:1de68d2586df7a7a05a7779031dabd4c3d95d4738314ba82e943c8d3f36b5a67", size = 843526 }, - { url = "https://files.pythonhosted.org/packages/3e/f7/fb86da5920198a616583f07d1a395cb1241eafb930d5c33f597ae6664711/python_calamine-0.5.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c70033bbd59f05491743befec5e2a90784f4c8220e7379ce03e956bd1f475be", size = 811074 }, - { url = "https://files.pythonhosted.org/packages/76/2e/5a5a618b351b75155fbb40ad88e166f17ccf202401dd4b830db05b2565a6/python_calamine-0.5.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f396a0e57b1a5462668fc247377714b5b4c061718c1863c00ddc64e770b0f1e", size = 887735 }, - { url = "https://files.pythonhosted.org/packages/97/cf/3cfaa550eb1c9c5501728886c5e787c3ddeb34d8bf3e7e9fcaf9fc6fbd86/python_calamine-0.5.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ce737cb19d3077cabe0acaecd6b55d5df75021a520c20b47e0c75b65b4bfa919", size = 882356 }, - { url = "https://files.pythonhosted.org/packages/88/b8/97f56e337149d0ce53399be9bd583f735dc1ea9abb2745ac902a09e8c401/python_calamine-0.5.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e54b30802fe089cc0c67c67407203412ec7144e84e0960e69c529c7170c37dae", size = 1033195 }, - { url = "https://files.pythonhosted.org/packages/94/45/59a21a18c8e073d2f930a4a9c0c038207b82c5c996b67146fb76f3da2748/python_calamine-0.5.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5efc94c2e4119dc0da1e84d036f7e840fb0dd0850f4c10d3d166d725af0751af", size = 931846 }, - { url = "https://files.pythonhosted.org/packages/36/47/715e0c0bc37ccce035ef4be1aa8eafa1e5abb6687af725cb47d81a18def7/python_calamine-0.5.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74e33191a01d52f66dd6b029e99b6eda0245771c4f116c87ff0d5edf922dbbca", size = 902871 }, - { url = "https://files.pythonhosted.org/packages/ca/07/ac0cf8623765106794e297235d6dde3a728f18e61a536792189fca06f2ba/python_calamine-0.5.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:85ceec02cb367cf87a72ba559db3279f3b4774edba9330eb77670587d4de95f4", size = 944438 }, - { url = "https://files.pythonhosted.org/packages/88/98/c48c0b8be7fbae5f68b7c55a1ed4068d2c3dab64093e39733d43c23a7459/python_calamine-0.5.3-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:882400368f976ea489e47af04fde936b603c3efcf9ade1cd73e623c88fc4aa5c", size = 1066276 }, - { url = "https://files.pythonhosted.org/packages/73/3a/bbf99531fec43bca2ab28948ab94d851db96c0364c76139dd746cab2f4f9/python_calamine-0.5.3-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:ce2fe421d5564e5341f7a06b9c52b84603b48aa670426d44fffce705609a859b", size = 1073059 }, +sdist = { url = "https://files.pythonhosted.org/packages/f3/ca/295b37a97275d53f072c7307c9d0c4bfec565d3d74157e7fe336ea18de0a/python_calamine-0.5.3.tar.gz", hash = "sha256:b4529c955fa64444184630d5bc8c82c472d1cf6bfe631f0a7bfc5e4802d4e996", size = 130874, upload_time = "2025-09-08T05:41:27.18Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/24/f6e3369be221baa6a50476b8a02f5100980ae487a630d80d4983b4c73879/python_calamine-0.5.3-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b9a78e471bc02d3f76c294bf996562a9d0fbf2ad0a49d628330ba247865190f1", size = 844280, upload_time = "2025-09-08T05:39:19.991Z" }, + { url = "https://files.pythonhosted.org/packages/e7/32/f9b689fe40616376457d1a6fd5ab84834066db31fa5ffd10a5b02f996a44/python_calamine-0.5.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:bcbd277a4d0a0108aa2f5126a89ca3f2bb18d0bec7ba7d614da02a4556d18ef2", size = 814054, upload_time = "2025-09-08T05:39:21.888Z" }, + { url = "https://files.pythonhosted.org/packages/f7/26/a07bb6993ae0a524251060397edc710af413dbb175d56f1e1bbc7a2c39c9/python_calamine-0.5.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04e6b68b26346f559a086bb84c960d4e9ddc79be8c3499752c1ba96051fea98f", size = 889447, upload_time = "2025-09-08T05:39:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/d8/79/5902d00658e2dd4efe3a4062b710a7eaa6082001c199717468fbcd8cef69/python_calamine-0.5.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e60ebeafebf66889753bfad0055edaa38068663961bb9a18e9f89aef2c9cec50", size = 883540, upload_time = "2025-09-08T05:39:25.15Z" }, + { url = "https://files.pythonhosted.org/packages/d0/85/6299c909fcbba0663b527b82c87d204372e6f469b4ed5602f7bc1f7f1103/python_calamine-0.5.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2d9da11edb40e9d2fb214fcf575be8004b44b1b407930eceb2458f1a84be634f", size = 1034891, upload_time = "2025-09-08T05:39:26.666Z" }, + { url = "https://files.pythonhosted.org/packages/65/2c/d0cfd9161b3404528bfba9fe000093be19f2c83ede42c255da4ebfd4da17/python_calamine-0.5.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:44d22bc52fe26b72a6dc07ab8a167d5d97aeb28282957f52b930e92106a35e3c", size = 935055, upload_time = "2025-09-08T05:39:28.727Z" }, + { url = "https://files.pythonhosted.org/packages/b8/69/420c382535d1aca9af6bc929c78ad6b9f8416312aa4955b7977f5f864082/python_calamine-0.5.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b9ace667e04ea6631a0ada0e43dbc796c56e0d021f04bd64cdacb44de4504da", size = 904143, upload_time = "2025-09-08T05:39:30.23Z" }, + { url = "https://files.pythonhosted.org/packages/d8/2b/19cc87654f9c85fbb6265a7ebe92cf0f649c308f0cf8f262b5c3de754d19/python_calamine-0.5.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:7ec0da29de7366258de2eb765a90b9e9fbe9f9865772f3609dacff302b894393", size = 948890, upload_time = "2025-09-08T05:39:31.779Z" }, + { url = "https://files.pythonhosted.org/packages/18/e8/3547cb72d3a0f67c173ca07d9137046f2a6c87fdc31316b10e2d7d851f2a/python_calamine-0.5.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4bba5adf123200503e6c07c667a8ce82c3b62ba02f9b3e99205be24fc73abc49", size = 1067802, upload_time = "2025-09-08T05:39:33.264Z" }, + { url = "https://files.pythonhosted.org/packages/cb/69/31ab3e8010cbed814b5fcdb2ace43e5b76d6464f8abb1dfab9191416ca3d/python_calamine-0.5.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f4c49bc58f3cfd1e9595a05cab7e71aa94f6cff5bf3916de2b87cdaa9b4ce9a3", size = 1074607, upload_time = "2025-09-08T05:39:34.803Z" }, + { url = "https://files.pythonhosted.org/packages/c4/40/112d113d974bee5fff564e355b01df5bd524dbd5820c913c9dae574fe80a/python_calamine-0.5.3-cp312-cp312-win32.whl", hash = "sha256:42315463e139f5e44f4dedb9444fa0971c51e82573e872428050914f0dec4194", size = 669578, upload_time = "2025-09-08T05:39:36.305Z" }, + { url = "https://files.pythonhosted.org/packages/3e/87/0af1cf4ad01a2df273cfd3abb7efaba4fba50395b98f5e871cee016d4f09/python_calamine-0.5.3-cp312-cp312-win_amd64.whl", hash = "sha256:8a24bd4c72bd984311f5ebf2e17a8aa3ce4e5ae87eda517c61c3507db8c045de", size = 713021, upload_time = "2025-09-08T05:39:37.942Z" }, + { url = "https://files.pythonhosted.org/packages/5d/4e/6ed2ed3bb4c4c479e85d3444742f101f7b3099db1819e422bf861cf9923b/python_calamine-0.5.3-cp312-cp312-win_arm64.whl", hash = "sha256:e4a713e56d3cca752d1a7d6a00dca81b224e2e1a0567d370bc0db537e042d6b0", size = 679615, upload_time = "2025-09-08T05:39:39.487Z" }, + { url = "https://files.pythonhosted.org/packages/33/e7/14f2bec7b4bead0e71e78fa2549e22192c498a3204d931bd0e6522ec955d/python_calamine-0.5.3-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:90389cc459500644bbc1a1170b5e50a95160f34cedc8de7fe9a4bd1c08764039", size = 843906, upload_time = "2025-09-08T05:39:40.972Z" }, + { url = "https://files.pythonhosted.org/packages/c2/6c/8c6e7a8c9b421e99ad1a637c3b96d94fef25abad6bf790a7ce35bfc5a48d/python_calamine-0.5.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:221b64c0e126a1263a14d575c61a60177cad852829dca61dfb4f5a8fb9603251", size = 813859, upload_time = "2025-09-08T05:39:42.853Z" }, + { url = "https://files.pythonhosted.org/packages/c4/ee/f6745016a431f10620b4e803f306d95c57e828dea064e32fb944c0260559/python_calamine-0.5.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:49f3aa50d532c6639be851a644875d5c9cd63892cf545ee614a5c0593dc50c3b", size = 889212, upload_time = "2025-09-08T05:39:44.356Z" }, + { url = "https://files.pythonhosted.org/packages/b9/72/8de0af1823d587b2683eb25c6feef14c7ea917cfb975d094ad09f46245d0/python_calamine-0.5.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7d8bf3b3542c771795cfcfa8a77d1373273311735517cca599aa7f89c34f38ae", size = 883584, upload_time = "2025-09-08T05:39:45.97Z" }, + { url = "https://files.pythonhosted.org/packages/5a/90/47b91cf573b6bd4e6dbaeef4f993caf26dc0d2b8117261bc965bd70b38ce/python_calamine-0.5.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d8e452fc1335ab1f7738c3d4d5144f11719b9c5585f3cb5102d47293355067a", size = 1034378, upload_time = "2025-09-08T05:39:47.57Z" }, + { url = "https://files.pythonhosted.org/packages/48/f7/c75e5f0b0918f0f60b45fad4c313d159633615aa1c96a5170e3fe940862d/python_calamine-0.5.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f4fc75ac97be47539465191a00de305c0e150465da8632c14fc1107a0b304f97", size = 934310, upload_time = "2025-09-08T05:39:49.059Z" }, + { url = "https://files.pythonhosted.org/packages/cd/04/8b5806bdbfabdb51fd2816deac6870d031560f0bbd90d9729ac86b903579/python_calamine-0.5.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1258368551e0b235d5b46c105137294cbb5ca683b2c13f5851f3ebec7f2d42b", size = 903602, upload_time = "2025-09-08T05:39:50.91Z" }, + { url = "https://files.pythonhosted.org/packages/75/4e/ec27837d5023b8db775db7798b3340eeb6bcb7f61ad64e892d4e1b14853e/python_calamine-0.5.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3a7c51270e5ea518cb02cb531d84a2eb2de68da3cf48b26adae622f031dc5284", size = 948410, upload_time = "2025-09-08T05:39:53.286Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ba/8b5193637bfa0f363284974ae998f96fa1c8561a0a4d90378b0f202ac317/python_calamine-0.5.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:e1d0df3d69b32da05e3e7648bb5802559d44979be721983f0d669b4128f920fa", size = 1067274, upload_time = "2025-09-08T05:39:55.469Z" }, + { url = "https://files.pythonhosted.org/packages/da/1c/506791e4c7078f2fed1ee2d69703d62c0acfd5b671db157bb755f47cff42/python_calamine-0.5.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:6d674ae194744b6080f20a0b5a253a9976d632ee91dc00e13e539e968167cd35", size = 1073351, upload_time = "2025-09-08T05:39:57.685Z" }, + { url = "https://files.pythonhosted.org/packages/dc/83/e30e21484b1ed55668f67a63578d8a6ba70597a4d7ee8da23d759d3e1b3f/python_calamine-0.5.3-cp313-cp313-win32.whl", hash = "sha256:7a42ff0dae44457a4a3e65ea49357ffdf92e44f8b022ef1fb32c6498097d6d57", size = 669416, upload_time = "2025-09-08T05:39:59.901Z" }, + { url = "https://files.pythonhosted.org/packages/1d/8f/29c617e9548ed2704657ebaa7d79067cad06cbbf7dd432a6cacd4cc19d16/python_calamine-0.5.3-cp313-cp313-win_amd64.whl", hash = "sha256:054aee805c2cd5ab9848c2b8459822f2581cf22af45ff60251c9f45585cc06e0", size = 712760, upload_time = "2025-09-08T05:40:01.799Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/d8117f99037100a28d17d9fbde121511c19d54ff4e5968d6aed693caeb87/python_calamine-0.5.3-cp313-cp313-win_arm64.whl", hash = "sha256:0e870f57651e2f76e7c1f009492aa342a7b1819f8b1131bf501240872777f944", size = 679372, upload_time = "2025-09-08T05:40:03.676Z" }, + { url = "https://files.pythonhosted.org/packages/d9/0a/61949009a354af9ff5dc19e6816ae68a56281c0765520c9db4ff0ed20054/python_calamine-0.5.3-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:e98c819cd43a7f0048f6d97c9d4ec23d72889cd722de1d6b68e0de24b1f8f037", size = 843418, upload_time = "2025-09-08T05:40:05.601Z" }, + { url = "https://files.pythonhosted.org/packages/52/7b/4cb7fa988d17c98a0be6e9f74561d8a2381f28a2b88adb89f16abe345d2f/python_calamine-0.5.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:cf90ce46420545f922cde95004ea8d5efaf3864b5a380a5d1defc7abd219421a", size = 813611, upload_time = "2025-09-08T05:40:07.47Z" }, + { url = "https://files.pythonhosted.org/packages/01/34/4c2a6827da90f366be3fb9c7788f672f5e7d60808f9dbd01da5acc6f11ca/python_calamine-0.5.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e89caa6a1a55215be742cd44f6d94611fb6ab222a30325e772abc40566693e5", size = 888097, upload_time = "2025-09-08T05:40:09.256Z" }, + { url = "https://files.pythonhosted.org/packages/17/bc/ecf5f6ac95195dfd3e9d63ab8c60b78d6466009751dfb1cdacf71d5f5e19/python_calamine-0.5.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b13177e42dac8de57870995699b237ce5a7886d9bd7fb745a36f867e5d3d3e62", size = 880861, upload_time = "2025-09-08T05:40:11.637Z" }, + { url = "https://files.pythonhosted.org/packages/6e/55/8b60f99221a408f08db280b553aa4321c4cd9365e5c3101638249002d5a4/python_calamine-0.5.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:948e28b5f3246177440c70550661e0a27b414cb15535111fca7dbac2a63721b1", size = 1033023, upload_time = "2025-09-08T05:40:13.864Z" }, + { url = "https://files.pythonhosted.org/packages/05/c5/8c378d3c2c56d12606e20b59eee3538d3b1177fe00b103bb98ef15176610/python_calamine-0.5.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e37fef2b67bcd66b5dfc65b0779da9522c82f1ef9f97fc6034848072ff60b3f7", size = 933097, upload_time = "2025-09-08T05:40:16.372Z" }, + { url = "https://files.pythonhosted.org/packages/26/04/cf14e91ac5c2d6d9795e1c39f3f53e0f173fcbaed4b00198e22a58265fdd/python_calamine-0.5.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ddcef4e0e9d0479e027c90d9e1537bcf05de9bdd137cd7dfdbfc0034b1850973", size = 901917, upload_time = "2025-09-08T05:40:18.444Z" }, + { url = "https://files.pythonhosted.org/packages/6e/2f/5b2065b9360bda792504fe3ac1cef6d9da51ceba6230ee7634886b44cce9/python_calamine-0.5.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6732b47f923102357bde348021a2892a41c2fb173958268c0a1ff8d5abb6b7e8", size = 943328, upload_time = "2025-09-08T05:40:20.302Z" }, + { url = "https://files.pythonhosted.org/packages/ce/5a/45e4bd8473264b918d83297d15f160471029390cd06ed0056fc57e8f29eb/python_calamine-0.5.3-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:543db1b886cf994aaf7da0752022b37c42c05acb7605b56d09047023c8387610", size = 1065993, upload_time = "2025-09-08T05:40:22.528Z" }, + { url = "https://files.pythonhosted.org/packages/35/6b/2afd47608495f23408bdf2f1ff57a144700aed8b5bbe50285ac4864edf53/python_calamine-0.5.3-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:b79135dd96129253dc0e547778c700e1e3782e7671e7047c8b106b5501e33706", size = 1071801, upload_time = "2025-09-08T05:40:24.481Z" }, + { url = "https://files.pythonhosted.org/packages/f7/db/b06a15f25e63290c2efc5433fa8b395bfe870aacbf4ea6c930764d53eca6/python_calamine-0.5.3-cp313-cp313t-win32.whl", hash = "sha256:d84dc3b78adf038a2b452fc784523dcc90477f1631d33aabc0872812db5beb26", size = 669485, upload_time = "2025-09-08T05:40:26.818Z" }, + { url = "https://files.pythonhosted.org/packages/2d/40/e51adf1dae2002f189c83ae527aad017372d1a1b97a22172dc2e51ce502d/python_calamine-0.5.3-cp313-cp313t-win_amd64.whl", hash = "sha256:8a3fd541576fdf2708e40064ebaaf561a0a2afcab01de91c83ec212193bede34", size = 712636, upload_time = "2025-09-08T05:40:28.502Z" }, + { url = "https://files.pythonhosted.org/packages/56/fa/db4dc8d27a5daa14a153aebc0cb98bad6fd700befd9e67440a8017f0e108/python_calamine-0.5.3-cp313-cp313t-win_arm64.whl", hash = "sha256:b28a9c9318a5e7dabcead1803bfd48be5bf7c9f339d6e505a5989650a6102487", size = 678307, upload_time = "2025-09-08T05:40:30.797Z" }, + { url = "https://files.pythonhosted.org/packages/ee/7f/a098680c9d6ad36fe850f2c2c28627ee3bc95aaa052f375806f69c075475/python_calamine-0.5.3-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:b5cdcd85cc08a1805d267fc66aa100940712de6b4524951ab91ba47fa60d481f", size = 843921, upload_time = "2025-09-08T05:40:32.418Z" }, + { url = "https://files.pythonhosted.org/packages/09/ce/3de5d714779fac6e3333e7ea98ce4eae3b2479eb8a3d2f7d9e4487e16681/python_calamine-0.5.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:828cd5d49fe9eb9c1fc9219fe484b07f2ba9a1e5e3b8475d7f1415e0fa316df8", size = 814173, upload_time = "2025-09-08T05:40:33.982Z" }, + { url = "https://files.pythonhosted.org/packages/cb/14/ef98575838091b6b24274160d53607e78df94f0176af360bcb063512e643/python_calamine-0.5.3-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d3f4d0532ab4de422fc4b707cdbb93d57ca7ccf9be8bc4742fb9376dc68f861", size = 888958, upload_time = "2025-09-08T05:40:35.576Z" }, + { url = "https://files.pythonhosted.org/packages/c0/b1/c999dd1f89f415ff06f88f37bce643ece3c4d51ae051e0a143ff16f44c1c/python_calamine-0.5.3-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:89a9ba0a16e4335b676232ddbbea0fd09bfb94757ca6e4cf90ce1348aa843f3f", size = 880988, upload_time = "2025-09-08T05:40:37.264Z" }, + { url = "https://files.pythonhosted.org/packages/74/16/4984532280e4b2c81aa26ae57b37fc3eaeda414e46e2d9c6a9cfdb27cd56/python_calamine-0.5.3-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0928d0eb1cdea229464de280d0f7cd99314ba28cffd2c4d6c9ce6902f9d6d448", size = 1035685, upload_time = "2025-09-08T05:40:38.992Z" }, + { url = "https://files.pythonhosted.org/packages/cd/dc/91776b34ab09f36ea41449951148bef731f9b355a2d2b25d398eec774926/python_calamine-0.5.3-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c7f9519dd3b8814ef6e801b9797f918fe7a59937fac4784cb280c8350fb1a2cf", size = 933865, upload_time = "2025-09-08T05:40:41.089Z" }, + { url = "https://files.pythonhosted.org/packages/01/97/12deaff5e608207398a9f0eaa06447ed69e8c4873ee953be553f9440881a/python_calamine-0.5.3-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:954cd764c6b24735c749a447523b4ccf4b9d2b7c231ddd304ed42c15afca9516", size = 902310, upload_time = "2025-09-08T05:40:43.222Z" }, + { url = "https://files.pythonhosted.org/packages/45/da/45063eee203f6c9d9436d29dfc0f01db85c9264c86d1e438c3b452d7e97f/python_calamine-0.5.3-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:b3f0e9c59fece6bbf1a916947fba33e9b635327eb165784d05efed40027164d1", size = 948143, upload_time = "2025-09-08T05:40:44.874Z" }, + { url = "https://files.pythonhosted.org/packages/33/07/0b661166dd58367bd5d6cc2bf8441f61004dd5ef2555ab224da97b1ac5d3/python_calamine-0.5.3-cp314-cp314-musllinux_1_1_aarch64.whl", hash = "sha256:63bb47cc080d8eb9bc654f0961ada385b58a57d4628b0a33d1003c8f62e6ae3d", size = 1067181, upload_time = "2025-09-08T05:40:46.598Z" }, + { url = "https://files.pythonhosted.org/packages/5d/80/58b107dc2c2e6bad581f58f54b3ccb07705094ff23734c8dd30bd8aef4e8/python_calamine-0.5.3-cp314-cp314-musllinux_1_1_x86_64.whl", hash = "sha256:adb62aab9b9298b2fc378b2aec6dd5802f7ee199c3431abae29368ef046f8005", size = 1072683, upload_time = "2025-09-08T05:40:48.629Z" }, + { url = "https://files.pythonhosted.org/packages/4c/b4/667e40dbe7d4f19a2e69f9cd186e069cd3af0411a177aa2a90231e3e0b06/python_calamine-0.5.3-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:1de68d2586df7a7a05a7779031dabd4c3d95d4738314ba82e943c8d3f36b5a67", size = 843526, upload_time = "2025-09-08T05:40:50.334Z" }, + { url = "https://files.pythonhosted.org/packages/3e/f7/fb86da5920198a616583f07d1a395cb1241eafb930d5c33f597ae6664711/python_calamine-0.5.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:2c70033bbd59f05491743befec5e2a90784f4c8220e7379ce03e956bd1f475be", size = 811074, upload_time = "2025-09-08T05:40:52.168Z" }, + { url = "https://files.pythonhosted.org/packages/76/2e/5a5a618b351b75155fbb40ad88e166f17ccf202401dd4b830db05b2565a6/python_calamine-0.5.3-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4f396a0e57b1a5462668fc247377714b5b4c061718c1863c00ddc64e770b0f1e", size = 887735, upload_time = "2025-09-08T05:40:53.86Z" }, + { url = "https://files.pythonhosted.org/packages/97/cf/3cfaa550eb1c9c5501728886c5e787c3ddeb34d8bf3e7e9fcaf9fc6fbd86/python_calamine-0.5.3-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:ce737cb19d3077cabe0acaecd6b55d5df75021a520c20b47e0c75b65b4bfa919", size = 882356, upload_time = "2025-09-08T05:40:55.624Z" }, + { url = "https://files.pythonhosted.org/packages/88/b8/97f56e337149d0ce53399be9bd583f735dc1ea9abb2745ac902a09e8c401/python_calamine-0.5.3-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e54b30802fe089cc0c67c67407203412ec7144e84e0960e69c529c7170c37dae", size = 1033195, upload_time = "2025-09-08T05:40:57.819Z" }, + { url = "https://files.pythonhosted.org/packages/94/45/59a21a18c8e073d2f930a4a9c0c038207b82c5c996b67146fb76f3da2748/python_calamine-0.5.3-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5efc94c2e4119dc0da1e84d036f7e840fb0dd0850f4c10d3d166d725af0751af", size = 931846, upload_time = "2025-09-08T05:40:59.93Z" }, + { url = "https://files.pythonhosted.org/packages/36/47/715e0c0bc37ccce035ef4be1aa8eafa1e5abb6687af725cb47d81a18def7/python_calamine-0.5.3-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:74e33191a01d52f66dd6b029e99b6eda0245771c4f116c87ff0d5edf922dbbca", size = 902871, upload_time = "2025-09-08T05:41:02.021Z" }, + { url = "https://files.pythonhosted.org/packages/ca/07/ac0cf8623765106794e297235d6dde3a728f18e61a536792189fca06f2ba/python_calamine-0.5.3-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:85ceec02cb367cf87a72ba559db3279f3b4774edba9330eb77670587d4de95f4", size = 944438, upload_time = "2025-09-08T05:41:03.748Z" }, + { url = "https://files.pythonhosted.org/packages/88/98/c48c0b8be7fbae5f68b7c55a1ed4068d2c3dab64093e39733d43c23a7459/python_calamine-0.5.3-cp314-cp314t-musllinux_1_1_aarch64.whl", hash = "sha256:882400368f976ea489e47af04fde936b603c3efcf9ade1cd73e623c88fc4aa5c", size = 1066276, upload_time = "2025-09-08T05:41:05.408Z" }, + { url = "https://files.pythonhosted.org/packages/73/3a/bbf99531fec43bca2ab28948ab94d851db96c0364c76139dd746cab2f4f9/python_calamine-0.5.3-cp314-cp314t-musllinux_1_1_x86_64.whl", hash = "sha256:ce2fe421d5564e5341f7a06b9c52b84603b48aa670426d44fffce705609a859b", size = 1073059, upload_time = "2025-09-08T05:41:07.75Z" }, ] [[package]] @@ -2399,9 +2444,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432 } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload_time = "2024-03-01T18:36:20.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload_time = "2024-03-01T18:36:18.57Z" }, ] [[package]] @@ -2411,16 +2456,16 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "charset-normalizer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/4b/3c4cf635311b6203f17c2d693dc15e898969983dd3f729bee3c428aa60d4/python-debian-1.0.1.tar.gz", hash = "sha256:3ada9b83a3d671b58081782c0969cffa0102f6ce433fbbc7cf21275b8b5cc771", size = 127249 } +sdist = { url = "https://files.pythonhosted.org/packages/bf/4b/3c4cf635311b6203f17c2d693dc15e898969983dd3f729bee3c428aa60d4/python-debian-1.0.1.tar.gz", hash = "sha256:3ada9b83a3d671b58081782c0969cffa0102f6ce433fbbc7cf21275b8b5cc771", size = 127249, upload_time = "2025-03-11T12:27:27.245Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ba/15/e8096189b18dda72e4923622abc10b021ecff723b397e22eff29fb86637b/python_debian-1.0.1-py3-none-any.whl", hash = "sha256:8f137c230c1d9279c2ac892b35915068b2aca090c9fd3da5671ff87af32af12c", size = 137453 }, + { url = "https://files.pythonhosted.org/packages/ba/15/e8096189b18dda72e4923622abc10b021ecff723b397e22eff29fb86637b/python_debian-1.0.1-py3-none-any.whl", hash = "sha256:8f137c230c1d9279c2ac892b35915068b2aca090c9fd3da5671ff87af32af12c", size = 137453, upload_time = "2025-03-11T12:27:25.014Z" }, ] [[package]] name = "python-io-wrapper" version = "0.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/74/8dc5f7d0b7cc1a0ca9e5c320abf11adee2094998c93ae8c9c80d9a8323ff/python-io-wrapper-0.3.1.tar.gz", hash = "sha256:e3391787ff0d9870e739294c6392437915502153e695a017450aa46b6d091762", size = 3271 } +sdist = { url = "https://files.pythonhosted.org/packages/d7/74/8dc5f7d0b7cc1a0ca9e5c320abf11adee2094998c93ae8c9c80d9a8323ff/python-io-wrapper-0.3.1.tar.gz", hash = "sha256:e3391787ff0d9870e739294c6392437915502153e695a017450aa46b6d091762", size = 3271, upload_time = "2022-11-14T15:00:10.932Z" } [[package]] name = "python-slugify" @@ -2429,18 +2474,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "text-unidecode" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921 } +sdist = { url = "https://files.pythonhosted.org/packages/87/c7/5e1547c44e31da50a460df93af11a535ace568ef89d7a811069ead340c4a/python-slugify-8.0.4.tar.gz", hash = "sha256:59202371d1d05b54a9e7720c5e038f928f45daaffe41dd10822f3907b937c856", size = 10921, upload_time = "2024-02-08T18:32:45.488Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051 }, + { url = "https://files.pythonhosted.org/packages/a4/62/02da182e544a51a5c3ccf4b03ab79df279f9c60c5e82d5e8bec7ca26ac11/python_slugify-8.0.4-py2.py3-none-any.whl", hash = "sha256:276540b79961052b66b7d116620b36518847f52d5fd9e3a70164fc8c50faa6b8", size = 10051, upload_time = "2024-02-08T18:32:43.911Z" }, ] [[package]] name = "pytz" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload_time = "2025-03-25T02:25:00.538Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload_time = "2025-03-25T02:24:58.468Z" }, ] [[package]] @@ -2448,41 +2493,41 @@ name = "pywin32" version = "311" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543 }, - { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040 }, - { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102 }, - { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700 }, - { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700 }, - { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318 }, - { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714 }, - { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800 }, - { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540 }, + { url = "https://files.pythonhosted.org/packages/e7/ab/01ea1943d4eba0f850c3c61e78e8dd59757ff815ff3ccd0a84de5f541f42/pywin32-311-cp312-cp312-win32.whl", hash = "sha256:750ec6e621af2b948540032557b10a2d43b0cee2ae9758c54154d711cc852d31", size = 8706543, upload_time = "2025-07-14T20:13:20.765Z" }, + { url = "https://files.pythonhosted.org/packages/d1/a8/a0e8d07d4d051ec7502cd58b291ec98dcc0c3fff027caad0470b72cfcc2f/pywin32-311-cp312-cp312-win_amd64.whl", hash = "sha256:b8c095edad5c211ff31c05223658e71bf7116daa0ecf3ad85f3201ea3190d067", size = 9495040, upload_time = "2025-07-14T20:13:22.543Z" }, + { url = "https://files.pythonhosted.org/packages/ba/3a/2ae996277b4b50f17d61f0603efd8253cb2d79cc7ae159468007b586396d/pywin32-311-cp312-cp312-win_arm64.whl", hash = "sha256:e286f46a9a39c4a18b319c28f59b61de793654af2f395c102b4f819e584b5852", size = 8710102, upload_time = "2025-07-14T20:13:24.682Z" }, + { url = "https://files.pythonhosted.org/packages/a5/be/3fd5de0979fcb3994bfee0d65ed8ca9506a8a1260651b86174f6a86f52b3/pywin32-311-cp313-cp313-win32.whl", hash = "sha256:f95ba5a847cba10dd8c4d8fefa9f2a6cf283b8b88ed6178fa8a6c1ab16054d0d", size = 8705700, upload_time = "2025-07-14T20:13:26.471Z" }, + { url = "https://files.pythonhosted.org/packages/e3/28/e0a1909523c6890208295a29e05c2adb2126364e289826c0a8bc7297bd5c/pywin32-311-cp313-cp313-win_amd64.whl", hash = "sha256:718a38f7e5b058e76aee1c56ddd06908116d35147e133427e59a3983f703a20d", size = 9494700, upload_time = "2025-07-14T20:13:28.243Z" }, + { url = "https://files.pythonhosted.org/packages/04/bf/90339ac0f55726dce7d794e6d79a18a91265bdf3aa70b6b9ca52f35e022a/pywin32-311-cp313-cp313-win_arm64.whl", hash = "sha256:7b4075d959648406202d92a2310cb990fea19b535c7f4a78d3f5e10b926eeb8a", size = 8709318, upload_time = "2025-07-14T20:13:30.348Z" }, + { url = "https://files.pythonhosted.org/packages/c9/31/097f2e132c4f16d99a22bfb777e0fd88bd8e1c634304e102f313af69ace5/pywin32-311-cp314-cp314-win32.whl", hash = "sha256:b7a2c10b93f8986666d0c803ee19b5990885872a7de910fc460f9b0c2fbf92ee", size = 8840714, upload_time = "2025-07-14T20:13:32.449Z" }, + { url = "https://files.pythonhosted.org/packages/90/4b/07c77d8ba0e01349358082713400435347df8426208171ce297da32c313d/pywin32-311-cp314-cp314-win_amd64.whl", hash = "sha256:3aca44c046bd2ed8c90de9cb8427f581c479e594e99b5c0bb19b29c10fd6cb87", size = 9656800, upload_time = "2025-07-14T20:13:34.312Z" }, + { url = "https://files.pythonhosted.org/packages/c0/d2/21af5c535501a7233e734b8af901574572da66fcc254cb35d0609c9080dd/pywin32-311-cp314-cp314-win_arm64.whl", hash = "sha256:a508e2d9025764a8270f93111a970e1d0fbfc33f4153b388bb649b7eec4f9b42", size = 8932540, upload_time = "2025-07-14T20:13:36.379Z" }, ] [[package]] name = "pyyaml" version = "6.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873 }, - { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302 }, - { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154 }, - { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223 }, - { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542 }, - { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164 }, - { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611 }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591 }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338 }, - { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309 }, - { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679 }, - { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428 }, - { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361 }, - { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523 }, - { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660 }, - { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597 }, - { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527 }, - { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446 }, +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload_time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/0c/c581167fc46d6d6d7ddcfb8c843a4de25bdd27e4466938109ca68492292c/PyYAML-6.0.2-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab", size = 183873, upload_time = "2024-08-06T20:32:25.131Z" }, + { url = "https://files.pythonhosted.org/packages/a8/0c/38374f5bb272c051e2a69281d71cba6fdb983413e6758b84482905e29a5d/PyYAML-6.0.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725", size = 173302, upload_time = "2024-08-06T20:32:26.511Z" }, + { url = "https://files.pythonhosted.org/packages/c3/93/9916574aa8c00aa06bbac729972eb1071d002b8e158bd0e83a3b9a20a1f7/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5", size = 739154, upload_time = "2024-08-06T20:32:28.363Z" }, + { url = "https://files.pythonhosted.org/packages/95/0f/b8938f1cbd09739c6da569d172531567dbcc9789e0029aa070856f123984/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425", size = 766223, upload_time = "2024-08-06T20:32:30.058Z" }, + { url = "https://files.pythonhosted.org/packages/b9/2b/614b4752f2e127db5cc206abc23a8c19678e92b23c3db30fc86ab731d3bd/PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476", size = 767542, upload_time = "2024-08-06T20:32:31.881Z" }, + { url = "https://files.pythonhosted.org/packages/d4/00/dd137d5bcc7efea1836d6264f049359861cf548469d18da90cd8216cf05f/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48", size = 731164, upload_time = "2024-08-06T20:32:37.083Z" }, + { url = "https://files.pythonhosted.org/packages/c9/1f/4f998c900485e5c0ef43838363ba4a9723ac0ad73a9dc42068b12aaba4e4/PyYAML-6.0.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b", size = 756611, upload_time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload_time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload_time = "2024-08-06T20:32:41.93Z" }, + { url = "https://files.pythonhosted.org/packages/ef/e3/3af305b830494fa85d95f6d95ef7fa73f2ee1cc8ef5b495c7c3269fb835f/PyYAML-6.0.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba", size = 181309, upload_time = "2024-08-06T20:32:43.4Z" }, + { url = "https://files.pythonhosted.org/packages/45/9f/3b1c20a0b7a3200524eb0076cc027a970d320bd3a6592873c85c92a08731/PyYAML-6.0.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1", size = 171679, upload_time = "2024-08-06T20:32:44.801Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/337322f27005c33bcb656c655fa78325b730324c78620e8328ae28b64d0c/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133", size = 733428, upload_time = "2024-08-06T20:32:46.432Z" }, + { url = "https://files.pythonhosted.org/packages/a3/69/864fbe19e6c18ea3cc196cbe5d392175b4cf3d5d0ac1403ec3f2d237ebb5/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484", size = 763361, upload_time = "2024-08-06T20:32:51.188Z" }, + { url = "https://files.pythonhosted.org/packages/04/24/b7721e4845c2f162d26f50521b825fb061bc0a5afcf9a386840f23ea19fa/PyYAML-6.0.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5", size = 759523, upload_time = "2024-08-06T20:32:53.019Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b2/e3234f59ba06559c6ff63c4e10baea10e5e7df868092bf9ab40e5b9c56b6/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc", size = 726660, upload_time = "2024-08-06T20:32:54.708Z" }, + { url = "https://files.pythonhosted.org/packages/fe/0f/25911a9f080464c59fab9027482f822b86bf0608957a5fcc6eaac85aa515/PyYAML-6.0.2-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652", size = 751597, upload_time = "2024-08-06T20:32:56.985Z" }, + { url = "https://files.pythonhosted.org/packages/14/0d/e2c3b43bbce3cf6bd97c840b46088a3031085179e596d4929729d8d68270/PyYAML-6.0.2-cp313-cp313-win32.whl", hash = "sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183", size = 140527, upload_time = "2024-08-06T20:33:03.001Z" }, + { url = "https://files.pythonhosted.org/packages/fa/de/02b54f42487e3d3c6efb3f89428677074ca7bf43aae402517bc7cca949f3/PyYAML-6.0.2-cp313-cp313-win_amd64.whl", hash = "sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563", size = 156446, upload_time = "2024-08-06T20:33:04.33Z" }, ] [[package]] @@ -2492,9 +2537,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737, upload_time = "2025-05-13T15:24:01.64Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722 }, + { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722, upload_time = "2025-05-13T15:23:59.629Z" }, ] [[package]] @@ -2504,47 +2549,47 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "implementation_name == 'pypy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/04/0b/3c9baedbdf613ecaa7aa07027780b8867f57b6293b6ee50de316c9f3222b/pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540", size = 281750 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc", size = 1306279 }, - { url = "https://files.pythonhosted.org/packages/e8/5e/c3c49fdd0f535ef45eefcc16934648e9e59dace4a37ee88fc53f6cd8e641/pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113", size = 895645 }, - { url = "https://files.pythonhosted.org/packages/f8/e5/b0b2504cb4e903a74dcf1ebae157f9e20ebb6ea76095f6cfffea28c42ecd/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233", size = 652574 }, - { url = "https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31", size = 840995 }, - { url = "https://files.pythonhosted.org/packages/c2/bb/b79798ca177b9eb0825b4c9998c6af8cd2a7f15a6a1a4272c1d1a21d382f/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28", size = 1642070 }, - { url = "https://files.pythonhosted.org/packages/9c/80/2df2e7977c4ede24c79ae39dcef3899bfc5f34d1ca7a5b24f182c9b7a9ca/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856", size = 2021121 }, - { url = "https://files.pythonhosted.org/packages/46/bd/2d45ad24f5f5ae7e8d01525eb76786fa7557136555cac7d929880519e33a/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496", size = 1878550 }, - { url = "https://files.pythonhosted.org/packages/e6/2f/104c0a3c778d7c2ab8190e9db4f62f0b6957b53c9d87db77c284b69f33ea/pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd", size = 559184 }, - { url = "https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf", size = 619480 }, - { url = "https://files.pythonhosted.org/packages/78/c2/c012beae5f76b72f007a9e91ee9401cb88c51d0f83c6257a03e785c81cc2/pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f", size = 552993 }, - { url = "https://files.pythonhosted.org/packages/60/cb/84a13459c51da6cec1b7b1dc1a47e6db6da50b77ad7fd9c145842750a011/pyzmq-27.1.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5", size = 1122436 }, - { url = "https://files.pythonhosted.org/packages/dc/b6/94414759a69a26c3dd674570a81813c46a078767d931a6c70ad29fc585cb/pyzmq-27.1.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6", size = 1156301 }, - { url = "https://files.pythonhosted.org/packages/a5/ad/15906493fd40c316377fd8a8f6b1f93104f97a752667763c9b9c1b71d42d/pyzmq-27.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7", size = 1341197 }, - { url = "https://files.pythonhosted.org/packages/14/1d/d343f3ce13db53a54cb8946594e567410b2125394dafcc0268d8dda027e0/pyzmq-27.1.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05", size = 897275 }, - { url = "https://files.pythonhosted.org/packages/69/2d/d83dd6d7ca929a2fc67d2c3005415cdf322af7751d773524809f9e585129/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9", size = 660469 }, - { url = "https://files.pythonhosted.org/packages/3e/cd/9822a7af117f4bc0f1952dbe9ef8358eb50a24928efd5edf54210b850259/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128", size = 847961 }, - { url = "https://files.pythonhosted.org/packages/9a/12/f003e824a19ed73be15542f172fd0ec4ad0b60cf37436652c93b9df7c585/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39", size = 1650282 }, - { url = "https://files.pythonhosted.org/packages/d5/4a/e82d788ed58e9a23995cee70dbc20c9aded3d13a92d30d57ec2291f1e8a3/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97", size = 2024468 }, - { url = "https://files.pythonhosted.org/packages/d9/94/2da0a60841f757481e402b34bf4c8bf57fa54a5466b965de791b1e6f747d/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db", size = 1885394 }, - { url = "https://files.pythonhosted.org/packages/4f/6f/55c10e2e49ad52d080dc24e37adb215e5b0d64990b57598abc2e3f01725b/pyzmq-27.1.0-cp313-cp313t-win32.whl", hash = "sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c", size = 574964 }, - { url = "https://files.pythonhosted.org/packages/87/4d/2534970ba63dd7c522d8ca80fb92777f362c0f321900667c615e2067cb29/pyzmq-27.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2", size = 641029 }, - { url = "https://files.pythonhosted.org/packages/f6/fa/f8aea7a28b0641f31d40dea42d7ef003fded31e184ef47db696bc74cd610/pyzmq-27.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e", size = 561541 }, - { url = "https://files.pythonhosted.org/packages/87/45/19efbb3000956e82d0331bafca5d9ac19ea2857722fa2caacefb6042f39d/pyzmq-27.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a", size = 1341197 }, - { url = "https://files.pythonhosted.org/packages/48/43/d72ccdbf0d73d1343936296665826350cb1e825f92f2db9db3e61c2162a2/pyzmq-27.1.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea", size = 897175 }, - { url = "https://files.pythonhosted.org/packages/2f/2e/a483f73a10b65a9ef0161e817321d39a770b2acf8bcf3004a28d90d14a94/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96", size = 660427 }, - { url = "https://files.pythonhosted.org/packages/f5/d2/5f36552c2d3e5685abe60dfa56f91169f7a2d99bbaf67c5271022ab40863/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d", size = 847929 }, - { url = "https://files.pythonhosted.org/packages/c4/2a/404b331f2b7bf3198e9945f75c4c521f0c6a3a23b51f7a4a401b94a13833/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146", size = 1650193 }, - { url = "https://files.pythonhosted.org/packages/1c/0b/f4107e33f62a5acf60e3ded67ed33d79b4ce18de432625ce2fc5093d6388/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd", size = 2024388 }, - { url = "https://files.pythonhosted.org/packages/0d/01/add31fe76512642fd6e40e3a3bd21f4b47e242c8ba33efb6809e37076d9b/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a", size = 1885316 }, - { url = "https://files.pythonhosted.org/packages/c4/59/a5f38970f9bf07cee96128de79590bb354917914a9be11272cfc7ff26af0/pyzmq-27.1.0-cp314-cp314t-win32.whl", hash = "sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92", size = 587472 }, - { url = "https://files.pythonhosted.org/packages/70/d8/78b1bad170f93fcf5e3536e70e8fadac55030002275c9a29e8f5719185de/pyzmq-27.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0", size = 661401 }, - { url = "https://files.pythonhosted.org/packages/81/d6/4bfbb40c9a0b42fc53c7cf442f6385db70b40f74a783130c5d0a5aa62228/pyzmq-27.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7", size = 575170 }, +sdist = { url = "https://files.pythonhosted.org/packages/04/0b/3c9baedbdf613ecaa7aa07027780b8867f57b6293b6ee50de316c9f3222b/pyzmq-27.1.0.tar.gz", hash = "sha256:ac0765e3d44455adb6ddbf4417dcce460fc40a05978c08efdf2948072f6db540", size = 281750, upload_time = "2025-09-08T23:10:18.157Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/e7/038aab64a946d535901103da16b953c8c9cc9c961dadcbf3609ed6428d23/pyzmq-27.1.0-cp312-abi3-macosx_10_15_universal2.whl", hash = "sha256:452631b640340c928fa343801b0d07eb0c3789a5ffa843f6e1a9cee0ba4eb4fc", size = 1306279, upload_time = "2025-09-08T23:08:03.807Z" }, + { url = "https://files.pythonhosted.org/packages/e8/5e/c3c49fdd0f535ef45eefcc16934648e9e59dace4a37ee88fc53f6cd8e641/pyzmq-27.1.0-cp312-abi3-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1c179799b118e554b66da67d88ed66cd37a169f1f23b5d9f0a231b4e8d44a113", size = 895645, upload_time = "2025-09-08T23:08:05.301Z" }, + { url = "https://files.pythonhosted.org/packages/f8/e5/b0b2504cb4e903a74dcf1ebae157f9e20ebb6ea76095f6cfffea28c42ecd/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3837439b7f99e60312f0c926a6ad437b067356dc2bc2ec96eb395fd0fe804233", size = 652574, upload_time = "2025-09-08T23:08:06.828Z" }, + { url = "https://files.pythonhosted.org/packages/f8/9b/c108cdb55560eaf253f0cbdb61b29971e9fb34d9c3499b0e96e4e60ed8a5/pyzmq-27.1.0-cp312-abi3-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:43ad9a73e3da1fab5b0e7e13402f0b2fb934ae1c876c51d0afff0e7c052eca31", size = 840995, upload_time = "2025-09-08T23:08:08.396Z" }, + { url = "https://files.pythonhosted.org/packages/c2/bb/b79798ca177b9eb0825b4c9998c6af8cd2a7f15a6a1a4272c1d1a21d382f/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:0de3028d69d4cdc475bfe47a6128eb38d8bc0e8f4d69646adfbcd840facbac28", size = 1642070, upload_time = "2025-09-08T23:08:09.989Z" }, + { url = "https://files.pythonhosted.org/packages/9c/80/2df2e7977c4ede24c79ae39dcef3899bfc5f34d1ca7a5b24f182c9b7a9ca/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_i686.whl", hash = "sha256:cf44a7763aea9298c0aa7dbf859f87ed7012de8bda0f3977b6fb1d96745df856", size = 2021121, upload_time = "2025-09-08T23:08:11.907Z" }, + { url = "https://files.pythonhosted.org/packages/46/bd/2d45ad24f5f5ae7e8d01525eb76786fa7557136555cac7d929880519e33a/pyzmq-27.1.0-cp312-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:f30f395a9e6fbca195400ce833c731e7b64c3919aa481af4d88c3759e0cb7496", size = 1878550, upload_time = "2025-09-08T23:08:13.513Z" }, + { url = "https://files.pythonhosted.org/packages/e6/2f/104c0a3c778d7c2ab8190e9db4f62f0b6957b53c9d87db77c284b69f33ea/pyzmq-27.1.0-cp312-abi3-win32.whl", hash = "sha256:250e5436a4ba13885494412b3da5d518cd0d3a278a1ae640e113c073a5f88edd", size = 559184, upload_time = "2025-09-08T23:08:15.163Z" }, + { url = "https://files.pythonhosted.org/packages/fc/7f/a21b20d577e4100c6a41795842028235998a643b1ad406a6d4163ea8f53e/pyzmq-27.1.0-cp312-abi3-win_amd64.whl", hash = "sha256:9ce490cf1d2ca2ad84733aa1d69ce6855372cb5ce9223802450c9b2a7cba0ccf", size = 619480, upload_time = "2025-09-08T23:08:17.192Z" }, + { url = "https://files.pythonhosted.org/packages/78/c2/c012beae5f76b72f007a9e91ee9401cb88c51d0f83c6257a03e785c81cc2/pyzmq-27.1.0-cp312-abi3-win_arm64.whl", hash = "sha256:75a2f36223f0d535a0c919e23615fc85a1e23b71f40c7eb43d7b1dedb4d8f15f", size = 552993, upload_time = "2025-09-08T23:08:18.926Z" }, + { url = "https://files.pythonhosted.org/packages/60/cb/84a13459c51da6cec1b7b1dc1a47e6db6da50b77ad7fd9c145842750a011/pyzmq-27.1.0-cp313-cp313-android_24_arm64_v8a.whl", hash = "sha256:93ad4b0855a664229559e45c8d23797ceac03183c7b6f5b4428152a6b06684a5", size = 1122436, upload_time = "2025-09-08T23:08:20.801Z" }, + { url = "https://files.pythonhosted.org/packages/dc/b6/94414759a69a26c3dd674570a81813c46a078767d931a6c70ad29fc585cb/pyzmq-27.1.0-cp313-cp313-android_24_x86_64.whl", hash = "sha256:fbb4f2400bfda24f12f009cba62ad5734148569ff4949b1b6ec3b519444342e6", size = 1156301, upload_time = "2025-09-08T23:08:22.47Z" }, + { url = "https://files.pythonhosted.org/packages/a5/ad/15906493fd40c316377fd8a8f6b1f93104f97a752667763c9b9c1b71d42d/pyzmq-27.1.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:e343d067f7b151cfe4eb3bb796a7752c9d369eed007b91231e817071d2c2fec7", size = 1341197, upload_time = "2025-09-08T23:08:24.286Z" }, + { url = "https://files.pythonhosted.org/packages/14/1d/d343f3ce13db53a54cb8946594e567410b2125394dafcc0268d8dda027e0/pyzmq-27.1.0-cp313-cp313t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:08363b2011dec81c354d694bdecaef4770e0ae96b9afea70b3f47b973655cc05", size = 897275, upload_time = "2025-09-08T23:08:26.063Z" }, + { url = "https://files.pythonhosted.org/packages/69/2d/d83dd6d7ca929a2fc67d2c3005415cdf322af7751d773524809f9e585129/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d54530c8c8b5b8ddb3318f481297441af102517602b569146185fa10b63f4fa9", size = 660469, upload_time = "2025-09-08T23:08:27.623Z" }, + { url = "https://files.pythonhosted.org/packages/3e/cd/9822a7af117f4bc0f1952dbe9ef8358eb50a24928efd5edf54210b850259/pyzmq-27.1.0-cp313-cp313t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6f3afa12c392f0a44a2414056d730eebc33ec0926aae92b5ad5cf26ebb6cc128", size = 847961, upload_time = "2025-09-08T23:08:29.672Z" }, + { url = "https://files.pythonhosted.org/packages/9a/12/f003e824a19ed73be15542f172fd0ec4ad0b60cf37436652c93b9df7c585/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:c65047adafe573ff023b3187bb93faa583151627bc9c51fc4fb2c561ed689d39", size = 1650282, upload_time = "2025-09-08T23:08:31.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/4a/e82d788ed58e9a23995cee70dbc20c9aded3d13a92d30d57ec2291f1e8a3/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:90e6e9441c946a8b0a667356f7078d96411391a3b8f80980315455574177ec97", size = 2024468, upload_time = "2025-09-08T23:08:33.543Z" }, + { url = "https://files.pythonhosted.org/packages/d9/94/2da0a60841f757481e402b34bf4c8bf57fa54a5466b965de791b1e6f747d/pyzmq-27.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:add071b2d25f84e8189aaf0882d39a285b42fa3853016ebab234a5e78c7a43db", size = 1885394, upload_time = "2025-09-08T23:08:35.51Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6f/55c10e2e49ad52d080dc24e37adb215e5b0d64990b57598abc2e3f01725b/pyzmq-27.1.0-cp313-cp313t-win32.whl", hash = "sha256:7ccc0700cfdf7bd487bea8d850ec38f204478681ea02a582a8da8171b7f90a1c", size = 574964, upload_time = "2025-09-08T23:08:37.178Z" }, + { url = "https://files.pythonhosted.org/packages/87/4d/2534970ba63dd7c522d8ca80fb92777f362c0f321900667c615e2067cb29/pyzmq-27.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:8085a9fba668216b9b4323be338ee5437a235fe275b9d1610e422ccc279733e2", size = 641029, upload_time = "2025-09-08T23:08:40.595Z" }, + { url = "https://files.pythonhosted.org/packages/f6/fa/f8aea7a28b0641f31d40dea42d7ef003fded31e184ef47db696bc74cd610/pyzmq-27.1.0-cp313-cp313t-win_arm64.whl", hash = "sha256:6bb54ca21bcfe361e445256c15eedf083f153811c37be87e0514934d6913061e", size = 561541, upload_time = "2025-09-08T23:08:42.668Z" }, + { url = "https://files.pythonhosted.org/packages/87/45/19efbb3000956e82d0331bafca5d9ac19ea2857722fa2caacefb6042f39d/pyzmq-27.1.0-cp314-cp314t-macosx_10_15_universal2.whl", hash = "sha256:ce980af330231615756acd5154f29813d553ea555485ae712c491cd483df6b7a", size = 1341197, upload_time = "2025-09-08T23:08:44.973Z" }, + { url = "https://files.pythonhosted.org/packages/48/43/d72ccdbf0d73d1343936296665826350cb1e825f92f2db9db3e61c2162a2/pyzmq-27.1.0-cp314-cp314t-manylinux2014_i686.manylinux_2_17_i686.whl", hash = "sha256:1779be8c549e54a1c38f805e56d2a2e5c009d26de10921d7d51cfd1c8d4632ea", size = 897175, upload_time = "2025-09-08T23:08:46.601Z" }, + { url = "https://files.pythonhosted.org/packages/2f/2e/a483f73a10b65a9ef0161e817321d39a770b2acf8bcf3004a28d90d14a94/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7200bb0f03345515df50d99d3db206a0a6bee1955fbb8c453c76f5bf0e08fb96", size = 660427, upload_time = "2025-09-08T23:08:48.187Z" }, + { url = "https://files.pythonhosted.org/packages/f5/d2/5f36552c2d3e5685abe60dfa56f91169f7a2d99bbaf67c5271022ab40863/pyzmq-27.1.0-cp314-cp314t-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01c0e07d558b06a60773744ea6251f769cd79a41a97d11b8bf4ab8f034b0424d", size = 847929, upload_time = "2025-09-08T23:08:49.76Z" }, + { url = "https://files.pythonhosted.org/packages/c4/2a/404b331f2b7bf3198e9945f75c4c521f0c6a3a23b51f7a4a401b94a13833/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:80d834abee71f65253c91540445d37c4c561e293ba6e741b992f20a105d69146", size = 1650193, upload_time = "2025-09-08T23:08:51.7Z" }, + { url = "https://files.pythonhosted.org/packages/1c/0b/f4107e33f62a5acf60e3ded67ed33d79b4ce18de432625ce2fc5093d6388/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:544b4e3b7198dde4a62b8ff6685e9802a9a1ebf47e77478a5eb88eca2a82f2fd", size = 2024388, upload_time = "2025-09-08T23:08:53.393Z" }, + { url = "https://files.pythonhosted.org/packages/0d/01/add31fe76512642fd6e40e3a3bd21f4b47e242c8ba33efb6809e37076d9b/pyzmq-27.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:cedc4c68178e59a4046f97eca31b148ddcf51e88677de1ef4e78cf06c5376c9a", size = 1885316, upload_time = "2025-09-08T23:08:55.702Z" }, + { url = "https://files.pythonhosted.org/packages/c4/59/a5f38970f9bf07cee96128de79590bb354917914a9be11272cfc7ff26af0/pyzmq-27.1.0-cp314-cp314t-win32.whl", hash = "sha256:1f0b2a577fd770aa6f053211a55d1c47901f4d537389a034c690291485e5fe92", size = 587472, upload_time = "2025-09-08T23:08:58.18Z" }, + { url = "https://files.pythonhosted.org/packages/70/d8/78b1bad170f93fcf5e3536e70e8fadac55030002275c9a29e8f5719185de/pyzmq-27.1.0-cp314-cp314t-win_amd64.whl", hash = "sha256:19c9468ae0437f8074af379e986c5d3d7d7bfe033506af442e8c879732bedbe0", size = 661401, upload_time = "2025-09-08T23:08:59.802Z" }, + { url = "https://files.pythonhosted.org/packages/81/d6/4bfbb40c9a0b42fc53c7cf442f6385db70b40f74a783130c5d0a5aa62228/pyzmq-27.1.0-cp314-cp314t-win_arm64.whl", hash = "sha256:dc5dbf68a7857b59473f7df42650c621d7e8923fb03fa74a526890f4d33cc4d7", size = 575170, upload_time = "2025-09-08T23:09:01.418Z" }, ] [[package]] name = "ratelimit" version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ab/38/ff60c8fc9e002d50d48822cc5095deb8ebbc5f91a6b8fdd9731c87a147c9/ratelimit-2.2.1.tar.gz", hash = "sha256:af8a9b64b821529aca09ebaf6d8d279100d766f19e90b5059ac6a718ca6dee42", size = 5251 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/38/ff60c8fc9e002d50d48822cc5095deb8ebbc5f91a6b8fdd9731c87a147c9/ratelimit-2.2.1.tar.gz", hash = "sha256:af8a9b64b821529aca09ebaf6d8d279100d766f19e90b5059ac6a718ca6dee42", size = 5251, upload_time = "2018-12-17T18:55:49.675Z" } [[package]] name = "referencing" @@ -2555,9 +2600,9 @@ dependencies = [ { name = "rpds-py" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload_time = "2025-01-25T08:48:16.138Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 }, + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload_time = "2025-01-25T08:48:14.241Z" }, ] [[package]] @@ -2570,9 +2615,26 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517 } +sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload_time = "2025-08-18T20:46:02.573Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738 }, + { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload_time = "2025-08-18T20:46:00.542Z" }, +] + +[[package]] +name = "requests-cache" +version = "1.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "cattrs" }, + { name = "platformdirs" }, + { name = "requests" }, + { name = "url-normalize" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/1a/be/7b2a95a9e7a7c3e774e43d067c51244e61dea8b120ae2deff7089a93fb2b/requests_cache-1.2.1.tar.gz", hash = "sha256:68abc986fdc5b8d0911318fbb5f7c80eebcd4d01bfacc6685ecf8876052511d1", size = 3018209, upload_time = "2024-06-18T17:18:03.774Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/2e/8f4051119f460cfc786aa91f212165bb6e643283b533db572d7b33952bd2/requests_cache-1.2.1-py3-none-any.whl", hash = "sha256:1285151cddf5331067baa82598afe2d47c7495a1334bfe7a7d329b43e9fd3603", size = 61425, upload_time = "2024-06-18T17:17:45Z" }, ] [[package]] @@ -2582,9 +2644,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/97/bf44e6c6bd8ddbb99943baf7ba8b1a8485bcd2fe0e55e5708d7fee4ff1ae/requests_file-2.1.0.tar.gz", hash = "sha256:0f549a3f3b0699415ac04d167e9cb39bccfb730cb832b4d20be3d9867356e658", size = 6891 } +sdist = { url = "https://files.pythonhosted.org/packages/72/97/bf44e6c6bd8ddbb99943baf7ba8b1a8485bcd2fe0e55e5708d7fee4ff1ae/requests_file-2.1.0.tar.gz", hash = "sha256:0f549a3f3b0699415ac04d167e9cb39bccfb730cb832b4d20be3d9867356e658", size = 6891, upload_time = "2024-05-21T16:28:00.24Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/25/dd878a121fcfdf38f52850f11c512e13ec87c2ea72385933818e5b6c15ce/requests_file-2.1.0-py2.py3-none-any.whl", hash = "sha256:cf270de5a4c5874e84599fc5778303d496c10ae5e870bfa378818f35d21bda5c", size = 4244 }, + { url = "https://files.pythonhosted.org/packages/d7/25/dd878a121fcfdf38f52850f11c512e13ec87c2ea72385933818e5b6c15ce/requests_file-2.1.0-py2.py3-none-any.whl", hash = "sha256:cf270de5a4c5874e84599fc5778303d496c10ae5e870bfa378818f35d21bda5c", size = 4244, upload_time = "2024-05-21T16:27:57.733Z" }, ] [[package]] @@ -2601,18 +2663,18 @@ dependencies = [ { name = "python-debian" }, { name = "tomlkit" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4b/f7/b59fe851b856d0932aedbf311a3d719f30783e27af6d05bb76d77072ab8f/reuse-5.1.1.tar.gz", hash = "sha256:a13914ed8b66b8e5956e96c63203c63d72b55280d348849ccc0eb314c73248cb", size = 419022 } +sdist = { url = "https://files.pythonhosted.org/packages/4b/f7/b59fe851b856d0932aedbf311a3d719f30783e27af6d05bb76d77072ab8f/reuse-5.1.1.tar.gz", hash = "sha256:a13914ed8b66b8e5956e96c63203c63d72b55280d348849ccc0eb314c73248cb", size = 419022, upload_time = "2025-09-05T14:50:01.049Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/95/12451ff8bc2c3e8a5755bc810a538de85444015d44353fc6f7ee8800c0bb/reuse-5.1.1-cp313-cp313-manylinux_2_41_x86_64.whl", hash = "sha256:15a68341949b7ddb3630d8d3a49d9537bbc143ee235dca77cc3f4047237c8299", size = 255386 }, + { url = "https://files.pythonhosted.org/packages/c9/95/12451ff8bc2c3e8a5755bc810a538de85444015d44353fc6f7ee8800c0bb/reuse-5.1.1-cp313-cp313-manylinux_2_41_x86_64.whl", hash = "sha256:15a68341949b7ddb3630d8d3a49d9537bbc143ee235dca77cc3f4047237c8299", size = 255386, upload_time = "2025-09-05T14:49:58.576Z" }, ] [[package]] name = "rfc3986" version = "2.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026 } +sdist = { url = "https://files.pythonhosted.org/packages/85/40/1520d68bfa07ab5a6f065a186815fb6610c86fe957bc065754e47f7b0840/rfc3986-2.0.0.tar.gz", hash = "sha256:97aacf9dbd4bfd829baad6e6309fa6573aaf1be3f6fa735c8ab05e46cecb261c", size = 49026, upload_time = "2022-01-10T00:52:30.832Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326 }, + { url = "https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl", hash = "sha256:50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd", size = 31326, upload_time = "2022-01-10T00:52:29.594Z" }, ] [[package]] @@ -2623,90 +2685,90 @@ dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fe/75/af448d8e52bf1d8fa6a9d089ca6c07ff4453d86c65c145d0a300bb073b9b/rich-14.1.0.tar.gz", hash = "sha256:e497a48b844b0320d45007cdebfeaeed8db2a4f4bcf49f15e455cfc4af11eaa8", size = 224441 } +sdist = { url = "https://files.pythonhosted.org/packages/fe/75/af448d8e52bf1d8fa6a9d089ca6c07ff4453d86c65c145d0a300bb073b9b/rich-14.1.0.tar.gz", hash = "sha256:e497a48b844b0320d45007cdebfeaeed8db2a4f4bcf49f15e455cfc4af11eaa8", size = 224441, upload_time = "2025-07-25T07:32:58.125Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e3/30/3c4d035596d3cf444529e0b2953ad0466f6049528a879d27534700580395/rich-14.1.0-py3-none-any.whl", hash = "sha256:536f5f1785986d6dbdea3c75205c473f970777b4a0d6c6dd1b696aa05a3fa04f", size = 243368 }, + { url = "https://files.pythonhosted.org/packages/e3/30/3c4d035596d3cf444529e0b2953ad0466f6049528a879d27534700580395/rich-14.1.0-py3-none-any.whl", hash = "sha256:536f5f1785986d6dbdea3c75205c473f970777b4a0d6c6dd1b696aa05a3fa04f", size = 243368, upload_time = "2025-07-25T07:32:56.73Z" }, ] [[package]] name = "rpds-py" version = "0.27.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e9/dd/2c0cbe774744272b0ae725f44032c77bdcab6e8bcf544bffa3b6e70c8dba/rpds_py-0.27.1.tar.gz", hash = "sha256:26a1c73171d10b7acccbded82bf6a586ab8203601e565badc74bbbf8bc5a10f8", size = 27479 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/fe/38de28dee5df58b8198c743fe2bea0c785c6d40941b9950bac4cdb71a014/rpds_py-0.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ae2775c1973e3c30316892737b91f9283f9908e3cc7625b9331271eaaed7dc90", size = 361887 }, - { url = "https://files.pythonhosted.org/packages/7c/9a/4b6c7eedc7dd90986bf0fab6ea2a091ec11c01b15f8ba0a14d3f80450468/rpds_py-0.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2643400120f55c8a96f7c9d858f7be0c88d383cd4653ae2cf0d0c88f668073e5", size = 345795 }, - { url = "https://files.pythonhosted.org/packages/6f/0e/e650e1b81922847a09cca820237b0edee69416a01268b7754d506ade11ad/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16323f674c089b0360674a4abd28d5042947d54ba620f72514d69be4ff64845e", size = 385121 }, - { url = "https://files.pythonhosted.org/packages/1b/ea/b306067a712988e2bff00dcc7c8f31d26c29b6d5931b461aa4b60a013e33/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a1f4814b65eacac94a00fc9a526e3fdafd78e439469644032032d0d63de4881", size = 398976 }, - { url = "https://files.pythonhosted.org/packages/2c/0a/26dc43c8840cb8fe239fe12dbc8d8de40f2365e838f3d395835dde72f0e5/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ba32c16b064267b22f1850a34051121d423b6f7338a12b9459550eb2096e7ec", size = 525953 }, - { url = "https://files.pythonhosted.org/packages/22/14/c85e8127b573aaf3a0cbd7fbb8c9c99e735a4a02180c84da2a463b766e9e/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5c20f33fd10485b80f65e800bbe5f6785af510b9f4056c5a3c612ebc83ba6cb", size = 407915 }, - { url = "https://files.pythonhosted.org/packages/ed/7b/8f4fee9ba1fb5ec856eb22d725a4efa3deb47f769597c809e03578b0f9d9/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:466bfe65bd932da36ff279ddd92de56b042f2266d752719beb97b08526268ec5", size = 386883 }, - { url = "https://files.pythonhosted.org/packages/86/47/28fa6d60f8b74fcdceba81b272f8d9836ac0340570f68f5df6b41838547b/rpds_py-0.27.1-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:41e532bbdcb57c92ba3be62c42e9f096431b4cf478da9bc3bc6ce5c38ab7ba7a", size = 405699 }, - { url = "https://files.pythonhosted.org/packages/d0/fd/c5987b5e054548df56953a21fe2ebed51fc1ec7c8f24fd41c067b68c4a0a/rpds_py-0.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f149826d742b406579466283769a8ea448eed82a789af0ed17b0cd5770433444", size = 423713 }, - { url = "https://files.pythonhosted.org/packages/ac/ba/3c4978b54a73ed19a7d74531be37a8bcc542d917c770e14d372b8daea186/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:80c60cfb5310677bd67cb1e85a1e8eb52e12529545441b43e6f14d90b878775a", size = 562324 }, - { url = "https://files.pythonhosted.org/packages/b5/6c/6943a91768fec16db09a42b08644b960cff540c66aab89b74be6d4a144ba/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7ee6521b9baf06085f62ba9c7a3e5becffbc32480d2f1b351559c001c38ce4c1", size = 593646 }, - { url = "https://files.pythonhosted.org/packages/11/73/9d7a8f4be5f4396f011a6bb7a19fe26303a0dac9064462f5651ced2f572f/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a512c8263249a9d68cac08b05dd59d2b3f2061d99b322813cbcc14c3c7421998", size = 558137 }, - { url = "https://files.pythonhosted.org/packages/6e/96/6772cbfa0e2485bcceef8071de7821f81aeac8bb45fbfd5542a3e8108165/rpds_py-0.27.1-cp312-cp312-win32.whl", hash = "sha256:819064fa048ba01b6dadc5116f3ac48610435ac9a0058bbde98e569f9e785c39", size = 221343 }, - { url = "https://files.pythonhosted.org/packages/67/b6/c82f0faa9af1c6a64669f73a17ee0eeef25aff30bb9a1c318509efe45d84/rpds_py-0.27.1-cp312-cp312-win_amd64.whl", hash = "sha256:d9199717881f13c32c4046a15f024971a3b78ad4ea029e8da6b86e5aa9cf4594", size = 232497 }, - { url = "https://files.pythonhosted.org/packages/e1/96/2817b44bd2ed11aebacc9251da03689d56109b9aba5e311297b6902136e2/rpds_py-0.27.1-cp312-cp312-win_arm64.whl", hash = "sha256:33aa65b97826a0e885ef6e278fbd934e98cdcfed80b63946025f01e2f5b29502", size = 222790 }, - { url = "https://files.pythonhosted.org/packages/cc/77/610aeee8d41e39080c7e14afa5387138e3c9fa9756ab893d09d99e7d8e98/rpds_py-0.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e4b9fcfbc021633863a37e92571d6f91851fa656f0180246e84cbd8b3f6b329b", size = 361741 }, - { url = "https://files.pythonhosted.org/packages/3a/fc/c43765f201c6a1c60be2043cbdb664013def52460a4c7adace89d6682bf4/rpds_py-0.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1441811a96eadca93c517d08df75de45e5ffe68aa3089924f963c782c4b898cf", size = 345574 }, - { url = "https://files.pythonhosted.org/packages/20/42/ee2b2ca114294cd9847d0ef9c26d2b0851b2e7e00bf14cc4c0b581df0fc3/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55266dafa22e672f5a4f65019015f90336ed31c6383bd53f5e7826d21a0e0b83", size = 385051 }, - { url = "https://files.pythonhosted.org/packages/fd/e8/1e430fe311e4799e02e2d1af7c765f024e95e17d651612425b226705f910/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d78827d7ac08627ea2c8e02c9e5b41180ea5ea1f747e9db0915e3adf36b62dcf", size = 398395 }, - { url = "https://files.pythonhosted.org/packages/82/95/9dc227d441ff2670651c27a739acb2535ccaf8b351a88d78c088965e5996/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae92443798a40a92dc5f0b01d8a7c93adde0c4dc965310a29ae7c64d72b9fad2", size = 524334 }, - { url = "https://files.pythonhosted.org/packages/87/01/a670c232f401d9ad461d9a332aa4080cd3cb1d1df18213dbd0d2a6a7ab51/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c46c9dd2403b66a2a3b9720ec4b74d4ab49d4fabf9f03dfdce2d42af913fe8d0", size = 407691 }, - { url = "https://files.pythonhosted.org/packages/03/36/0a14aebbaa26fe7fab4780c76f2239e76cc95a0090bdb25e31d95c492fcd/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2efe4eb1d01b7f5f1939f4ef30ecea6c6b3521eec451fb93191bf84b2a522418", size = 386868 }, - { url = "https://files.pythonhosted.org/packages/3b/03/8c897fb8b5347ff6c1cc31239b9611c5bf79d78c984430887a353e1409a1/rpds_py-0.27.1-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:15d3b4d83582d10c601f481eca29c3f138d44c92187d197aff663a269197c02d", size = 405469 }, - { url = "https://files.pythonhosted.org/packages/da/07/88c60edc2df74850d496d78a1fdcdc7b54360a7f610a4d50008309d41b94/rpds_py-0.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4ed2e16abbc982a169d30d1a420274a709949e2cbdef119fe2ec9d870b42f274", size = 422125 }, - { url = "https://files.pythonhosted.org/packages/6b/86/5f4c707603e41b05f191a749984f390dabcbc467cf833769b47bf14ba04f/rpds_py-0.27.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a75f305c9b013289121ec0f1181931975df78738cdf650093e6b86d74aa7d8dd", size = 562341 }, - { url = "https://files.pythonhosted.org/packages/b2/92/3c0cb2492094e3cd9baf9e49bbb7befeceb584ea0c1a8b5939dca4da12e5/rpds_py-0.27.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:67ce7620704745881a3d4b0ada80ab4d99df390838839921f99e63c474f82cf2", size = 592511 }, - { url = "https://files.pythonhosted.org/packages/10/bb/82e64fbb0047c46a168faa28d0d45a7851cd0582f850b966811d30f67ad8/rpds_py-0.27.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d992ac10eb86d9b6f369647b6a3f412fc0075cfd5d799530e84d335e440a002", size = 557736 }, - { url = "https://files.pythonhosted.org/packages/00/95/3c863973d409210da7fb41958172c6b7dbe7fc34e04d3cc1f10bb85e979f/rpds_py-0.27.1-cp313-cp313-win32.whl", hash = "sha256:4f75e4bd8ab8db624e02c8e2fc4063021b58becdbe6df793a8111d9343aec1e3", size = 221462 }, - { url = "https://files.pythonhosted.org/packages/ce/2c/5867b14a81dc217b56d95a9f2a40fdbc56a1ab0181b80132beeecbd4b2d6/rpds_py-0.27.1-cp313-cp313-win_amd64.whl", hash = "sha256:f9025faafc62ed0b75a53e541895ca272815bec18abe2249ff6501c8f2e12b83", size = 232034 }, - { url = "https://files.pythonhosted.org/packages/c7/78/3958f3f018c01923823f1e47f1cc338e398814b92d83cd278364446fac66/rpds_py-0.27.1-cp313-cp313-win_arm64.whl", hash = "sha256:ed10dc32829e7d222b7d3b93136d25a406ba9788f6a7ebf6809092da1f4d279d", size = 222392 }, - { url = "https://files.pythonhosted.org/packages/01/76/1cdf1f91aed5c3a7bf2eba1f1c4e4d6f57832d73003919a20118870ea659/rpds_py-0.27.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:92022bbbad0d4426e616815b16bc4127f83c9a74940e1ccf3cfe0b387aba0228", size = 358355 }, - { url = "https://files.pythonhosted.org/packages/c3/6f/bf142541229374287604caf3bb2a4ae17f0a580798fd72d3b009b532db4e/rpds_py-0.27.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:47162fdab9407ec3f160805ac3e154df042e577dd53341745fc7fb3f625e6d92", size = 342138 }, - { url = "https://files.pythonhosted.org/packages/1a/77/355b1c041d6be40886c44ff5e798b4e2769e497b790f0f7fd1e78d17e9a8/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb89bec23fddc489e5d78b550a7b773557c9ab58b7946154a10a6f7a214a48b2", size = 380247 }, - { url = "https://files.pythonhosted.org/packages/d6/a4/d9cef5c3946ea271ce2243c51481971cd6e34f21925af2783dd17b26e815/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e48af21883ded2b3e9eb48cb7880ad8598b31ab752ff3be6457001d78f416723", size = 390699 }, - { url = "https://files.pythonhosted.org/packages/3a/06/005106a7b8c6c1a7e91b73169e49870f4af5256119d34a361ae5240a0c1d/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6f5b7bd8e219ed50299e58551a410b64daafb5017d54bbe822e003856f06a802", size = 521852 }, - { url = "https://files.pythonhosted.org/packages/e5/3e/50fb1dac0948e17a02eb05c24510a8fe12d5ce8561c6b7b7d1339ab7ab9c/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08f1e20bccf73b08d12d804d6e1c22ca5530e71659e6673bce31a6bb71c1e73f", size = 402582 }, - { url = "https://files.pythonhosted.org/packages/cb/b0/f4e224090dc5b0ec15f31a02d746ab24101dd430847c4d99123798661bfc/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dc5dceeaefcc96dc192e3a80bbe1d6c410c469e97bdd47494a7d930987f18b2", size = 384126 }, - { url = "https://files.pythonhosted.org/packages/54/77/ac339d5f82b6afff1df8f0fe0d2145cc827992cb5f8eeb90fc9f31ef7a63/rpds_py-0.27.1-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:d76f9cc8665acdc0c9177043746775aa7babbf479b5520b78ae4002d889f5c21", size = 399486 }, - { url = "https://files.pythonhosted.org/packages/d6/29/3e1c255eee6ac358c056a57d6d6869baa00a62fa32eea5ee0632039c50a3/rpds_py-0.27.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:134fae0e36022edad8290a6661edf40c023562964efea0cc0ec7f5d392d2aaef", size = 414832 }, - { url = "https://files.pythonhosted.org/packages/3f/db/6d498b844342deb3fa1d030598db93937a9964fcf5cb4da4feb5f17be34b/rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb11a4f1b2b63337cfd3b4d110af778a59aae51c81d195768e353d8b52f88081", size = 557249 }, - { url = "https://files.pythonhosted.org/packages/60/f3/690dd38e2310b6f68858a331399b4d6dbb9132c3e8ef8b4333b96caf403d/rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:13e608ac9f50a0ed4faec0e90ece76ae33b34c0e8656e3dceb9a7db994c692cd", size = 587356 }, - { url = "https://files.pythonhosted.org/packages/86/e3/84507781cccd0145f35b1dc32c72675200c5ce8d5b30f813e49424ef68fc/rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dd2135527aa40f061350c3f8f89da2644de26cd73e4de458e79606384f4f68e7", size = 555300 }, - { url = "https://files.pythonhosted.org/packages/e5/ee/375469849e6b429b3516206b4580a79e9ef3eb12920ddbd4492b56eaacbe/rpds_py-0.27.1-cp313-cp313t-win32.whl", hash = "sha256:3020724ade63fe320a972e2ffd93b5623227e684315adce194941167fee02688", size = 216714 }, - { url = "https://files.pythonhosted.org/packages/21/87/3fc94e47c9bd0742660e84706c311a860dcae4374cf4a03c477e23ce605a/rpds_py-0.27.1-cp313-cp313t-win_amd64.whl", hash = "sha256:8ee50c3e41739886606388ba3ab3ee2aae9f35fb23f833091833255a31740797", size = 228943 }, - { url = "https://files.pythonhosted.org/packages/70/36/b6e6066520a07cf029d385de869729a895917b411e777ab1cde878100a1d/rpds_py-0.27.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:acb9aafccaae278f449d9c713b64a9e68662e7799dbd5859e2c6b3c67b56d334", size = 362472 }, - { url = "https://files.pythonhosted.org/packages/af/07/b4646032e0dcec0df9c73a3bd52f63bc6c5f9cda992f06bd0e73fe3fbebd/rpds_py-0.27.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:b7fb801aa7f845ddf601c49630deeeccde7ce10065561d92729bfe81bd21fb33", size = 345676 }, - { url = "https://files.pythonhosted.org/packages/b0/16/2f1003ee5d0af4bcb13c0cf894957984c32a6751ed7206db2aee7379a55e/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe0dd05afb46597b9a2e11c351e5e4283c741237e7f617ffb3252780cca9336a", size = 385313 }, - { url = "https://files.pythonhosted.org/packages/05/cd/7eb6dd7b232e7f2654d03fa07f1414d7dfc980e82ba71e40a7c46fd95484/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b6dfb0e058adb12d8b1d1b25f686e94ffa65d9995a5157afe99743bf7369d62b", size = 399080 }, - { url = "https://files.pythonhosted.org/packages/20/51/5829afd5000ec1cb60f304711f02572d619040aa3ec033d8226817d1e571/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed090ccd235f6fa8bb5861684567f0a83e04f52dfc2e5c05f2e4b1309fcf85e7", size = 523868 }, - { url = "https://files.pythonhosted.org/packages/05/2c/30eebca20d5db95720ab4d2faec1b5e4c1025c473f703738c371241476a2/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf876e79763eecf3e7356f157540d6a093cef395b65514f17a356f62af6cc136", size = 408750 }, - { url = "https://files.pythonhosted.org/packages/90/1a/cdb5083f043597c4d4276eae4e4c70c55ab5accec078da8611f24575a367/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12ed005216a51b1d6e2b02a7bd31885fe317e45897de81d86dcce7d74618ffff", size = 387688 }, - { url = "https://files.pythonhosted.org/packages/7c/92/cf786a15320e173f945d205ab31585cc43969743bb1a48b6888f7a2b0a2d/rpds_py-0.27.1-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:ee4308f409a40e50593c7e3bb8cbe0b4d4c66d1674a316324f0c2f5383b486f9", size = 407225 }, - { url = "https://files.pythonhosted.org/packages/33/5c/85ee16df5b65063ef26017bef33096557a4c83fbe56218ac7cd8c235f16d/rpds_py-0.27.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0b08d152555acf1f455154d498ca855618c1378ec810646fcd7c76416ac6dc60", size = 423361 }, - { url = "https://files.pythonhosted.org/packages/4b/8e/1c2741307fcabd1a334ecf008e92c4f47bb6f848712cf15c923becfe82bb/rpds_py-0.27.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:dce51c828941973a5684d458214d3a36fcd28da3e1875d659388f4f9f12cc33e", size = 562493 }, - { url = "https://files.pythonhosted.org/packages/04/03/5159321baae9b2222442a70c1f988cbbd66b9be0675dd3936461269be360/rpds_py-0.27.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:c1476d6f29eb81aa4151c9a31219b03f1f798dc43d8af1250a870735516a1212", size = 592623 }, - { url = "https://files.pythonhosted.org/packages/ff/39/c09fd1ad28b85bc1d4554a8710233c9f4cefd03d7717a1b8fbfd171d1167/rpds_py-0.27.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:3ce0cac322b0d69b63c9cdb895ee1b65805ec9ffad37639f291dd79467bee675", size = 558800 }, - { url = "https://files.pythonhosted.org/packages/c5/d6/99228e6bbcf4baa764b18258f519a9035131d91b538d4e0e294313462a98/rpds_py-0.27.1-cp314-cp314-win32.whl", hash = "sha256:dfbfac137d2a3d0725758cd141f878bf4329ba25e34979797c89474a89a8a3a3", size = 221943 }, - { url = "https://files.pythonhosted.org/packages/be/07/c802bc6b8e95be83b79bdf23d1aa61d68324cb1006e245d6c58e959e314d/rpds_py-0.27.1-cp314-cp314-win_amd64.whl", hash = "sha256:a6e57b0abfe7cc513450fcf529eb486b6e4d3f8aee83e92eb5f1ef848218d456", size = 233739 }, - { url = "https://files.pythonhosted.org/packages/c8/89/3e1b1c16d4c2d547c5717377a8df99aee8099ff050f87c45cb4d5fa70891/rpds_py-0.27.1-cp314-cp314-win_arm64.whl", hash = "sha256:faf8d146f3d476abfee026c4ae3bdd9ca14236ae4e4c310cbd1cf75ba33d24a3", size = 223120 }, - { url = "https://files.pythonhosted.org/packages/62/7e/dc7931dc2fa4a6e46b2a4fa744a9fe5c548efd70e0ba74f40b39fa4a8c10/rpds_py-0.27.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:ba81d2b56b6d4911ce735aad0a1d4495e808b8ee4dc58715998741a26874e7c2", size = 358944 }, - { url = "https://files.pythonhosted.org/packages/e6/22/4af76ac4e9f336bfb1a5f240d18a33c6b2fcaadb7472ac7680576512b49a/rpds_py-0.27.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:84f7d509870098de0e864cad0102711c1e24e9b1a50ee713b65928adb22269e4", size = 342283 }, - { url = "https://files.pythonhosted.org/packages/1c/15/2a7c619b3c2272ea9feb9ade67a45c40b3eeb500d503ad4c28c395dc51b4/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9e960fc78fecd1100539f14132425e1d5fe44ecb9239f8f27f079962021523e", size = 380320 }, - { url = "https://files.pythonhosted.org/packages/a2/7d/4c6d243ba4a3057e994bb5bedd01b5c963c12fe38dde707a52acdb3849e7/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:62f85b665cedab1a503747617393573995dac4600ff51869d69ad2f39eb5e817", size = 391760 }, - { url = "https://files.pythonhosted.org/packages/b4/71/b19401a909b83bcd67f90221330bc1ef11bc486fe4e04c24388d28a618ae/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fed467af29776f6556250c9ed85ea5a4dd121ab56a5f8b206e3e7a4c551e48ec", size = 522476 }, - { url = "https://files.pythonhosted.org/packages/e4/44/1a3b9715c0455d2e2f0f6df5ee6d6f5afdc423d0773a8a682ed2b43c566c/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2729615f9d430af0ae6b36cf042cb55c0936408d543fb691e1a9e36648fd35a", size = 403418 }, - { url = "https://files.pythonhosted.org/packages/1c/4b/fb6c4f14984eb56673bc868a66536f53417ddb13ed44b391998100a06a96/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b207d881a9aef7ba753d69c123a35d96ca7cb808056998f6b9e8747321f03b8", size = 384771 }, - { url = "https://files.pythonhosted.org/packages/c0/56/d5265d2d28b7420d7b4d4d85cad8ef891760f5135102e60d5c970b976e41/rpds_py-0.27.1-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:639fd5efec029f99b79ae47e5d7e00ad8a773da899b6309f6786ecaf22948c48", size = 400022 }, - { url = "https://files.pythonhosted.org/packages/8f/e9/9f5fc70164a569bdd6ed9046486c3568d6926e3a49bdefeeccfb18655875/rpds_py-0.27.1-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fecc80cb2a90e28af8a9b366edacf33d7a91cbfe4c2c4544ea1246e949cfebeb", size = 416787 }, - { url = "https://files.pythonhosted.org/packages/d4/64/56dd03430ba491db943a81dcdef115a985aac5f44f565cd39a00c766d45c/rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42a89282d711711d0a62d6f57d81aa43a1368686c45bc1c46b7f079d55692734", size = 557538 }, - { url = "https://files.pythonhosted.org/packages/3f/36/92cc885a3129993b1d963a2a42ecf64e6a8e129d2c7cc980dbeba84e55fb/rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:cf9931f14223de59551ab9d38ed18d92f14f055a5f78c1d8ad6493f735021bbb", size = 588512 }, - { url = "https://files.pythonhosted.org/packages/dd/10/6b283707780a81919f71625351182b4f98932ac89a09023cb61865136244/rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f39f58a27cc6e59f432b568ed8429c7e1641324fbe38131de852cd77b2d534b0", size = 555813 }, - { url = "https://files.pythonhosted.org/packages/04/2e/30b5ea18c01379da6272a92825dd7e53dc9d15c88a19e97932d35d430ef7/rpds_py-0.27.1-cp314-cp314t-win32.whl", hash = "sha256:d5fa0ee122dc09e23607a28e6d7b150da16c662e66409bbe85230e4c85bb528a", size = 217385 }, - { url = "https://files.pythonhosted.org/packages/32/7d/97119da51cb1dd3f2f3c0805f155a3aa4a95fa44fe7d78ae15e69edf4f34/rpds_py-0.27.1-cp314-cp314t-win_amd64.whl", hash = "sha256:6567d2bb951e21232c2f660c24cf3470bb96de56cdcb3f071a83feeaff8a2772", size = 230097 }, +sdist = { url = "https://files.pythonhosted.org/packages/e9/dd/2c0cbe774744272b0ae725f44032c77bdcab6e8bcf544bffa3b6e70c8dba/rpds_py-0.27.1.tar.gz", hash = "sha256:26a1c73171d10b7acccbded82bf6a586ab8203601e565badc74bbbf8bc5a10f8", size = 27479, upload_time = "2025-08-27T12:16:36.024Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/fe/38de28dee5df58b8198c743fe2bea0c785c6d40941b9950bac4cdb71a014/rpds_py-0.27.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:ae2775c1973e3c30316892737b91f9283f9908e3cc7625b9331271eaaed7dc90", size = 361887, upload_time = "2025-08-27T12:13:10.233Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9a/4b6c7eedc7dd90986bf0fab6ea2a091ec11c01b15f8ba0a14d3f80450468/rpds_py-0.27.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2643400120f55c8a96f7c9d858f7be0c88d383cd4653ae2cf0d0c88f668073e5", size = 345795, upload_time = "2025-08-27T12:13:11.65Z" }, + { url = "https://files.pythonhosted.org/packages/6f/0e/e650e1b81922847a09cca820237b0edee69416a01268b7754d506ade11ad/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16323f674c089b0360674a4abd28d5042947d54ba620f72514d69be4ff64845e", size = 385121, upload_time = "2025-08-27T12:13:13.008Z" }, + { url = "https://files.pythonhosted.org/packages/1b/ea/b306067a712988e2bff00dcc7c8f31d26c29b6d5931b461aa4b60a013e33/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9a1f4814b65eacac94a00fc9a526e3fdafd78e439469644032032d0d63de4881", size = 398976, upload_time = "2025-08-27T12:13:14.368Z" }, + { url = "https://files.pythonhosted.org/packages/2c/0a/26dc43c8840cb8fe239fe12dbc8d8de40f2365e838f3d395835dde72f0e5/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7ba32c16b064267b22f1850a34051121d423b6f7338a12b9459550eb2096e7ec", size = 525953, upload_time = "2025-08-27T12:13:15.774Z" }, + { url = "https://files.pythonhosted.org/packages/22/14/c85e8127b573aaf3a0cbd7fbb8c9c99e735a4a02180c84da2a463b766e9e/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e5c20f33fd10485b80f65e800bbe5f6785af510b9f4056c5a3c612ebc83ba6cb", size = 407915, upload_time = "2025-08-27T12:13:17.379Z" }, + { url = "https://files.pythonhosted.org/packages/ed/7b/8f4fee9ba1fb5ec856eb22d725a4efa3deb47f769597c809e03578b0f9d9/rpds_py-0.27.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:466bfe65bd932da36ff279ddd92de56b042f2266d752719beb97b08526268ec5", size = 386883, upload_time = "2025-08-27T12:13:18.704Z" }, + { url = "https://files.pythonhosted.org/packages/86/47/28fa6d60f8b74fcdceba81b272f8d9836ac0340570f68f5df6b41838547b/rpds_py-0.27.1-cp312-cp312-manylinux_2_31_riscv64.whl", hash = "sha256:41e532bbdcb57c92ba3be62c42e9f096431b4cf478da9bc3bc6ce5c38ab7ba7a", size = 405699, upload_time = "2025-08-27T12:13:20.089Z" }, + { url = "https://files.pythonhosted.org/packages/d0/fd/c5987b5e054548df56953a21fe2ebed51fc1ec7c8f24fd41c067b68c4a0a/rpds_py-0.27.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f149826d742b406579466283769a8ea448eed82a789af0ed17b0cd5770433444", size = 423713, upload_time = "2025-08-27T12:13:21.436Z" }, + { url = "https://files.pythonhosted.org/packages/ac/ba/3c4978b54a73ed19a7d74531be37a8bcc542d917c770e14d372b8daea186/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:80c60cfb5310677bd67cb1e85a1e8eb52e12529545441b43e6f14d90b878775a", size = 562324, upload_time = "2025-08-27T12:13:22.789Z" }, + { url = "https://files.pythonhosted.org/packages/b5/6c/6943a91768fec16db09a42b08644b960cff540c66aab89b74be6d4a144ba/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7ee6521b9baf06085f62ba9c7a3e5becffbc32480d2f1b351559c001c38ce4c1", size = 593646, upload_time = "2025-08-27T12:13:24.122Z" }, + { url = "https://files.pythonhosted.org/packages/11/73/9d7a8f4be5f4396f011a6bb7a19fe26303a0dac9064462f5651ced2f572f/rpds_py-0.27.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a512c8263249a9d68cac08b05dd59d2b3f2061d99b322813cbcc14c3c7421998", size = 558137, upload_time = "2025-08-27T12:13:25.557Z" }, + { url = "https://files.pythonhosted.org/packages/6e/96/6772cbfa0e2485bcceef8071de7821f81aeac8bb45fbfd5542a3e8108165/rpds_py-0.27.1-cp312-cp312-win32.whl", hash = "sha256:819064fa048ba01b6dadc5116f3ac48610435ac9a0058bbde98e569f9e785c39", size = 221343, upload_time = "2025-08-27T12:13:26.967Z" }, + { url = "https://files.pythonhosted.org/packages/67/b6/c82f0faa9af1c6a64669f73a17ee0eeef25aff30bb9a1c318509efe45d84/rpds_py-0.27.1-cp312-cp312-win_amd64.whl", hash = "sha256:d9199717881f13c32c4046a15f024971a3b78ad4ea029e8da6b86e5aa9cf4594", size = 232497, upload_time = "2025-08-27T12:13:28.326Z" }, + { url = "https://files.pythonhosted.org/packages/e1/96/2817b44bd2ed11aebacc9251da03689d56109b9aba5e311297b6902136e2/rpds_py-0.27.1-cp312-cp312-win_arm64.whl", hash = "sha256:33aa65b97826a0e885ef6e278fbd934e98cdcfed80b63946025f01e2f5b29502", size = 222790, upload_time = "2025-08-27T12:13:29.71Z" }, + { url = "https://files.pythonhosted.org/packages/cc/77/610aeee8d41e39080c7e14afa5387138e3c9fa9756ab893d09d99e7d8e98/rpds_py-0.27.1-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:e4b9fcfbc021633863a37e92571d6f91851fa656f0180246e84cbd8b3f6b329b", size = 361741, upload_time = "2025-08-27T12:13:31.039Z" }, + { url = "https://files.pythonhosted.org/packages/3a/fc/c43765f201c6a1c60be2043cbdb664013def52460a4c7adace89d6682bf4/rpds_py-0.27.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1441811a96eadca93c517d08df75de45e5ffe68aa3089924f963c782c4b898cf", size = 345574, upload_time = "2025-08-27T12:13:32.902Z" }, + { url = "https://files.pythonhosted.org/packages/20/42/ee2b2ca114294cd9847d0ef9c26d2b0851b2e7e00bf14cc4c0b581df0fc3/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55266dafa22e672f5a4f65019015f90336ed31c6383bd53f5e7826d21a0e0b83", size = 385051, upload_time = "2025-08-27T12:13:34.228Z" }, + { url = "https://files.pythonhosted.org/packages/fd/e8/1e430fe311e4799e02e2d1af7c765f024e95e17d651612425b226705f910/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:d78827d7ac08627ea2c8e02c9e5b41180ea5ea1f747e9db0915e3adf36b62dcf", size = 398395, upload_time = "2025-08-27T12:13:36.132Z" }, + { url = "https://files.pythonhosted.org/packages/82/95/9dc227d441ff2670651c27a739acb2535ccaf8b351a88d78c088965e5996/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ae92443798a40a92dc5f0b01d8a7c93adde0c4dc965310a29ae7c64d72b9fad2", size = 524334, upload_time = "2025-08-27T12:13:37.562Z" }, + { url = "https://files.pythonhosted.org/packages/87/01/a670c232f401d9ad461d9a332aa4080cd3cb1d1df18213dbd0d2a6a7ab51/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c46c9dd2403b66a2a3b9720ec4b74d4ab49d4fabf9f03dfdce2d42af913fe8d0", size = 407691, upload_time = "2025-08-27T12:13:38.94Z" }, + { url = "https://files.pythonhosted.org/packages/03/36/0a14aebbaa26fe7fab4780c76f2239e76cc95a0090bdb25e31d95c492fcd/rpds_py-0.27.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2efe4eb1d01b7f5f1939f4ef30ecea6c6b3521eec451fb93191bf84b2a522418", size = 386868, upload_time = "2025-08-27T12:13:40.192Z" }, + { url = "https://files.pythonhosted.org/packages/3b/03/8c897fb8b5347ff6c1cc31239b9611c5bf79d78c984430887a353e1409a1/rpds_py-0.27.1-cp313-cp313-manylinux_2_31_riscv64.whl", hash = "sha256:15d3b4d83582d10c601f481eca29c3f138d44c92187d197aff663a269197c02d", size = 405469, upload_time = "2025-08-27T12:13:41.496Z" }, + { url = "https://files.pythonhosted.org/packages/da/07/88c60edc2df74850d496d78a1fdcdc7b54360a7f610a4d50008309d41b94/rpds_py-0.27.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:4ed2e16abbc982a169d30d1a420274a709949e2cbdef119fe2ec9d870b42f274", size = 422125, upload_time = "2025-08-27T12:13:42.802Z" }, + { url = "https://files.pythonhosted.org/packages/6b/86/5f4c707603e41b05f191a749984f390dabcbc467cf833769b47bf14ba04f/rpds_py-0.27.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a75f305c9b013289121ec0f1181931975df78738cdf650093e6b86d74aa7d8dd", size = 562341, upload_time = "2025-08-27T12:13:44.472Z" }, + { url = "https://files.pythonhosted.org/packages/b2/92/3c0cb2492094e3cd9baf9e49bbb7befeceb584ea0c1a8b5939dca4da12e5/rpds_py-0.27.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:67ce7620704745881a3d4b0ada80ab4d99df390838839921f99e63c474f82cf2", size = 592511, upload_time = "2025-08-27T12:13:45.898Z" }, + { url = "https://files.pythonhosted.org/packages/10/bb/82e64fbb0047c46a168faa28d0d45a7851cd0582f850b966811d30f67ad8/rpds_py-0.27.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d992ac10eb86d9b6f369647b6a3f412fc0075cfd5d799530e84d335e440a002", size = 557736, upload_time = "2025-08-27T12:13:47.408Z" }, + { url = "https://files.pythonhosted.org/packages/00/95/3c863973d409210da7fb41958172c6b7dbe7fc34e04d3cc1f10bb85e979f/rpds_py-0.27.1-cp313-cp313-win32.whl", hash = "sha256:4f75e4bd8ab8db624e02c8e2fc4063021b58becdbe6df793a8111d9343aec1e3", size = 221462, upload_time = "2025-08-27T12:13:48.742Z" }, + { url = "https://files.pythonhosted.org/packages/ce/2c/5867b14a81dc217b56d95a9f2a40fdbc56a1ab0181b80132beeecbd4b2d6/rpds_py-0.27.1-cp313-cp313-win_amd64.whl", hash = "sha256:f9025faafc62ed0b75a53e541895ca272815bec18abe2249ff6501c8f2e12b83", size = 232034, upload_time = "2025-08-27T12:13:50.11Z" }, + { url = "https://files.pythonhosted.org/packages/c7/78/3958f3f018c01923823f1e47f1cc338e398814b92d83cd278364446fac66/rpds_py-0.27.1-cp313-cp313-win_arm64.whl", hash = "sha256:ed10dc32829e7d222b7d3b93136d25a406ba9788f6a7ebf6809092da1f4d279d", size = 222392, upload_time = "2025-08-27T12:13:52.587Z" }, + { url = "https://files.pythonhosted.org/packages/01/76/1cdf1f91aed5c3a7bf2eba1f1c4e4d6f57832d73003919a20118870ea659/rpds_py-0.27.1-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:92022bbbad0d4426e616815b16bc4127f83c9a74940e1ccf3cfe0b387aba0228", size = 358355, upload_time = "2025-08-27T12:13:54.012Z" }, + { url = "https://files.pythonhosted.org/packages/c3/6f/bf142541229374287604caf3bb2a4ae17f0a580798fd72d3b009b532db4e/rpds_py-0.27.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:47162fdab9407ec3f160805ac3e154df042e577dd53341745fc7fb3f625e6d92", size = 342138, upload_time = "2025-08-27T12:13:55.791Z" }, + { url = "https://files.pythonhosted.org/packages/1a/77/355b1c041d6be40886c44ff5e798b4e2769e497b790f0f7fd1e78d17e9a8/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fb89bec23fddc489e5d78b550a7b773557c9ab58b7946154a10a6f7a214a48b2", size = 380247, upload_time = "2025-08-27T12:13:57.683Z" }, + { url = "https://files.pythonhosted.org/packages/d6/a4/d9cef5c3946ea271ce2243c51481971cd6e34f21925af2783dd17b26e815/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e48af21883ded2b3e9eb48cb7880ad8598b31ab752ff3be6457001d78f416723", size = 390699, upload_time = "2025-08-27T12:13:59.137Z" }, + { url = "https://files.pythonhosted.org/packages/3a/06/005106a7b8c6c1a7e91b73169e49870f4af5256119d34a361ae5240a0c1d/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:6f5b7bd8e219ed50299e58551a410b64daafb5017d54bbe822e003856f06a802", size = 521852, upload_time = "2025-08-27T12:14:00.583Z" }, + { url = "https://files.pythonhosted.org/packages/e5/3e/50fb1dac0948e17a02eb05c24510a8fe12d5ce8561c6b7b7d1339ab7ab9c/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08f1e20bccf73b08d12d804d6e1c22ca5530e71659e6673bce31a6bb71c1e73f", size = 402582, upload_time = "2025-08-27T12:14:02.034Z" }, + { url = "https://files.pythonhosted.org/packages/cb/b0/f4e224090dc5b0ec15f31a02d746ab24101dd430847c4d99123798661bfc/rpds_py-0.27.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0dc5dceeaefcc96dc192e3a80bbe1d6c410c469e97bdd47494a7d930987f18b2", size = 384126, upload_time = "2025-08-27T12:14:03.437Z" }, + { url = "https://files.pythonhosted.org/packages/54/77/ac339d5f82b6afff1df8f0fe0d2145cc827992cb5f8eeb90fc9f31ef7a63/rpds_py-0.27.1-cp313-cp313t-manylinux_2_31_riscv64.whl", hash = "sha256:d76f9cc8665acdc0c9177043746775aa7babbf479b5520b78ae4002d889f5c21", size = 399486, upload_time = "2025-08-27T12:14:05.443Z" }, + { url = "https://files.pythonhosted.org/packages/d6/29/3e1c255eee6ac358c056a57d6d6869baa00a62fa32eea5ee0632039c50a3/rpds_py-0.27.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:134fae0e36022edad8290a6661edf40c023562964efea0cc0ec7f5d392d2aaef", size = 414832, upload_time = "2025-08-27T12:14:06.902Z" }, + { url = "https://files.pythonhosted.org/packages/3f/db/6d498b844342deb3fa1d030598db93937a9964fcf5cb4da4feb5f17be34b/rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:eb11a4f1b2b63337cfd3b4d110af778a59aae51c81d195768e353d8b52f88081", size = 557249, upload_time = "2025-08-27T12:14:08.37Z" }, + { url = "https://files.pythonhosted.org/packages/60/f3/690dd38e2310b6f68858a331399b4d6dbb9132c3e8ef8b4333b96caf403d/rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:13e608ac9f50a0ed4faec0e90ece76ae33b34c0e8656e3dceb9a7db994c692cd", size = 587356, upload_time = "2025-08-27T12:14:10.034Z" }, + { url = "https://files.pythonhosted.org/packages/86/e3/84507781cccd0145f35b1dc32c72675200c5ce8d5b30f813e49424ef68fc/rpds_py-0.27.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:dd2135527aa40f061350c3f8f89da2644de26cd73e4de458e79606384f4f68e7", size = 555300, upload_time = "2025-08-27T12:14:11.783Z" }, + { url = "https://files.pythonhosted.org/packages/e5/ee/375469849e6b429b3516206b4580a79e9ef3eb12920ddbd4492b56eaacbe/rpds_py-0.27.1-cp313-cp313t-win32.whl", hash = "sha256:3020724ade63fe320a972e2ffd93b5623227e684315adce194941167fee02688", size = 216714, upload_time = "2025-08-27T12:14:13.629Z" }, + { url = "https://files.pythonhosted.org/packages/21/87/3fc94e47c9bd0742660e84706c311a860dcae4374cf4a03c477e23ce605a/rpds_py-0.27.1-cp313-cp313t-win_amd64.whl", hash = "sha256:8ee50c3e41739886606388ba3ab3ee2aae9f35fb23f833091833255a31740797", size = 228943, upload_time = "2025-08-27T12:14:14.937Z" }, + { url = "https://files.pythonhosted.org/packages/70/36/b6e6066520a07cf029d385de869729a895917b411e777ab1cde878100a1d/rpds_py-0.27.1-cp314-cp314-macosx_10_12_x86_64.whl", hash = "sha256:acb9aafccaae278f449d9c713b64a9e68662e7799dbd5859e2c6b3c67b56d334", size = 362472, upload_time = "2025-08-27T12:14:16.333Z" }, + { url = "https://files.pythonhosted.org/packages/af/07/b4646032e0dcec0df9c73a3bd52f63bc6c5f9cda992f06bd0e73fe3fbebd/rpds_py-0.27.1-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:b7fb801aa7f845ddf601c49630deeeccde7ce10065561d92729bfe81bd21fb33", size = 345676, upload_time = "2025-08-27T12:14:17.764Z" }, + { url = "https://files.pythonhosted.org/packages/b0/16/2f1003ee5d0af4bcb13c0cf894957984c32a6751ed7206db2aee7379a55e/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fe0dd05afb46597b9a2e11c351e5e4283c741237e7f617ffb3252780cca9336a", size = 385313, upload_time = "2025-08-27T12:14:19.829Z" }, + { url = "https://files.pythonhosted.org/packages/05/cd/7eb6dd7b232e7f2654d03fa07f1414d7dfc980e82ba71e40a7c46fd95484/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:b6dfb0e058adb12d8b1d1b25f686e94ffa65d9995a5157afe99743bf7369d62b", size = 399080, upload_time = "2025-08-27T12:14:21.531Z" }, + { url = "https://files.pythonhosted.org/packages/20/51/5829afd5000ec1cb60f304711f02572d619040aa3ec033d8226817d1e571/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed090ccd235f6fa8bb5861684567f0a83e04f52dfc2e5c05f2e4b1309fcf85e7", size = 523868, upload_time = "2025-08-27T12:14:23.485Z" }, + { url = "https://files.pythonhosted.org/packages/05/2c/30eebca20d5db95720ab4d2faec1b5e4c1025c473f703738c371241476a2/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bf876e79763eecf3e7356f157540d6a093cef395b65514f17a356f62af6cc136", size = 408750, upload_time = "2025-08-27T12:14:24.924Z" }, + { url = "https://files.pythonhosted.org/packages/90/1a/cdb5083f043597c4d4276eae4e4c70c55ab5accec078da8611f24575a367/rpds_py-0.27.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:12ed005216a51b1d6e2b02a7bd31885fe317e45897de81d86dcce7d74618ffff", size = 387688, upload_time = "2025-08-27T12:14:27.537Z" }, + { url = "https://files.pythonhosted.org/packages/7c/92/cf786a15320e173f945d205ab31585cc43969743bb1a48b6888f7a2b0a2d/rpds_py-0.27.1-cp314-cp314-manylinux_2_31_riscv64.whl", hash = "sha256:ee4308f409a40e50593c7e3bb8cbe0b4d4c66d1674a316324f0c2f5383b486f9", size = 407225, upload_time = "2025-08-27T12:14:28.981Z" }, + { url = "https://files.pythonhosted.org/packages/33/5c/85ee16df5b65063ef26017bef33096557a4c83fbe56218ac7cd8c235f16d/rpds_py-0.27.1-cp314-cp314-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:0b08d152555acf1f455154d498ca855618c1378ec810646fcd7c76416ac6dc60", size = 423361, upload_time = "2025-08-27T12:14:30.469Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8e/1c2741307fcabd1a334ecf008e92c4f47bb6f848712cf15c923becfe82bb/rpds_py-0.27.1-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:dce51c828941973a5684d458214d3a36fcd28da3e1875d659388f4f9f12cc33e", size = 562493, upload_time = "2025-08-27T12:14:31.987Z" }, + { url = "https://files.pythonhosted.org/packages/04/03/5159321baae9b2222442a70c1f988cbbd66b9be0675dd3936461269be360/rpds_py-0.27.1-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:c1476d6f29eb81aa4151c9a31219b03f1f798dc43d8af1250a870735516a1212", size = 592623, upload_time = "2025-08-27T12:14:33.543Z" }, + { url = "https://files.pythonhosted.org/packages/ff/39/c09fd1ad28b85bc1d4554a8710233c9f4cefd03d7717a1b8fbfd171d1167/rpds_py-0.27.1-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:3ce0cac322b0d69b63c9cdb895ee1b65805ec9ffad37639f291dd79467bee675", size = 558800, upload_time = "2025-08-27T12:14:35.436Z" }, + { url = "https://files.pythonhosted.org/packages/c5/d6/99228e6bbcf4baa764b18258f519a9035131d91b538d4e0e294313462a98/rpds_py-0.27.1-cp314-cp314-win32.whl", hash = "sha256:dfbfac137d2a3d0725758cd141f878bf4329ba25e34979797c89474a89a8a3a3", size = 221943, upload_time = "2025-08-27T12:14:36.898Z" }, + { url = "https://files.pythonhosted.org/packages/be/07/c802bc6b8e95be83b79bdf23d1aa61d68324cb1006e245d6c58e959e314d/rpds_py-0.27.1-cp314-cp314-win_amd64.whl", hash = "sha256:a6e57b0abfe7cc513450fcf529eb486b6e4d3f8aee83e92eb5f1ef848218d456", size = 233739, upload_time = "2025-08-27T12:14:38.386Z" }, + { url = "https://files.pythonhosted.org/packages/c8/89/3e1b1c16d4c2d547c5717377a8df99aee8099ff050f87c45cb4d5fa70891/rpds_py-0.27.1-cp314-cp314-win_arm64.whl", hash = "sha256:faf8d146f3d476abfee026c4ae3bdd9ca14236ae4e4c310cbd1cf75ba33d24a3", size = 223120, upload_time = "2025-08-27T12:14:39.82Z" }, + { url = "https://files.pythonhosted.org/packages/62/7e/dc7931dc2fa4a6e46b2a4fa744a9fe5c548efd70e0ba74f40b39fa4a8c10/rpds_py-0.27.1-cp314-cp314t-macosx_10_12_x86_64.whl", hash = "sha256:ba81d2b56b6d4911ce735aad0a1d4495e808b8ee4dc58715998741a26874e7c2", size = 358944, upload_time = "2025-08-27T12:14:41.199Z" }, + { url = "https://files.pythonhosted.org/packages/e6/22/4af76ac4e9f336bfb1a5f240d18a33c6b2fcaadb7472ac7680576512b49a/rpds_py-0.27.1-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:84f7d509870098de0e864cad0102711c1e24e9b1a50ee713b65928adb22269e4", size = 342283, upload_time = "2025-08-27T12:14:42.699Z" }, + { url = "https://files.pythonhosted.org/packages/1c/15/2a7c619b3c2272ea9feb9ade67a45c40b3eeb500d503ad4c28c395dc51b4/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9e960fc78fecd1100539f14132425e1d5fe44ecb9239f8f27f079962021523e", size = 380320, upload_time = "2025-08-27T12:14:44.157Z" }, + { url = "https://files.pythonhosted.org/packages/a2/7d/4c6d243ba4a3057e994bb5bedd01b5c963c12fe38dde707a52acdb3849e7/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:62f85b665cedab1a503747617393573995dac4600ff51869d69ad2f39eb5e817", size = 391760, upload_time = "2025-08-27T12:14:45.845Z" }, + { url = "https://files.pythonhosted.org/packages/b4/71/b19401a909b83bcd67f90221330bc1ef11bc486fe4e04c24388d28a618ae/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fed467af29776f6556250c9ed85ea5a4dd121ab56a5f8b206e3e7a4c551e48ec", size = 522476, upload_time = "2025-08-27T12:14:47.364Z" }, + { url = "https://files.pythonhosted.org/packages/e4/44/1a3b9715c0455d2e2f0f6df5ee6d6f5afdc423d0773a8a682ed2b43c566c/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f2729615f9d430af0ae6b36cf042cb55c0936408d543fb691e1a9e36648fd35a", size = 403418, upload_time = "2025-08-27T12:14:49.991Z" }, + { url = "https://files.pythonhosted.org/packages/1c/4b/fb6c4f14984eb56673bc868a66536f53417ddb13ed44b391998100a06a96/rpds_py-0.27.1-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b207d881a9aef7ba753d69c123a35d96ca7cb808056998f6b9e8747321f03b8", size = 384771, upload_time = "2025-08-27T12:14:52.159Z" }, + { url = "https://files.pythonhosted.org/packages/c0/56/d5265d2d28b7420d7b4d4d85cad8ef891760f5135102e60d5c970b976e41/rpds_py-0.27.1-cp314-cp314t-manylinux_2_31_riscv64.whl", hash = "sha256:639fd5efec029f99b79ae47e5d7e00ad8a773da899b6309f6786ecaf22948c48", size = 400022, upload_time = "2025-08-27T12:14:53.859Z" }, + { url = "https://files.pythonhosted.org/packages/8f/e9/9f5fc70164a569bdd6ed9046486c3568d6926e3a49bdefeeccfb18655875/rpds_py-0.27.1-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:fecc80cb2a90e28af8a9b366edacf33d7a91cbfe4c2c4544ea1246e949cfebeb", size = 416787, upload_time = "2025-08-27T12:14:55.673Z" }, + { url = "https://files.pythonhosted.org/packages/d4/64/56dd03430ba491db943a81dcdef115a985aac5f44f565cd39a00c766d45c/rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:42a89282d711711d0a62d6f57d81aa43a1368686c45bc1c46b7f079d55692734", size = 557538, upload_time = "2025-08-27T12:14:57.245Z" }, + { url = "https://files.pythonhosted.org/packages/3f/36/92cc885a3129993b1d963a2a42ecf64e6a8e129d2c7cc980dbeba84e55fb/rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_i686.whl", hash = "sha256:cf9931f14223de59551ab9d38ed18d92f14f055a5f78c1d8ad6493f735021bbb", size = 588512, upload_time = "2025-08-27T12:14:58.728Z" }, + { url = "https://files.pythonhosted.org/packages/dd/10/6b283707780a81919f71625351182b4f98932ac89a09023cb61865136244/rpds_py-0.27.1-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:f39f58a27cc6e59f432b568ed8429c7e1641324fbe38131de852cd77b2d534b0", size = 555813, upload_time = "2025-08-27T12:15:00.334Z" }, + { url = "https://files.pythonhosted.org/packages/04/2e/30b5ea18c01379da6272a92825dd7e53dc9d15c88a19e97932d35d430ef7/rpds_py-0.27.1-cp314-cp314t-win32.whl", hash = "sha256:d5fa0ee122dc09e23607a28e6d7b150da16c662e66409bbe85230e4c85bb528a", size = 217385, upload_time = "2025-08-27T12:15:01.937Z" }, + { url = "https://files.pythonhosted.org/packages/32/7d/97119da51cb1dd3f2f3c0805f155a3aa4a95fa44fe7d78ae15e69edf4f34/rpds_py-0.27.1-cp314-cp314t-win_amd64.whl", hash = "sha256:6567d2bb951e21232c2f660c24cf3470bb96de56cdcb3f071a83feeaff8a2772", size = 230097, upload_time = "2025-08-27T12:15:03.961Z" }, ] [[package]] @@ -2716,35 +2778,35 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ruamel-yaml-clib", marker = "python_full_version < '3.14' and platform_python_implementation == 'CPython'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3e/db/f3950f5e5031b618aae9f423a39bf81a55c148aecd15a34527898e752cf4/ruamel.yaml-0.18.15.tar.gz", hash = "sha256:dbfca74b018c4c3fba0b9cc9ee33e53c371194a9000e694995e620490fd40700", size = 146865 } +sdist = { url = "https://files.pythonhosted.org/packages/3e/db/f3950f5e5031b618aae9f423a39bf81a55c148aecd15a34527898e752cf4/ruamel.yaml-0.18.15.tar.gz", hash = "sha256:dbfca74b018c4c3fba0b9cc9ee33e53c371194a9000e694995e620490fd40700", size = 146865, upload_time = "2025-08-19T11:15:10.694Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/e5/f2a0621f1781b76a38194acae72f01e37b1941470407345b6e8653ad7640/ruamel.yaml-0.18.15-py3-none-any.whl", hash = "sha256:148f6488d698b7a5eded5ea793a025308b25eca97208181b6a026037f391f701", size = 119702 }, + { url = "https://files.pythonhosted.org/packages/d1/e5/f2a0621f1781b76a38194acae72f01e37b1941470407345b6e8653ad7640/ruamel.yaml-0.18.15-py3-none-any.whl", hash = "sha256:148f6488d698b7a5eded5ea793a025308b25eca97208181b6a026037f391f701", size = 119702, upload_time = "2025-08-19T11:15:07.696Z" }, ] [[package]] name = "ruamel-yaml-clib" version = "0.2.12" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433 }, - { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362 }, - { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118 }, - { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497 }, - { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042 }, - { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831 }, - { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692 }, - { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777 }, - { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523 }, - { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011 }, - { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488 }, - { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066 }, - { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785 }, - { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017 }, - { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270 }, - { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059 }, - { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583 }, - { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190 }, +sdist = { url = "https://files.pythonhosted.org/packages/20/84/80203abff8ea4993a87d823a5f632e4d92831ef75d404c9fc78d0176d2b5/ruamel.yaml.clib-0.2.12.tar.gz", hash = "sha256:6c8fbb13ec503f99a91901ab46e0b07ae7941cd527393187039aec586fdfd36f", size = 225315, upload_time = "2024-10-20T10:10:56.22Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/41/e7a405afbdc26af961678474a55373e1b323605a4f5e2ddd4a80ea80f628/ruamel.yaml.clib-0.2.12-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:20b0f8dc160ba83b6dcc0e256846e1a02d044e13f7ea74a3d1d56ede4e48c632", size = 133433, upload_time = "2024-10-20T10:12:55.657Z" }, + { url = "https://files.pythonhosted.org/packages/ec/b0/b850385604334c2ce90e3ee1013bd911aedf058a934905863a6ea95e9eb4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:943f32bc9dedb3abff9879edc134901df92cfce2c3d5c9348f172f62eb2d771d", size = 647362, upload_time = "2024-10-20T10:12:57.155Z" }, + { url = "https://files.pythonhosted.org/packages/44/d0/3f68a86e006448fb6c005aee66565b9eb89014a70c491d70c08de597f8e4/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:95c3829bb364fdb8e0332c9931ecf57d9be3519241323c5274bd82f709cebc0c", size = 754118, upload_time = "2024-10-20T10:12:58.501Z" }, + { url = "https://files.pythonhosted.org/packages/52/a9/d39f3c5ada0a3bb2870d7db41901125dbe2434fa4f12ca8c5b83a42d7c53/ruamel.yaml.clib-0.2.12-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:749c16fcc4a2b09f28843cda5a193e0283e47454b63ec4b81eaa2242f50e4ccd", size = 706497, upload_time = "2024-10-20T10:13:00.211Z" }, + { url = "https://files.pythonhosted.org/packages/b0/fa/097e38135dadd9ac25aecf2a54be17ddf6e4c23e43d538492a90ab3d71c6/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:bf165fef1f223beae7333275156ab2022cffe255dcc51c27f066b4370da81e31", size = 698042, upload_time = "2024-10-21T11:26:46.038Z" }, + { url = "https://files.pythonhosted.org/packages/ec/d5/a659ca6f503b9379b930f13bc6b130c9f176469b73b9834296822a83a132/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:32621c177bbf782ca5a18ba4d7af0f1082a3f6e517ac2a18b3974d4edf349680", size = 745831, upload_time = "2024-10-21T11:26:47.487Z" }, + { url = "https://files.pythonhosted.org/packages/db/5d/36619b61ffa2429eeaefaab4f3374666adf36ad8ac6330d855848d7d36fd/ruamel.yaml.clib-0.2.12-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b82a7c94a498853aa0b272fd5bc67f29008da798d4f93a2f9f289feb8426a58d", size = 715692, upload_time = "2024-12-11T19:58:17.252Z" }, + { url = "https://files.pythonhosted.org/packages/b1/82/85cb92f15a4231c89b95dfe08b09eb6adca929ef7df7e17ab59902b6f589/ruamel.yaml.clib-0.2.12-cp312-cp312-win32.whl", hash = "sha256:e8c4ebfcfd57177b572e2040777b8abc537cdef58a2120e830124946aa9b42c5", size = 98777, upload_time = "2024-10-20T10:13:01.395Z" }, + { url = "https://files.pythonhosted.org/packages/d7/8f/c3654f6f1ddb75daf3922c3d8fc6005b1ab56671ad56ffb874d908bfa668/ruamel.yaml.clib-0.2.12-cp312-cp312-win_amd64.whl", hash = "sha256:0467c5965282c62203273b838ae77c0d29d7638c8a4e3a1c8bdd3602c10904e4", size = 115523, upload_time = "2024-10-20T10:13:02.768Z" }, + { url = "https://files.pythonhosted.org/packages/29/00/4864119668d71a5fa45678f380b5923ff410701565821925c69780356ffa/ruamel.yaml.clib-0.2.12-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:4c8c5d82f50bb53986a5e02d1b3092b03622c02c2eb78e29bec33fd9593bae1a", size = 132011, upload_time = "2024-10-20T10:13:04.377Z" }, + { url = "https://files.pythonhosted.org/packages/7f/5e/212f473a93ae78c669ffa0cb051e3fee1139cb2d385d2ae1653d64281507/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:e7e3736715fbf53e9be2a79eb4db68e4ed857017344d697e8b9749444ae57475", size = 642488, upload_time = "2024-10-20T10:13:05.906Z" }, + { url = "https://files.pythonhosted.org/packages/1f/8f/ecfbe2123ade605c49ef769788f79c38ddb1c8fa81e01f4dbf5cf1a44b16/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b7e75b4965e1d4690e93021adfcecccbca7d61c7bddd8e22406ef2ff20d74ef", size = 745066, upload_time = "2024-10-20T10:13:07.26Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a9/28f60726d29dfc01b8decdb385de4ced2ced9faeb37a847bd5cf26836815/ruamel.yaml.clib-0.2.12-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:96777d473c05ee3e5e3c3e999f5d23c6f4ec5b0c38c098b3a5229085f74236c6", size = 701785, upload_time = "2024-10-20T10:13:08.504Z" }, + { url = "https://files.pythonhosted.org/packages/84/7e/8e7ec45920daa7f76046578e4f677a3215fe8f18ee30a9cb7627a19d9b4c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:3bc2a80e6420ca8b7d3590791e2dfc709c88ab9152c00eeb511c9875ce5778bf", size = 693017, upload_time = "2024-10-21T11:26:48.866Z" }, + { url = "https://files.pythonhosted.org/packages/c5/b3/d650eaade4ca225f02a648321e1ab835b9d361c60d51150bac49063b83fa/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:e188d2699864c11c36cdfdada94d781fd5d6b0071cd9c427bceb08ad3d7c70e1", size = 741270, upload_time = "2024-10-21T11:26:50.213Z" }, + { url = "https://files.pythonhosted.org/packages/87/b8/01c29b924dcbbed75cc45b30c30d565d763b9c4d540545a0eeecffb8f09c/ruamel.yaml.clib-0.2.12-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4f6f3eac23941b32afccc23081e1f50612bdbe4e982012ef4f5797986828cd01", size = 709059, upload_time = "2024-12-11T19:58:18.846Z" }, + { url = "https://files.pythonhosted.org/packages/30/8c/ed73f047a73638257aa9377ad356bea4d96125b305c34a28766f4445cc0f/ruamel.yaml.clib-0.2.12-cp313-cp313-win32.whl", hash = "sha256:6442cb36270b3afb1b4951f060eccca1ce49f3d087ca1ca4563a6eb479cb3de6", size = 98583, upload_time = "2024-10-20T10:13:09.658Z" }, + { url = "https://files.pythonhosted.org/packages/b0/85/e8e751d8791564dd333d5d9a4eab0a7a115f7e349595417fd50ecae3395c/ruamel.yaml.clib-0.2.12-cp313-cp313-win_amd64.whl", hash = "sha256:e5b8daf27af0b90da7bb903a876477a9e6d7270be6146906b276605997c7e9a3", size = 115190, upload_time = "2024-10-20T10:13:10.66Z" }, ] [[package]] @@ -2755,9 +2817,9 @@ dependencies = [ { name = "click" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/84/a4/b61c6e7a13b848fd985c9ed9acd525ccb1c2675e6cfa0d62292ae8015792/savepagenow-1.3.0.tar.gz", hash = "sha256:d0bc6bbe4606c700315015c3defcfab3c329208002b2b8cdc59f9b52996c6d3f", size = 42927 } +sdist = { url = "https://files.pythonhosted.org/packages/84/a4/b61c6e7a13b848fd985c9ed9acd525ccb1c2675e6cfa0d62292ae8015792/savepagenow-1.3.0.tar.gz", hash = "sha256:d0bc6bbe4606c700315015c3defcfab3c329208002b2b8cdc59f9b52996c6d3f", size = 42927, upload_time = "2023-07-01T13:31:49.607Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/8f/aea39979f8a7091ad2242a038a0e4c2b463593923ce598a914255dfba9ef/savepagenow-1.3.0-py2.py3-none-any.whl", hash = "sha256:4b0a4fff47254c160a37a20868ab53bb90da3d3f9f96086a9255b2375e39fcbf", size = 5649 }, + { url = "https://files.pythonhosted.org/packages/a6/8f/aea39979f8a7091ad2242a038a0e4c2b463593923ce598a914255dfba9ef/savepagenow-1.3.0-py2.py3-none-any.whl", hash = "sha256:4b0a4fff47254c160a37a20868ab53bb90da3d3f9f96086a9255b2375e39fcbf", size = 5649, upload_time = "2023-07-01T13:31:48.005Z" }, ] [[package]] @@ -2770,28 +2832,28 @@ dependencies = [ { name = "scipy" }, { name = "threadpoolctl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/c2/a7855e41c9d285dfe86dc50b250978105dce513d6e459ea66a6aeb0e1e0c/scikit_learn-1.7.2.tar.gz", hash = "sha256:20e9e49ecd130598f1ca38a1d85090e1a600147b9c02fa6f15d69cb53d968fda", size = 7193136 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/aa/3996e2196075689afb9fce0410ebdb4a09099d7964d061d7213700204409/scikit_learn-1.7.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d91a97fa2b706943822398ab943cde71858a50245e31bc71dba62aab1d60a96", size = 9259818 }, - { url = "https://files.pythonhosted.org/packages/43/5d/779320063e88af9c4a7c2cf463ff11c21ac9c8bd730c4a294b0000b666c9/scikit_learn-1.7.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:acbc0f5fd2edd3432a22c69bed78e837c70cf896cd7993d71d51ba6708507476", size = 8636997 }, - { url = "https://files.pythonhosted.org/packages/5c/d0/0c577d9325b05594fdd33aa970bf53fb673f051a45496842caee13cfd7fe/scikit_learn-1.7.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e5bf3d930aee75a65478df91ac1225ff89cd28e9ac7bd1196853a9229b6adb0b", size = 9478381 }, - { url = "https://files.pythonhosted.org/packages/82/70/8bf44b933837ba8494ca0fc9a9ab60f1c13b062ad0197f60a56e2fc4c43e/scikit_learn-1.7.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4d6e9deed1a47aca9fe2f267ab8e8fe82ee20b4526b2c0cd9e135cea10feb44", size = 9300296 }, - { url = "https://files.pythonhosted.org/packages/c6/99/ed35197a158f1fdc2fe7c3680e9c70d0128f662e1fee4ed495f4b5e13db0/scikit_learn-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:6088aa475f0785e01bcf8529f55280a3d7d298679f50c0bb70a2364a82d0b290", size = 8731256 }, - { url = "https://files.pythonhosted.org/packages/ae/93/a3038cb0293037fd335f77f31fe053b89c72f17b1c8908c576c29d953e84/scikit_learn-1.7.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0b7dacaa05e5d76759fb071558a8b5130f4845166d88654a0f9bdf3eb57851b7", size = 9212382 }, - { url = "https://files.pythonhosted.org/packages/40/dd/9a88879b0c1104259136146e4742026b52df8540c39fec21a6383f8292c7/scikit_learn-1.7.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:abebbd61ad9e1deed54cca45caea8ad5f79e1b93173dece40bb8e0c658dbe6fe", size = 8592042 }, - { url = "https://files.pythonhosted.org/packages/46/af/c5e286471b7d10871b811b72ae794ac5fe2989c0a2df07f0ec723030f5f5/scikit_learn-1.7.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:502c18e39849c0ea1a5d681af1dbcf15f6cce601aebb657aabbfe84133c1907f", size = 9434180 }, - { url = "https://files.pythonhosted.org/packages/f1/fd/df59faa53312d585023b2da27e866524ffb8faf87a68516c23896c718320/scikit_learn-1.7.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a4c328a71785382fe3fe676a9ecf2c86189249beff90bf85e22bdb7efaf9ae0", size = 9283660 }, - { url = "https://files.pythonhosted.org/packages/a7/c7/03000262759d7b6f38c836ff9d512f438a70d8a8ddae68ee80de72dcfb63/scikit_learn-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:63a9afd6f7b229aad94618c01c252ce9e6fa97918c5ca19c9a17a087d819440c", size = 8702057 }, - { url = "https://files.pythonhosted.org/packages/55/87/ef5eb1f267084532c8e4aef98a28b6ffe7425acbfd64b5e2f2e066bc29b3/scikit_learn-1.7.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9acb6c5e867447b4e1390930e3944a005e2cb115922e693c08a323421a6966e8", size = 9558731 }, - { url = "https://files.pythonhosted.org/packages/93/f8/6c1e3fc14b10118068d7938878a9f3f4e6d7b74a8ddb1e5bed65159ccda8/scikit_learn-1.7.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:2a41e2a0ef45063e654152ec9d8bcfc39f7afce35b08902bfe290c2498a67a6a", size = 9038852 }, - { url = "https://files.pythonhosted.org/packages/83/87/066cafc896ee540c34becf95d30375fe5cbe93c3b75a0ee9aa852cd60021/scikit_learn-1.7.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98335fb98509b73385b3ab2bd0639b1f610541d3988ee675c670371d6a87aa7c", size = 9527094 }, - { url = "https://files.pythonhosted.org/packages/9c/2b/4903e1ccafa1f6453b1ab78413938c8800633988c838aa0be386cbb33072/scikit_learn-1.7.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:191e5550980d45449126e23ed1d5e9e24b2c68329ee1f691a3987476e115e09c", size = 9367436 }, - { url = "https://files.pythonhosted.org/packages/b5/aa/8444be3cfb10451617ff9d177b3c190288f4563e6c50ff02728be67ad094/scikit_learn-1.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:57dc4deb1d3762c75d685507fbd0bc17160144b2f2ba4ccea5dc285ab0d0e973", size = 9275749 }, - { url = "https://files.pythonhosted.org/packages/d9/82/dee5acf66837852e8e68df6d8d3a6cb22d3df997b733b032f513d95205b7/scikit_learn-1.7.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fa8f63940e29c82d1e67a45d5297bdebbcb585f5a5a50c4914cc2e852ab77f33", size = 9208906 }, - { url = "https://files.pythonhosted.org/packages/3c/30/9029e54e17b87cb7d50d51a5926429c683d5b4c1732f0507a6c3bed9bf65/scikit_learn-1.7.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:f95dc55b7902b91331fa4e5845dd5bde0580c9cd9612b1b2791b7e80c3d32615", size = 8627836 }, - { url = "https://files.pythonhosted.org/packages/60/18/4a52c635c71b536879f4b971c2cedf32c35ee78f48367885ed8025d1f7ee/scikit_learn-1.7.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9656e4a53e54578ad10a434dc1f993330568cfee176dff07112b8785fb413106", size = 9426236 }, - { url = "https://files.pythonhosted.org/packages/99/7e/290362f6ab582128c53445458a5befd471ed1ea37953d5bcf80604619250/scikit_learn-1.7.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96dc05a854add0e50d3f47a1ef21a10a595016da5b007c7d9cd9d0bffd1fcc61", size = 9312593 }, - { url = "https://files.pythonhosted.org/packages/8e/87/24f541b6d62b1794939ae6422f8023703bbf6900378b2b34e0b4384dfefd/scikit_learn-1.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:bb24510ed3f9f61476181e4db51ce801e2ba37541def12dc9333b946fc7a9cf8", size = 8820007 }, +sdist = { url = "https://files.pythonhosted.org/packages/98/c2/a7855e41c9d285dfe86dc50b250978105dce513d6e459ea66a6aeb0e1e0c/scikit_learn-1.7.2.tar.gz", hash = "sha256:20e9e49ecd130598f1ca38a1d85090e1a600147b9c02fa6f15d69cb53d968fda", size = 7193136, upload_time = "2025-09-09T08:21:29.075Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/aa/3996e2196075689afb9fce0410ebdb4a09099d7964d061d7213700204409/scikit_learn-1.7.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8d91a97fa2b706943822398ab943cde71858a50245e31bc71dba62aab1d60a96", size = 9259818, upload_time = "2025-09-09T08:20:43.19Z" }, + { url = "https://files.pythonhosted.org/packages/43/5d/779320063e88af9c4a7c2cf463ff11c21ac9c8bd730c4a294b0000b666c9/scikit_learn-1.7.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:acbc0f5fd2edd3432a22c69bed78e837c70cf896cd7993d71d51ba6708507476", size = 8636997, upload_time = "2025-09-09T08:20:45.468Z" }, + { url = "https://files.pythonhosted.org/packages/5c/d0/0c577d9325b05594fdd33aa970bf53fb673f051a45496842caee13cfd7fe/scikit_learn-1.7.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:e5bf3d930aee75a65478df91ac1225ff89cd28e9ac7bd1196853a9229b6adb0b", size = 9478381, upload_time = "2025-09-09T08:20:47.982Z" }, + { url = "https://files.pythonhosted.org/packages/82/70/8bf44b933837ba8494ca0fc9a9ab60f1c13b062ad0197f60a56e2fc4c43e/scikit_learn-1.7.2-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b4d6e9deed1a47aca9fe2f267ab8e8fe82ee20b4526b2c0cd9e135cea10feb44", size = 9300296, upload_time = "2025-09-09T08:20:50.366Z" }, + { url = "https://files.pythonhosted.org/packages/c6/99/ed35197a158f1fdc2fe7c3680e9c70d0128f662e1fee4ed495f4b5e13db0/scikit_learn-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:6088aa475f0785e01bcf8529f55280a3d7d298679f50c0bb70a2364a82d0b290", size = 8731256, upload_time = "2025-09-09T08:20:52.627Z" }, + { url = "https://files.pythonhosted.org/packages/ae/93/a3038cb0293037fd335f77f31fe053b89c72f17b1c8908c576c29d953e84/scikit_learn-1.7.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0b7dacaa05e5d76759fb071558a8b5130f4845166d88654a0f9bdf3eb57851b7", size = 9212382, upload_time = "2025-09-09T08:20:54.731Z" }, + { url = "https://files.pythonhosted.org/packages/40/dd/9a88879b0c1104259136146e4742026b52df8540c39fec21a6383f8292c7/scikit_learn-1.7.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:abebbd61ad9e1deed54cca45caea8ad5f79e1b93173dece40bb8e0c658dbe6fe", size = 8592042, upload_time = "2025-09-09T08:20:57.313Z" }, + { url = "https://files.pythonhosted.org/packages/46/af/c5e286471b7d10871b811b72ae794ac5fe2989c0a2df07f0ec723030f5f5/scikit_learn-1.7.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:502c18e39849c0ea1a5d681af1dbcf15f6cce601aebb657aabbfe84133c1907f", size = 9434180, upload_time = "2025-09-09T08:20:59.671Z" }, + { url = "https://files.pythonhosted.org/packages/f1/fd/df59faa53312d585023b2da27e866524ffb8faf87a68516c23896c718320/scikit_learn-1.7.2-cp313-cp313-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:7a4c328a71785382fe3fe676a9ecf2c86189249beff90bf85e22bdb7efaf9ae0", size = 9283660, upload_time = "2025-09-09T08:21:01.71Z" }, + { url = "https://files.pythonhosted.org/packages/a7/c7/03000262759d7b6f38c836ff9d512f438a70d8a8ddae68ee80de72dcfb63/scikit_learn-1.7.2-cp313-cp313-win_amd64.whl", hash = "sha256:63a9afd6f7b229aad94618c01c252ce9e6fa97918c5ca19c9a17a087d819440c", size = 8702057, upload_time = "2025-09-09T08:21:04.234Z" }, + { url = "https://files.pythonhosted.org/packages/55/87/ef5eb1f267084532c8e4aef98a28b6ffe7425acbfd64b5e2f2e066bc29b3/scikit_learn-1.7.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:9acb6c5e867447b4e1390930e3944a005e2cb115922e693c08a323421a6966e8", size = 9558731, upload_time = "2025-09-09T08:21:06.381Z" }, + { url = "https://files.pythonhosted.org/packages/93/f8/6c1e3fc14b10118068d7938878a9f3f4e6d7b74a8ddb1e5bed65159ccda8/scikit_learn-1.7.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:2a41e2a0ef45063e654152ec9d8bcfc39f7afce35b08902bfe290c2498a67a6a", size = 9038852, upload_time = "2025-09-09T08:21:08.628Z" }, + { url = "https://files.pythonhosted.org/packages/83/87/066cafc896ee540c34becf95d30375fe5cbe93c3b75a0ee9aa852cd60021/scikit_learn-1.7.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:98335fb98509b73385b3ab2bd0639b1f610541d3988ee675c670371d6a87aa7c", size = 9527094, upload_time = "2025-09-09T08:21:11.486Z" }, + { url = "https://files.pythonhosted.org/packages/9c/2b/4903e1ccafa1f6453b1ab78413938c8800633988c838aa0be386cbb33072/scikit_learn-1.7.2-cp313-cp313t-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:191e5550980d45449126e23ed1d5e9e24b2c68329ee1f691a3987476e115e09c", size = 9367436, upload_time = "2025-09-09T08:21:13.602Z" }, + { url = "https://files.pythonhosted.org/packages/b5/aa/8444be3cfb10451617ff9d177b3c190288f4563e6c50ff02728be67ad094/scikit_learn-1.7.2-cp313-cp313t-win_amd64.whl", hash = "sha256:57dc4deb1d3762c75d685507fbd0bc17160144b2f2ba4ccea5dc285ab0d0e973", size = 9275749, upload_time = "2025-09-09T08:21:15.96Z" }, + { url = "https://files.pythonhosted.org/packages/d9/82/dee5acf66837852e8e68df6d8d3a6cb22d3df997b733b032f513d95205b7/scikit_learn-1.7.2-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fa8f63940e29c82d1e67a45d5297bdebbcb585f5a5a50c4914cc2e852ab77f33", size = 9208906, upload_time = "2025-09-09T08:21:18.557Z" }, + { url = "https://files.pythonhosted.org/packages/3c/30/9029e54e17b87cb7d50d51a5926429c683d5b4c1732f0507a6c3bed9bf65/scikit_learn-1.7.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:f95dc55b7902b91331fa4e5845dd5bde0580c9cd9612b1b2791b7e80c3d32615", size = 8627836, upload_time = "2025-09-09T08:21:20.695Z" }, + { url = "https://files.pythonhosted.org/packages/60/18/4a52c635c71b536879f4b971c2cedf32c35ee78f48367885ed8025d1f7ee/scikit_learn-1.7.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:9656e4a53e54578ad10a434dc1f993330568cfee176dff07112b8785fb413106", size = 9426236, upload_time = "2025-09-09T08:21:22.645Z" }, + { url = "https://files.pythonhosted.org/packages/99/7e/290362f6ab582128c53445458a5befd471ed1ea37953d5bcf80604619250/scikit_learn-1.7.2-cp314-cp314-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:96dc05a854add0e50d3f47a1ef21a10a595016da5b007c7d9cd9d0bffd1fcc61", size = 9312593, upload_time = "2025-09-09T08:21:24.65Z" }, + { url = "https://files.pythonhosted.org/packages/8e/87/24f541b6d62b1794939ae6422f8023703bbf6900378b2b34e0b4384dfefd/scikit_learn-1.7.2-cp314-cp314-win_amd64.whl", hash = "sha256:bb24510ed3f9f61476181e4db51ce801e2ba37541def12dc9333b946fc7a9cf8", size = 8820007, upload_time = "2025-09-09T08:21:26.713Z" }, ] [[package]] @@ -2801,103 +2863,103 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/4c/3b/546a6f0bfe791bbb7f8d591613454d15097e53f906308ec6f7c1ce588e8e/scipy-1.16.2.tar.gz", hash = "sha256:af029b153d243a80afb6eabe40b0a07f8e35c9adc269c019f364ad747f826a6b", size = 30580599 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/8d/6396e00db1282279a4ddd507c5f5e11f606812b608ee58517ce8abbf883f/scipy-1.16.2-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:89d6c100fa5c48472047632e06f0876b3c4931aac1f4291afc81a3644316bb0d", size = 36646259 }, - { url = "https://files.pythonhosted.org/packages/3b/93/ea9edd7e193fceb8eef149804491890bde73fb169c896b61aa3e2d1e4e77/scipy-1.16.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ca748936cd579d3f01928b30a17dc474550b01272d8046e3e1ee593f23620371", size = 28888976 }, - { url = "https://files.pythonhosted.org/packages/91/4d/281fddc3d80fd738ba86fd3aed9202331180b01e2c78eaae0642f22f7e83/scipy-1.16.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:fac4f8ce2ddb40e2e3d0f7ec36d2a1e7f92559a2471e59aec37bd8d9de01fec0", size = 20879905 }, - { url = "https://files.pythonhosted.org/packages/69/40/b33b74c84606fd301b2915f0062e45733c6ff5708d121dd0deaa8871e2d0/scipy-1.16.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:033570f1dcefd79547a88e18bccacff025c8c647a330381064f561d43b821232", size = 23553066 }, - { url = "https://files.pythonhosted.org/packages/55/a7/22c739e2f21a42cc8f16bc76b47cff4ed54fbe0962832c589591c2abec34/scipy-1.16.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ea3421209bf00c8a5ef2227de496601087d8f638a2363ee09af059bd70976dc1", size = 33336407 }, - { url = "https://files.pythonhosted.org/packages/53/11/a0160990b82999b45874dc60c0c183d3a3a969a563fffc476d5a9995c407/scipy-1.16.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f66bd07ba6f84cd4a380b41d1bf3c59ea488b590a2ff96744845163309ee8e2f", size = 35673281 }, - { url = "https://files.pythonhosted.org/packages/96/53/7ef48a4cfcf243c3d0f1643f5887c81f29fdf76911c4e49331828e19fc0a/scipy-1.16.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e9feab931bd2aea4a23388c962df6468af3d808ddf2d40f94a81c5dc38f32ef", size = 36004222 }, - { url = "https://files.pythonhosted.org/packages/49/7f/71a69e0afd460049d41c65c630c919c537815277dfea214031005f474d78/scipy-1.16.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:03dfc75e52f72cf23ec2ced468645321407faad8f0fe7b1f5b49264adbc29cb1", size = 38664586 }, - { url = "https://files.pythonhosted.org/packages/34/95/20e02ca66fb495a95fba0642fd48e0c390d0ece9b9b14c6e931a60a12dea/scipy-1.16.2-cp312-cp312-win_amd64.whl", hash = "sha256:0ce54e07bbb394b417457409a64fd015be623f36e330ac49306433ffe04bc97e", size = 38550641 }, - { url = "https://files.pythonhosted.org/packages/92/ad/13646b9beb0a95528ca46d52b7babafbe115017814a611f2065ee4e61d20/scipy-1.16.2-cp312-cp312-win_arm64.whl", hash = "sha256:2a8ffaa4ac0df81a0b94577b18ee079f13fecdb924df3328fc44a7dc5ac46851", size = 25456070 }, - { url = "https://files.pythonhosted.org/packages/c1/27/c5b52f1ee81727a9fc457f5ac1e9bf3d6eab311805ea615c83c27ba06400/scipy-1.16.2-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:84f7bf944b43e20b8a894f5fe593976926744f6c185bacfcbdfbb62736b5cc70", size = 36604856 }, - { url = "https://files.pythonhosted.org/packages/32/a9/15c20d08e950b540184caa8ced675ba1128accb0e09c653780ba023a4110/scipy-1.16.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5c39026d12edc826a1ef2ad35ad1e6d7f087f934bb868fc43fa3049c8b8508f9", size = 28864626 }, - { url = "https://files.pythonhosted.org/packages/4c/fc/ea36098df653cca26062a627c1a94b0de659e97127c8491e18713ca0e3b9/scipy-1.16.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e52729ffd45b68777c5319560014d6fd251294200625d9d70fd8626516fc49f5", size = 20855689 }, - { url = "https://files.pythonhosted.org/packages/dc/6f/d0b53be55727f3e6d7c72687ec18ea6d0047cf95f1f77488b99a2bafaee1/scipy-1.16.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:024dd4a118cccec09ca3209b7e8e614931a6ffb804b2a601839499cb88bdf925", size = 23512151 }, - { url = "https://files.pythonhosted.org/packages/11/85/bf7dab56e5c4b1d3d8eef92ca8ede788418ad38a7dc3ff50262f00808760/scipy-1.16.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7a5dc7ee9c33019973a470556081b0fd3c9f4c44019191039f9769183141a4d9", size = 33329824 }, - { url = "https://files.pythonhosted.org/packages/da/6a/1a927b14ddc7714111ea51f4e568203b2bb6ed59bdd036d62127c1a360c8/scipy-1.16.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c2275ff105e508942f99d4e3bc56b6ef5e4b3c0af970386ca56b777608ce95b7", size = 35681881 }, - { url = "https://files.pythonhosted.org/packages/c1/5f/331148ea5780b4fcc7007a4a6a6ee0a0c1507a796365cc642d4d226e1c3a/scipy-1.16.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:af80196eaa84f033e48444d2e0786ec47d328ba00c71e4299b602235ffef9acb", size = 36006219 }, - { url = "https://files.pythonhosted.org/packages/46/3a/e991aa9d2aec723b4a8dcfbfc8365edec5d5e5f9f133888067f1cbb7dfc1/scipy-1.16.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9fb1eb735fe3d6ed1f89918224e3385fbf6f9e23757cacc35f9c78d3b712dd6e", size = 38682147 }, - { url = "https://files.pythonhosted.org/packages/a1/57/0f38e396ad19e41b4c5db66130167eef8ee620a49bc7d0512e3bb67e0cab/scipy-1.16.2-cp313-cp313-win_amd64.whl", hash = "sha256:fda714cf45ba43c9d3bae8f2585c777f64e3f89a2e073b668b32ede412d8f52c", size = 38520766 }, - { url = "https://files.pythonhosted.org/packages/1b/a5/85d3e867b6822d331e26c862a91375bb7746a0b458db5effa093d34cdb89/scipy-1.16.2-cp313-cp313-win_arm64.whl", hash = "sha256:2f5350da923ccfd0b00e07c3e5cfb316c1c0d6c1d864c07a72d092e9f20db104", size = 25451169 }, - { url = "https://files.pythonhosted.org/packages/09/d9/60679189bcebda55992d1a45498de6d080dcaf21ce0c8f24f888117e0c2d/scipy-1.16.2-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:53d8d2ee29b925344c13bda64ab51785f016b1b9617849dac10897f0701b20c1", size = 37012682 }, - { url = "https://files.pythonhosted.org/packages/83/be/a99d13ee4d3b7887a96f8c71361b9659ba4ef34da0338f14891e102a127f/scipy-1.16.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:9e05e33657efb4c6a9d23bd8300101536abd99c85cca82da0bffff8d8764d08a", size = 29389926 }, - { url = "https://files.pythonhosted.org/packages/bf/0a/130164a4881cec6ca8c00faf3b57926f28ed429cd6001a673f83c7c2a579/scipy-1.16.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:7fe65b36036357003b3ef9d37547abeefaa353b237e989c21027b8ed62b12d4f", size = 21381152 }, - { url = "https://files.pythonhosted.org/packages/47/a6/503ffb0310ae77fba874e10cddfc4a1280bdcca1d13c3751b8c3c2996cf8/scipy-1.16.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6406d2ac6d40b861cccf57f49592f9779071655e9f75cd4f977fa0bdd09cb2e4", size = 23914410 }, - { url = "https://files.pythonhosted.org/packages/fa/c7/1147774bcea50d00c02600aadaa919facbd8537997a62496270133536ed6/scipy-1.16.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ff4dc42bd321991fbf611c23fc35912d690f731c9914bf3af8f417e64aca0f21", size = 33481880 }, - { url = "https://files.pythonhosted.org/packages/6a/74/99d5415e4c3e46b2586f30cdbecb95e101c7192628a484a40dd0d163811a/scipy-1.16.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:654324826654d4d9133e10675325708fb954bc84dae6e9ad0a52e75c6b1a01d7", size = 35791425 }, - { url = "https://files.pythonhosted.org/packages/1b/ee/a6559de7c1cc710e938c0355d9d4fbcd732dac4d0d131959d1f3b63eb29c/scipy-1.16.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:63870a84cd15c44e65220eaed2dac0e8f8b26bbb991456a033c1d9abfe8a94f8", size = 36178622 }, - { url = "https://files.pythonhosted.org/packages/4e/7b/f127a5795d5ba8ece4e0dce7d4a9fb7cb9e4f4757137757d7a69ab7d4f1a/scipy-1.16.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:fa01f0f6a3050fa6a9771a95d5faccc8e2f5a92b4a2e5440a0fa7264a2398472", size = 38783985 }, - { url = "https://files.pythonhosted.org/packages/3e/9f/bc81c1d1e033951eb5912cd3750cc005943afa3e65a725d2443a3b3c4347/scipy-1.16.2-cp313-cp313t-win_amd64.whl", hash = "sha256:116296e89fba96f76353a8579820c2512f6e55835d3fad7780fece04367de351", size = 38631367 }, - { url = "https://files.pythonhosted.org/packages/d6/5e/2cc7555fd81d01814271412a1d59a289d25f8b63208a0a16c21069d55d3e/scipy-1.16.2-cp313-cp313t-win_arm64.whl", hash = "sha256:98e22834650be81d42982360382b43b17f7ba95e0e6993e2a4f5b9ad9283a94d", size = 25787992 }, - { url = "https://files.pythonhosted.org/packages/8b/ac/ad8951250516db71619f0bd3b2eb2448db04b720a003dd98619b78b692c0/scipy-1.16.2-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:567e77755019bb7461513c87f02bb73fb65b11f049aaaa8ca17cfaa5a5c45d77", size = 36595109 }, - { url = "https://files.pythonhosted.org/packages/ff/f6/5779049ed119c5b503b0f3dc6d6f3f68eefc3a9190d4ad4c276f854f051b/scipy-1.16.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:17d9bb346194e8967296621208fcdfd39b55498ef7d2f376884d5ac47cec1a70", size = 28859110 }, - { url = "https://files.pythonhosted.org/packages/82/09/9986e410ae38bf0a0c737ff8189ac81a93b8e42349aac009891c054403d7/scipy-1.16.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:0a17541827a9b78b777d33b623a6dcfe2ef4a25806204d08ead0768f4e529a88", size = 20850110 }, - { url = "https://files.pythonhosted.org/packages/0d/ad/485cdef2d9215e2a7df6d61b81d2ac073dfacf6ae24b9ae87274c4e936ae/scipy-1.16.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:d7d4c6ba016ffc0f9568d012f5f1eb77ddd99412aea121e6fa8b4c3b7cbad91f", size = 23497014 }, - { url = "https://files.pythonhosted.org/packages/a7/74/f6a852e5d581122b8f0f831f1d1e32fb8987776ed3658e95c377d308ed86/scipy-1.16.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9702c4c023227785c779cba2e1d6f7635dbb5b2e0936cdd3a4ecb98d78fd41eb", size = 33401155 }, - { url = "https://files.pythonhosted.org/packages/d9/f5/61d243bbc7c6e5e4e13dde9887e84a5cbe9e0f75fd09843044af1590844e/scipy-1.16.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d1cdf0ac28948d225decdefcc45ad7dd91716c29ab56ef32f8e0d50657dffcc7", size = 35691174 }, - { url = "https://files.pythonhosted.org/packages/03/99/59933956331f8cc57e406cdb7a483906c74706b156998f322913e789c7e1/scipy-1.16.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:70327d6aa572a17c2941cdfb20673f82e536e91850a2e4cb0c5b858b690e1548", size = 36070752 }, - { url = "https://files.pythonhosted.org/packages/c6/7d/00f825cfb47ee19ef74ecf01244b43e95eae74e7e0ff796026ea7cd98456/scipy-1.16.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5221c0b2a4b58aa7c4ed0387d360fd90ee9086d383bb34d9f2789fafddc8a936", size = 38701010 }, - { url = "https://files.pythonhosted.org/packages/e4/9f/b62587029980378304ba5a8563d376c96f40b1e133daacee76efdcae32de/scipy-1.16.2-cp314-cp314-win_amd64.whl", hash = "sha256:f5a85d7b2b708025af08f060a496dd261055b617d776fc05a1a1cc69e09fe9ff", size = 39360061 }, - { url = "https://files.pythonhosted.org/packages/82/04/7a2f1609921352c7fbee0815811b5050582f67f19983096c4769867ca45f/scipy-1.16.2-cp314-cp314-win_arm64.whl", hash = "sha256:2cc73a33305b4b24556957d5857d6253ce1e2dcd67fa0ff46d87d1670b3e1e1d", size = 26126914 }, - { url = "https://files.pythonhosted.org/packages/51/b9/60929ce350c16b221928725d2d1d7f86cf96b8bc07415547057d1196dc92/scipy-1.16.2-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:9ea2a3fed83065d77367775d689401a703d0f697420719ee10c0780bcab594d8", size = 37013193 }, - { url = "https://files.pythonhosted.org/packages/2a/41/ed80e67782d4bc5fc85a966bc356c601afddd175856ba7c7bb6d9490607e/scipy-1.16.2-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:7280d926f11ca945c3ef92ba960fa924e1465f8d07ce3a9923080363390624c4", size = 29390172 }, - { url = "https://files.pythonhosted.org/packages/c4/a3/2f673ace4090452696ccded5f5f8efffb353b8f3628f823a110e0170b605/scipy-1.16.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:8afae1756f6a1fe04636407ef7dbece33d826a5d462b74f3d0eb82deabefd831", size = 21381326 }, - { url = "https://files.pythonhosted.org/packages/42/bf/59df61c5d51395066c35836b78136accf506197617c8662e60ea209881e1/scipy-1.16.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:5c66511f29aa8d233388e7416a3f20d5cae7a2744d5cee2ecd38c081f4e861b3", size = 23915036 }, - { url = "https://files.pythonhosted.org/packages/91/c3/edc7b300dc16847ad3672f1a6f3f7c5d13522b21b84b81c265f4f2760d4a/scipy-1.16.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efe6305aeaa0e96b0ccca5ff647a43737d9a092064a3894e46c414db84bc54ac", size = 33484341 }, - { url = "https://files.pythonhosted.org/packages/26/c7/24d1524e72f06ff141e8d04b833c20db3021020563272ccb1b83860082a9/scipy-1.16.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f3a337d9ae06a1e8d655ee9d8ecb835ea5ddcdcbd8d23012afa055ab014f374", size = 35790840 }, - { url = "https://files.pythonhosted.org/packages/aa/b7/5aaad984eeedd56858dc33d75efa59e8ce798d918e1033ef62d2708f2c3d/scipy-1.16.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bab3605795d269067d8ce78a910220262711b753de8913d3deeaedb5dded3bb6", size = 36174716 }, - { url = "https://files.pythonhosted.org/packages/fd/c2/e276a237acb09824822b0ada11b028ed4067fdc367a946730979feacb870/scipy-1.16.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b0348d8ddb55be2a844c518cd8cc8deeeb8aeba707cf834db5758fc89b476a2c", size = 38790088 }, - { url = "https://files.pythonhosted.org/packages/c6/b4/5c18a766e8353015439f3780f5fc473f36f9762edc1a2e45da3ff5a31b21/scipy-1.16.2-cp314-cp314t-win_amd64.whl", hash = "sha256:26284797e38b8a75e14ea6631d29bda11e76ceaa6ddb6fdebbfe4c4d90faf2f9", size = 39457455 }, - { url = "https://files.pythonhosted.org/packages/97/30/2f9a5243008f76dfc5dee9a53dfb939d9b31e16ce4bd4f2e628bfc5d89d2/scipy-1.16.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d2a4472c231328d4de38d5f1f68fdd6d28a615138f842580a8a321b5845cf779", size = 26448374 }, +sdist = { url = "https://files.pythonhosted.org/packages/4c/3b/546a6f0bfe791bbb7f8d591613454d15097e53f906308ec6f7c1ce588e8e/scipy-1.16.2.tar.gz", hash = "sha256:af029b153d243a80afb6eabe40b0a07f8e35c9adc269c019f364ad747f826a6b", size = 30580599, upload_time = "2025-09-11T17:48:08.271Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/8d/6396e00db1282279a4ddd507c5f5e11f606812b608ee58517ce8abbf883f/scipy-1.16.2-cp312-cp312-macosx_10_14_x86_64.whl", hash = "sha256:89d6c100fa5c48472047632e06f0876b3c4931aac1f4291afc81a3644316bb0d", size = 36646259, upload_time = "2025-09-11T17:40:39.329Z" }, + { url = "https://files.pythonhosted.org/packages/3b/93/ea9edd7e193fceb8eef149804491890bde73fb169c896b61aa3e2d1e4e77/scipy-1.16.2-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:ca748936cd579d3f01928b30a17dc474550b01272d8046e3e1ee593f23620371", size = 28888976, upload_time = "2025-09-11T17:40:46.82Z" }, + { url = "https://files.pythonhosted.org/packages/91/4d/281fddc3d80fd738ba86fd3aed9202331180b01e2c78eaae0642f22f7e83/scipy-1.16.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:fac4f8ce2ddb40e2e3d0f7ec36d2a1e7f92559a2471e59aec37bd8d9de01fec0", size = 20879905, upload_time = "2025-09-11T17:40:52.545Z" }, + { url = "https://files.pythonhosted.org/packages/69/40/b33b74c84606fd301b2915f0062e45733c6ff5708d121dd0deaa8871e2d0/scipy-1.16.2-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:033570f1dcefd79547a88e18bccacff025c8c647a330381064f561d43b821232", size = 23553066, upload_time = "2025-09-11T17:40:59.014Z" }, + { url = "https://files.pythonhosted.org/packages/55/a7/22c739e2f21a42cc8f16bc76b47cff4ed54fbe0962832c589591c2abec34/scipy-1.16.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ea3421209bf00c8a5ef2227de496601087d8f638a2363ee09af059bd70976dc1", size = 33336407, upload_time = "2025-09-11T17:41:06.796Z" }, + { url = "https://files.pythonhosted.org/packages/53/11/a0160990b82999b45874dc60c0c183d3a3a969a563fffc476d5a9995c407/scipy-1.16.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:f66bd07ba6f84cd4a380b41d1bf3c59ea488b590a2ff96744845163309ee8e2f", size = 35673281, upload_time = "2025-09-11T17:41:15.055Z" }, + { url = "https://files.pythonhosted.org/packages/96/53/7ef48a4cfcf243c3d0f1643f5887c81f29fdf76911c4e49331828e19fc0a/scipy-1.16.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:5e9feab931bd2aea4a23388c962df6468af3d808ddf2d40f94a81c5dc38f32ef", size = 36004222, upload_time = "2025-09-11T17:41:23.868Z" }, + { url = "https://files.pythonhosted.org/packages/49/7f/71a69e0afd460049d41c65c630c919c537815277dfea214031005f474d78/scipy-1.16.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:03dfc75e52f72cf23ec2ced468645321407faad8f0fe7b1f5b49264adbc29cb1", size = 38664586, upload_time = "2025-09-11T17:41:31.021Z" }, + { url = "https://files.pythonhosted.org/packages/34/95/20e02ca66fb495a95fba0642fd48e0c390d0ece9b9b14c6e931a60a12dea/scipy-1.16.2-cp312-cp312-win_amd64.whl", hash = "sha256:0ce54e07bbb394b417457409a64fd015be623f36e330ac49306433ffe04bc97e", size = 38550641, upload_time = "2025-09-11T17:41:36.61Z" }, + { url = "https://files.pythonhosted.org/packages/92/ad/13646b9beb0a95528ca46d52b7babafbe115017814a611f2065ee4e61d20/scipy-1.16.2-cp312-cp312-win_arm64.whl", hash = "sha256:2a8ffaa4ac0df81a0b94577b18ee079f13fecdb924df3328fc44a7dc5ac46851", size = 25456070, upload_time = "2025-09-11T17:41:41.3Z" }, + { url = "https://files.pythonhosted.org/packages/c1/27/c5b52f1ee81727a9fc457f5ac1e9bf3d6eab311805ea615c83c27ba06400/scipy-1.16.2-cp313-cp313-macosx_10_14_x86_64.whl", hash = "sha256:84f7bf944b43e20b8a894f5fe593976926744f6c185bacfcbdfbb62736b5cc70", size = 36604856, upload_time = "2025-09-11T17:41:47.695Z" }, + { url = "https://files.pythonhosted.org/packages/32/a9/15c20d08e950b540184caa8ced675ba1128accb0e09c653780ba023a4110/scipy-1.16.2-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:5c39026d12edc826a1ef2ad35ad1e6d7f087f934bb868fc43fa3049c8b8508f9", size = 28864626, upload_time = "2025-09-11T17:41:52.642Z" }, + { url = "https://files.pythonhosted.org/packages/4c/fc/ea36098df653cca26062a627c1a94b0de659e97127c8491e18713ca0e3b9/scipy-1.16.2-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:e52729ffd45b68777c5319560014d6fd251294200625d9d70fd8626516fc49f5", size = 20855689, upload_time = "2025-09-11T17:41:57.886Z" }, + { url = "https://files.pythonhosted.org/packages/dc/6f/d0b53be55727f3e6d7c72687ec18ea6d0047cf95f1f77488b99a2bafaee1/scipy-1.16.2-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:024dd4a118cccec09ca3209b7e8e614931a6ffb804b2a601839499cb88bdf925", size = 23512151, upload_time = "2025-09-11T17:42:02.303Z" }, + { url = "https://files.pythonhosted.org/packages/11/85/bf7dab56e5c4b1d3d8eef92ca8ede788418ad38a7dc3ff50262f00808760/scipy-1.16.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7a5dc7ee9c33019973a470556081b0fd3c9f4c44019191039f9769183141a4d9", size = 33329824, upload_time = "2025-09-11T17:42:07.549Z" }, + { url = "https://files.pythonhosted.org/packages/da/6a/1a927b14ddc7714111ea51f4e568203b2bb6ed59bdd036d62127c1a360c8/scipy-1.16.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c2275ff105e508942f99d4e3bc56b6ef5e4b3c0af970386ca56b777608ce95b7", size = 35681881, upload_time = "2025-09-11T17:42:13.255Z" }, + { url = "https://files.pythonhosted.org/packages/c1/5f/331148ea5780b4fcc7007a4a6a6ee0a0c1507a796365cc642d4d226e1c3a/scipy-1.16.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:af80196eaa84f033e48444d2e0786ec47d328ba00c71e4299b602235ffef9acb", size = 36006219, upload_time = "2025-09-11T17:42:18.765Z" }, + { url = "https://files.pythonhosted.org/packages/46/3a/e991aa9d2aec723b4a8dcfbfc8365edec5d5e5f9f133888067f1cbb7dfc1/scipy-1.16.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9fb1eb735fe3d6ed1f89918224e3385fbf6f9e23757cacc35f9c78d3b712dd6e", size = 38682147, upload_time = "2025-09-11T17:42:25.177Z" }, + { url = "https://files.pythonhosted.org/packages/a1/57/0f38e396ad19e41b4c5db66130167eef8ee620a49bc7d0512e3bb67e0cab/scipy-1.16.2-cp313-cp313-win_amd64.whl", hash = "sha256:fda714cf45ba43c9d3bae8f2585c777f64e3f89a2e073b668b32ede412d8f52c", size = 38520766, upload_time = "2025-09-11T17:43:25.342Z" }, + { url = "https://files.pythonhosted.org/packages/1b/a5/85d3e867b6822d331e26c862a91375bb7746a0b458db5effa093d34cdb89/scipy-1.16.2-cp313-cp313-win_arm64.whl", hash = "sha256:2f5350da923ccfd0b00e07c3e5cfb316c1c0d6c1d864c07a72d092e9f20db104", size = 25451169, upload_time = "2025-09-11T17:43:30.198Z" }, + { url = "https://files.pythonhosted.org/packages/09/d9/60679189bcebda55992d1a45498de6d080dcaf21ce0c8f24f888117e0c2d/scipy-1.16.2-cp313-cp313t-macosx_10_14_x86_64.whl", hash = "sha256:53d8d2ee29b925344c13bda64ab51785f016b1b9617849dac10897f0701b20c1", size = 37012682, upload_time = "2025-09-11T17:42:30.677Z" }, + { url = "https://files.pythonhosted.org/packages/83/be/a99d13ee4d3b7887a96f8c71361b9659ba4ef34da0338f14891e102a127f/scipy-1.16.2-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:9e05e33657efb4c6a9d23bd8300101536abd99c85cca82da0bffff8d8764d08a", size = 29389926, upload_time = "2025-09-11T17:42:35.845Z" }, + { url = "https://files.pythonhosted.org/packages/bf/0a/130164a4881cec6ca8c00faf3b57926f28ed429cd6001a673f83c7c2a579/scipy-1.16.2-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:7fe65b36036357003b3ef9d37547abeefaa353b237e989c21027b8ed62b12d4f", size = 21381152, upload_time = "2025-09-11T17:42:40.07Z" }, + { url = "https://files.pythonhosted.org/packages/47/a6/503ffb0310ae77fba874e10cddfc4a1280bdcca1d13c3751b8c3c2996cf8/scipy-1.16.2-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:6406d2ac6d40b861cccf57f49592f9779071655e9f75cd4f977fa0bdd09cb2e4", size = 23914410, upload_time = "2025-09-11T17:42:44.313Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c7/1147774bcea50d00c02600aadaa919facbd8537997a62496270133536ed6/scipy-1.16.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ff4dc42bd321991fbf611c23fc35912d690f731c9914bf3af8f417e64aca0f21", size = 33481880, upload_time = "2025-09-11T17:42:49.325Z" }, + { url = "https://files.pythonhosted.org/packages/6a/74/99d5415e4c3e46b2586f30cdbecb95e101c7192628a484a40dd0d163811a/scipy-1.16.2-cp313-cp313t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:654324826654d4d9133e10675325708fb954bc84dae6e9ad0a52e75c6b1a01d7", size = 35791425, upload_time = "2025-09-11T17:42:54.711Z" }, + { url = "https://files.pythonhosted.org/packages/1b/ee/a6559de7c1cc710e938c0355d9d4fbcd732dac4d0d131959d1f3b63eb29c/scipy-1.16.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:63870a84cd15c44e65220eaed2dac0e8f8b26bbb991456a033c1d9abfe8a94f8", size = 36178622, upload_time = "2025-09-11T17:43:00.375Z" }, + { url = "https://files.pythonhosted.org/packages/4e/7b/f127a5795d5ba8ece4e0dce7d4a9fb7cb9e4f4757137757d7a69ab7d4f1a/scipy-1.16.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:fa01f0f6a3050fa6a9771a95d5faccc8e2f5a92b4a2e5440a0fa7264a2398472", size = 38783985, upload_time = "2025-09-11T17:43:06.661Z" }, + { url = "https://files.pythonhosted.org/packages/3e/9f/bc81c1d1e033951eb5912cd3750cc005943afa3e65a725d2443a3b3c4347/scipy-1.16.2-cp313-cp313t-win_amd64.whl", hash = "sha256:116296e89fba96f76353a8579820c2512f6e55835d3fad7780fece04367de351", size = 38631367, upload_time = "2025-09-11T17:43:14.44Z" }, + { url = "https://files.pythonhosted.org/packages/d6/5e/2cc7555fd81d01814271412a1d59a289d25f8b63208a0a16c21069d55d3e/scipy-1.16.2-cp313-cp313t-win_arm64.whl", hash = "sha256:98e22834650be81d42982360382b43b17f7ba95e0e6993e2a4f5b9ad9283a94d", size = 25787992, upload_time = "2025-09-11T17:43:19.745Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ac/ad8951250516db71619f0bd3b2eb2448db04b720a003dd98619b78b692c0/scipy-1.16.2-cp314-cp314-macosx_10_14_x86_64.whl", hash = "sha256:567e77755019bb7461513c87f02bb73fb65b11f049aaaa8ca17cfaa5a5c45d77", size = 36595109, upload_time = "2025-09-11T17:43:35.713Z" }, + { url = "https://files.pythonhosted.org/packages/ff/f6/5779049ed119c5b503b0f3dc6d6f3f68eefc3a9190d4ad4c276f854f051b/scipy-1.16.2-cp314-cp314-macosx_12_0_arm64.whl", hash = "sha256:17d9bb346194e8967296621208fcdfd39b55498ef7d2f376884d5ac47cec1a70", size = 28859110, upload_time = "2025-09-11T17:43:40.814Z" }, + { url = "https://files.pythonhosted.org/packages/82/09/9986e410ae38bf0a0c737ff8189ac81a93b8e42349aac009891c054403d7/scipy-1.16.2-cp314-cp314-macosx_14_0_arm64.whl", hash = "sha256:0a17541827a9b78b777d33b623a6dcfe2ef4a25806204d08ead0768f4e529a88", size = 20850110, upload_time = "2025-09-11T17:43:44.981Z" }, + { url = "https://files.pythonhosted.org/packages/0d/ad/485cdef2d9215e2a7df6d61b81d2ac073dfacf6ae24b9ae87274c4e936ae/scipy-1.16.2-cp314-cp314-macosx_14_0_x86_64.whl", hash = "sha256:d7d4c6ba016ffc0f9568d012f5f1eb77ddd99412aea121e6fa8b4c3b7cbad91f", size = 23497014, upload_time = "2025-09-11T17:43:49.074Z" }, + { url = "https://files.pythonhosted.org/packages/a7/74/f6a852e5d581122b8f0f831f1d1e32fb8987776ed3658e95c377d308ed86/scipy-1.16.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:9702c4c023227785c779cba2e1d6f7635dbb5b2e0936cdd3a4ecb98d78fd41eb", size = 33401155, upload_time = "2025-09-11T17:43:54.661Z" }, + { url = "https://files.pythonhosted.org/packages/d9/f5/61d243bbc7c6e5e4e13dde9887e84a5cbe9e0f75fd09843044af1590844e/scipy-1.16.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:d1cdf0ac28948d225decdefcc45ad7dd91716c29ab56ef32f8e0d50657dffcc7", size = 35691174, upload_time = "2025-09-11T17:44:00.101Z" }, + { url = "https://files.pythonhosted.org/packages/03/99/59933956331f8cc57e406cdb7a483906c74706b156998f322913e789c7e1/scipy-1.16.2-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:70327d6aa572a17c2941cdfb20673f82e536e91850a2e4cb0c5b858b690e1548", size = 36070752, upload_time = "2025-09-11T17:44:05.619Z" }, + { url = "https://files.pythonhosted.org/packages/c6/7d/00f825cfb47ee19ef74ecf01244b43e95eae74e7e0ff796026ea7cd98456/scipy-1.16.2-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5221c0b2a4b58aa7c4ed0387d360fd90ee9086d383bb34d9f2789fafddc8a936", size = 38701010, upload_time = "2025-09-11T17:44:11.322Z" }, + { url = "https://files.pythonhosted.org/packages/e4/9f/b62587029980378304ba5a8563d376c96f40b1e133daacee76efdcae32de/scipy-1.16.2-cp314-cp314-win_amd64.whl", hash = "sha256:f5a85d7b2b708025af08f060a496dd261055b617d776fc05a1a1cc69e09fe9ff", size = 39360061, upload_time = "2025-09-11T17:45:09.814Z" }, + { url = "https://files.pythonhosted.org/packages/82/04/7a2f1609921352c7fbee0815811b5050582f67f19983096c4769867ca45f/scipy-1.16.2-cp314-cp314-win_arm64.whl", hash = "sha256:2cc73a33305b4b24556957d5857d6253ce1e2dcd67fa0ff46d87d1670b3e1e1d", size = 26126914, upload_time = "2025-09-11T17:45:14.73Z" }, + { url = "https://files.pythonhosted.org/packages/51/b9/60929ce350c16b221928725d2d1d7f86cf96b8bc07415547057d1196dc92/scipy-1.16.2-cp314-cp314t-macosx_10_14_x86_64.whl", hash = "sha256:9ea2a3fed83065d77367775d689401a703d0f697420719ee10c0780bcab594d8", size = 37013193, upload_time = "2025-09-11T17:44:16.757Z" }, + { url = "https://files.pythonhosted.org/packages/2a/41/ed80e67782d4bc5fc85a966bc356c601afddd175856ba7c7bb6d9490607e/scipy-1.16.2-cp314-cp314t-macosx_12_0_arm64.whl", hash = "sha256:7280d926f11ca945c3ef92ba960fa924e1465f8d07ce3a9923080363390624c4", size = 29390172, upload_time = "2025-09-11T17:44:21.783Z" }, + { url = "https://files.pythonhosted.org/packages/c4/a3/2f673ace4090452696ccded5f5f8efffb353b8f3628f823a110e0170b605/scipy-1.16.2-cp314-cp314t-macosx_14_0_arm64.whl", hash = "sha256:8afae1756f6a1fe04636407ef7dbece33d826a5d462b74f3d0eb82deabefd831", size = 21381326, upload_time = "2025-09-11T17:44:25.982Z" }, + { url = "https://files.pythonhosted.org/packages/42/bf/59df61c5d51395066c35836b78136accf506197617c8662e60ea209881e1/scipy-1.16.2-cp314-cp314t-macosx_14_0_x86_64.whl", hash = "sha256:5c66511f29aa8d233388e7416a3f20d5cae7a2744d5cee2ecd38c081f4e861b3", size = 23915036, upload_time = "2025-09-11T17:44:30.527Z" }, + { url = "https://files.pythonhosted.org/packages/91/c3/edc7b300dc16847ad3672f1a6f3f7c5d13522b21b84b81c265f4f2760d4a/scipy-1.16.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:efe6305aeaa0e96b0ccca5ff647a43737d9a092064a3894e46c414db84bc54ac", size = 33484341, upload_time = "2025-09-11T17:44:35.981Z" }, + { url = "https://files.pythonhosted.org/packages/26/c7/24d1524e72f06ff141e8d04b833c20db3021020563272ccb1b83860082a9/scipy-1.16.2-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:7f3a337d9ae06a1e8d655ee9d8ecb835ea5ddcdcbd8d23012afa055ab014f374", size = 35790840, upload_time = "2025-09-11T17:44:41.76Z" }, + { url = "https://files.pythonhosted.org/packages/aa/b7/5aaad984eeedd56858dc33d75efa59e8ce798d918e1033ef62d2708f2c3d/scipy-1.16.2-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:bab3605795d269067d8ce78a910220262711b753de8913d3deeaedb5dded3bb6", size = 36174716, upload_time = "2025-09-11T17:44:47.316Z" }, + { url = "https://files.pythonhosted.org/packages/fd/c2/e276a237acb09824822b0ada11b028ed4067fdc367a946730979feacb870/scipy-1.16.2-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:b0348d8ddb55be2a844c518cd8cc8deeeb8aeba707cf834db5758fc89b476a2c", size = 38790088, upload_time = "2025-09-11T17:44:53.011Z" }, + { url = "https://files.pythonhosted.org/packages/c6/b4/5c18a766e8353015439f3780f5fc473f36f9762edc1a2e45da3ff5a31b21/scipy-1.16.2-cp314-cp314t-win_amd64.whl", hash = "sha256:26284797e38b8a75e14ea6631d29bda11e76ceaa6ddb6fdebbfe4c4d90faf2f9", size = 39457455, upload_time = "2025-09-11T17:44:58.899Z" }, + { url = "https://files.pythonhosted.org/packages/97/30/2f9a5243008f76dfc5dee9a53dfb939d9b31e16ce4bd4f2e628bfc5d89d2/scipy-1.16.2-cp314-cp314t-win_arm64.whl", hash = "sha256:d2a4472c231328d4de38d5f1f68fdd6d28a615138f842580a8a321b5845cf779", size = 26448374, upload_time = "2025-09-11T17:45:03.45Z" }, ] [[package]] name = "shellingham" version = "1.5.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310 } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload_time = "2023-10-24T04:13:40.426Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 }, + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload_time = "2023-10-24T04:13:38.866Z" }, ] [[package]] name = "simpleeval" version = "1.0.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ff/6f/15be211749430f52f2c8f0c69158a6fc961c03aac93fa28d44d1a6f5ebc7/simpleeval-1.0.3.tar.gz", hash = "sha256:67bbf246040ac3b57c29cf048657b9cf31d4e7b9d6659684daa08ca8f1e45829", size = 24358 } +sdist = { url = "https://files.pythonhosted.org/packages/ff/6f/15be211749430f52f2c8f0c69158a6fc961c03aac93fa28d44d1a6f5ebc7/simpleeval-1.0.3.tar.gz", hash = "sha256:67bbf246040ac3b57c29cf048657b9cf31d4e7b9d6659684daa08ca8f1e45829", size = 24358, upload_time = "2024-11-02T10:29:46.912Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/e9/e58082fbb8cecbb6fb4133033c40cc50c248b1a331582be3a0f39138d65b/simpleeval-1.0.3-py3-none-any.whl", hash = "sha256:e3bdbb8c82c26297c9a153902d0fd1858a6c3774bf53ff4f134788c3f2035c38", size = 15762 }, + { url = "https://files.pythonhosted.org/packages/a0/e9/e58082fbb8cecbb6fb4133033c40cc50c248b1a331582be3a0f39138d65b/simpleeval-1.0.3-py3-none-any.whl", hash = "sha256:e3bdbb8c82c26297c9a153902d0fd1858a6c3774bf53ff4f134788c3f2035c38", size = 15762, upload_time = "2024-11-02T10:29:45.706Z" }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031 } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload_time = "2024-12-04T17:35:28.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload_time = "2024-12-04T17:35:26.475Z" }, ] [[package]] name = "smmap" version = "5.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329 } +sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329, upload_time = "2025-01-02T07:14:40.909Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303 }, + { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303, upload_time = "2025-01-02T07:14:38.724Z" }, ] [[package]] name = "soupsieve" version = "2.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6d/e6/21ccce3262dd4889aa3332e5a119a3491a95e8f60939870a3a035aabac0d/soupsieve-2.8.tar.gz", hash = "sha256:e2dd4a40a628cb5f28f6d4b0db8800b8f581b65bb380b97de22ba5ca8d72572f", size = 103472 } +sdist = { url = "https://files.pythonhosted.org/packages/6d/e6/21ccce3262dd4889aa3332e5a119a3491a95e8f60939870a3a035aabac0d/soupsieve-2.8.tar.gz", hash = "sha256:e2dd4a40a628cb5f28f6d4b0db8800b8f581b65bb380b97de22ba5ca8d72572f", size = 103472, upload_time = "2025-08-27T15:39:51.78Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl", hash = "sha256:0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c", size = 36679 }, + { url = "https://files.pythonhosted.org/packages/14/a0/bb38d3b76b8cae341dad93a2dd83ab7462e6dbcdd84d43f54ee60a8dc167/soupsieve-2.8-py3-none-any.whl", hash = "sha256:0cc76456a30e20f5d7f2e14a98a4ae2ee4e5abdc7c5ea0aafe795f344bc7984c", size = 36679, upload_time = "2025-08-27T15:39:50.179Z" }, ] [[package]] @@ -2909,18 +2971,18 @@ dependencies = [ { name = "executing" }, { name = "pure-eval" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707 } +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload_time = "2023-09-30T13:58:05.479Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload_time = "2023-09-30T13:58:03.53Z" }, ] [[package]] name = "structlog" version = "25.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/b9/6e672db4fec07349e7a8a8172c1a6ae235c58679ca29c3f86a61b5e59ff3/structlog-25.4.0.tar.gz", hash = "sha256:186cd1b0a8ae762e29417095664adf1d6a31702160a46dacb7796ea82f7409e4", size = 1369138 } +sdist = { url = "https://files.pythonhosted.org/packages/79/b9/6e672db4fec07349e7a8a8172c1a6ae235c58679ca29c3f86a61b5e59ff3/structlog-25.4.0.tar.gz", hash = "sha256:186cd1b0a8ae762e29417095664adf1d6a31702160a46dacb7796ea82f7409e4", size = 1369138, upload_time = "2025-06-02T08:21:12.971Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/4a/97ee6973e3a73c74c8120d59829c3861ea52210667ec3e7a16045c62b64d/structlog-25.4.0-py3-none-any.whl", hash = "sha256:fe809ff5c27e557d14e613f45ca441aabda051d119ee5a0102aaba6ce40eed2c", size = 68720 }, + { url = "https://files.pythonhosted.org/packages/a0/4a/97ee6973e3a73c74c8120d59829c3861ea52210667ec3e7a16045c62b64d/structlog-25.4.0-py3-none-any.whl", hash = "sha256:fe809ff5c27e557d14e613f45ca441aabda051d119ee5a0102aaba6ce40eed2c", size = 68720, upload_time = "2025-06-02T08:21:11.43Z" }, ] [[package]] @@ -2932,18 +2994,18 @@ dependencies = [ { name = "pyyaml" }, { name = "xlsxwriter" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/23/2d/5b5c0127e959a715c5365b3b491846fba5bc1fb7f94370cc3a4fb3f51f68/tableschema-to-template-0.0.13.tar.gz", hash = "sha256:2d8d2250efb840e0ecb9012c5e879a82ef68f65dd86bdff574200fdfc978ff1c", size = 13564 } +sdist = { url = "https://files.pythonhosted.org/packages/23/2d/5b5c0127e959a715c5365b3b491846fba5bc1fb7f94370cc3a4fb3f51f68/tableschema-to-template-0.0.13.tar.gz", hash = "sha256:2d8d2250efb840e0ecb9012c5e879a82ef68f65dd86bdff574200fdfc978ff1c", size = 13564, upload_time = "2023-02-01T21:53:17.238Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/7f/3c129377d9b815c0bb92b8c24bbecabe5e6b13b831f38924f80d2e5b40b2/tableschema_to_template-0.0.13-py3-none-any.whl", hash = "sha256:4905500a4235740654230c3223629d26fdccb7a0457ec1d0110ea102c4f1146c", size = 14860 }, + { url = "https://files.pythonhosted.org/packages/9f/7f/3c129377d9b815c0bb92b8c24bbecabe5e6b13b831f38924f80d2e5b40b2/tableschema_to_template-0.0.13-py3-none-any.whl", hash = "sha256:4905500a4235740654230c3223629d26fdccb7a0457ec1d0110ea102c4f1146c", size = 14860, upload_time = "2023-02-01T21:53:16.02Z" }, ] [[package]] name = "tabulate" version = "0.9.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090 } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload_time = "2022-10-06T17:21:48.54Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252 }, + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload_time = "2022-10-06T17:21:44.262Z" }, ] [[package]] @@ -3003,7 +3065,7 @@ requires-dist = [ { name = "pandas", specifier = ">=2.2.3" }, { name = "pint", specifier = ">=0.24.4" }, { name = "pydantic", specifier = ">=2.11.7" }, - { name = "pydeflate", specifier = ">=2.1.3" }, + { name = "pydeflate", specifier = ">=2.3.3" }, { name = "requests", specifier = ">=2.32.3" }, { name = "savepagenow", specifier = ">=1.3.0" }, { name = "scipy", specifier = ">=1.16.1" }, @@ -3046,27 +3108,27 @@ docs = [ name = "tenacity" version = "9.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload_time = "2025-04-02T08:25:09.966Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 }, + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload_time = "2025-04-02T08:25:07.678Z" }, ] [[package]] name = "text-unidecode" version = "1.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/e2/e9a00f0ccb71718418230718b3d900e71a5d16e701a3dae079a21e9cd8f8/text-unidecode-1.3.tar.gz", hash = "sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93", size = 76885, upload_time = "2019-08-30T21:36:45.405Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154 }, + { url = "https://files.pythonhosted.org/packages/a6/a5/c0b6468d3824fe3fde30dbb5e1f687b291608f9473681bbf7dabbf5a87d7/text_unidecode-1.3-py2.py3-none-any.whl", hash = "sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8", size = 78154, upload_time = "2019-08-30T21:37:03.543Z" }, ] [[package]] name = "threadpoolctl" version = "3.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274 } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274, upload_time = "2025-03-13T13:49:23.031Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638 }, + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638, upload_time = "2025-03-13T13:49:21.846Z" }, ] [[package]] @@ -3076,37 +3138,37 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 } +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload_time = "2024-10-24T14:58:29.895Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload_time = "2024-10-24T14:58:28.029Z" }, ] [[package]] name = "tomlkit" version = "0.13.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207 } +sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207, upload_time = "2025-06-05T07:13:44.947Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901 }, + { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901, upload_time = "2025-06-05T07:13:43.546Z" }, ] [[package]] name = "tornado" version = "6.5.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/09/ce/1eb500eae19f4648281bb2186927bb062d2438c2e5093d1360391afd2f90/tornado-6.5.2.tar.gz", hash = "sha256:ab53c8f9a0fa351e2c0741284e06c7a45da86afb544133201c5cc8578eb076a0", size = 510821 } +sdist = { url = "https://files.pythonhosted.org/packages/09/ce/1eb500eae19f4648281bb2186927bb062d2438c2e5093d1360391afd2f90/tornado-6.5.2.tar.gz", hash = "sha256:ab53c8f9a0fa351e2c0741284e06c7a45da86afb544133201c5cc8578eb076a0", size = 510821, upload_time = "2025-08-08T18:27:00.78Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/48/6a7529df2c9cc12efd2e8f5dd219516184d703b34c06786809670df5b3bd/tornado-6.5.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:2436822940d37cde62771cff8774f4f00b3c8024fe482e16ca8387b8a2724db6", size = 442563 }, - { url = "https://files.pythonhosted.org/packages/f2/b5/9b575a0ed3e50b00c40b08cbce82eb618229091d09f6d14bce80fc01cb0b/tornado-6.5.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:583a52c7aa94ee046854ba81d9ebb6c81ec0fd30386d96f7640c96dad45a03ef", size = 440729 }, - { url = "https://files.pythonhosted.org/packages/1b/4e/619174f52b120efcf23633c817fd3fed867c30bff785e2cd5a53a70e483c/tornado-6.5.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0fe179f28d597deab2842b86ed4060deec7388f1fd9c1b4a41adf8af058907e", size = 444295 }, - { url = "https://files.pythonhosted.org/packages/95/fa/87b41709552bbd393c85dd18e4e3499dcd8983f66e7972926db8d96aa065/tornado-6.5.2-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b186e85d1e3536d69583d2298423744740986018e393d0321df7340e71898882", size = 443644 }, - { url = "https://files.pythonhosted.org/packages/f9/41/fb15f06e33d7430ca89420283a8762a4e6b8025b800ea51796ab5e6d9559/tornado-6.5.2-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e792706668c87709709c18b353da1f7662317b563ff69f00bab83595940c7108", size = 443878 }, - { url = "https://files.pythonhosted.org/packages/11/92/fe6d57da897776ad2e01e279170ea8ae726755b045fe5ac73b75357a5a3f/tornado-6.5.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:06ceb1300fd70cb20e43b1ad8aaee0266e69e7ced38fa910ad2e03285009ce7c", size = 444549 }, - { url = "https://files.pythonhosted.org/packages/9b/02/c8f4f6c9204526daf3d760f4aa555a7a33ad0e60843eac025ccfd6ff4a93/tornado-6.5.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:74db443e0f5251be86cbf37929f84d8c20c27a355dd452a5cfa2aada0d001ec4", size = 443973 }, - { url = "https://files.pythonhosted.org/packages/ae/2d/f5f5707b655ce2317190183868cd0f6822a1121b4baeae509ceb9590d0bd/tornado-6.5.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b5e735ab2889d7ed33b32a459cac490eda71a1ba6857b0118de476ab6c366c04", size = 443954 }, - { url = "https://files.pythonhosted.org/packages/e8/59/593bd0f40f7355806bf6573b47b8c22f8e1374c9b6fd03114bd6b7a3dcfd/tornado-6.5.2-cp39-abi3-win32.whl", hash = "sha256:c6f29e94d9b37a95013bb669616352ddb82e3bfe8326fccee50583caebc8a5f0", size = 445023 }, - { url = "https://files.pythonhosted.org/packages/c7/2a/f609b420c2f564a748a2d80ebfb2ee02a73ca80223af712fca591386cafb/tornado-6.5.2-cp39-abi3-win_amd64.whl", hash = "sha256:e56a5af51cc30dd2cae649429af65ca2f6571da29504a07995175df14c18f35f", size = 445427 }, - { url = "https://files.pythonhosted.org/packages/5e/4f/e1f65e8f8c76d73658b33d33b81eed4322fb5085350e4328d5c956f0c8f9/tornado-6.5.2-cp39-abi3-win_arm64.whl", hash = "sha256:d6c33dc3672e3a1f3618eb63b7ef4683a7688e7b9e6e8f0d9aa5726360a004af", size = 444456 }, + { url = "https://files.pythonhosted.org/packages/f6/48/6a7529df2c9cc12efd2e8f5dd219516184d703b34c06786809670df5b3bd/tornado-6.5.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:2436822940d37cde62771cff8774f4f00b3c8024fe482e16ca8387b8a2724db6", size = 442563, upload_time = "2025-08-08T18:26:42.945Z" }, + { url = "https://files.pythonhosted.org/packages/f2/b5/9b575a0ed3e50b00c40b08cbce82eb618229091d09f6d14bce80fc01cb0b/tornado-6.5.2-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:583a52c7aa94ee046854ba81d9ebb6c81ec0fd30386d96f7640c96dad45a03ef", size = 440729, upload_time = "2025-08-08T18:26:44.473Z" }, + { url = "https://files.pythonhosted.org/packages/1b/4e/619174f52b120efcf23633c817fd3fed867c30bff785e2cd5a53a70e483c/tornado-6.5.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b0fe179f28d597deab2842b86ed4060deec7388f1fd9c1b4a41adf8af058907e", size = 444295, upload_time = "2025-08-08T18:26:46.021Z" }, + { url = "https://files.pythonhosted.org/packages/95/fa/87b41709552bbd393c85dd18e4e3499dcd8983f66e7972926db8d96aa065/tornado-6.5.2-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b186e85d1e3536d69583d2298423744740986018e393d0321df7340e71898882", size = 443644, upload_time = "2025-08-08T18:26:47.625Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/fb15f06e33d7430ca89420283a8762a4e6b8025b800ea51796ab5e6d9559/tornado-6.5.2-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e792706668c87709709c18b353da1f7662317b563ff69f00bab83595940c7108", size = 443878, upload_time = "2025-08-08T18:26:50.599Z" }, + { url = "https://files.pythonhosted.org/packages/11/92/fe6d57da897776ad2e01e279170ea8ae726755b045fe5ac73b75357a5a3f/tornado-6.5.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:06ceb1300fd70cb20e43b1ad8aaee0266e69e7ced38fa910ad2e03285009ce7c", size = 444549, upload_time = "2025-08-08T18:26:51.864Z" }, + { url = "https://files.pythonhosted.org/packages/9b/02/c8f4f6c9204526daf3d760f4aa555a7a33ad0e60843eac025ccfd6ff4a93/tornado-6.5.2-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:74db443e0f5251be86cbf37929f84d8c20c27a355dd452a5cfa2aada0d001ec4", size = 443973, upload_time = "2025-08-08T18:26:53.625Z" }, + { url = "https://files.pythonhosted.org/packages/ae/2d/f5f5707b655ce2317190183868cd0f6822a1121b4baeae509ceb9590d0bd/tornado-6.5.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b5e735ab2889d7ed33b32a459cac490eda71a1ba6857b0118de476ab6c366c04", size = 443954, upload_time = "2025-08-08T18:26:55.072Z" }, + { url = "https://files.pythonhosted.org/packages/e8/59/593bd0f40f7355806bf6573b47b8c22f8e1374c9b6fd03114bd6b7a3dcfd/tornado-6.5.2-cp39-abi3-win32.whl", hash = "sha256:c6f29e94d9b37a95013bb669616352ddb82e3bfe8326fccee50583caebc8a5f0", size = 445023, upload_time = "2025-08-08T18:26:56.677Z" }, + { url = "https://files.pythonhosted.org/packages/c7/2a/f609b420c2f564a748a2d80ebfb2ee02a73ca80223af712fca591386cafb/tornado-6.5.2-cp39-abi3-win_amd64.whl", hash = "sha256:e56a5af51cc30dd2cae649429af65ca2f6571da29504a07995175df14c18f35f", size = 445427, upload_time = "2025-08-08T18:26:57.91Z" }, + { url = "https://files.pythonhosted.org/packages/5e/4f/e1f65e8f8c76d73658b33d33b81eed4322fb5085350e4328d5c956f0c8f9/tornado-6.5.2-cp39-abi3-win_arm64.whl", hash = "sha256:d6c33dc3672e3a1f3618eb63b7ef4683a7688e7b9e6e8f0d9aa5726360a004af", size = 444456, upload_time = "2025-08-08T18:26:59.207Z" }, ] [[package]] @@ -3116,18 +3178,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737 } +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload_time = "2024-11-24T20:12:22.481Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 }, + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload_time = "2024-11-24T20:12:19.698Z" }, ] [[package]] name = "traitlets" version = "5.14.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload_time = "2024-04-19T11:11:49.746Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload_time = "2024-04-19T11:11:46.763Z" }, ] [[package]] @@ -3143,9 +3205,21 @@ dependencies = [ { name = "scikit-learn" }, { name = "tqdm" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e7/67/c69f8c46fd46e01480ca10280ab612253255a729a850e2d61fdf0ea08258/tsam-2.3.9.tar.gz", hash = "sha256:1f219eef05788d199af1ff61bd5a3d9217a26f9279988b1ef4b7d5af2757ed15", size = 223755 } +sdist = { url = "https://files.pythonhosted.org/packages/e7/67/c69f8c46fd46e01480ca10280ab612253255a729a850e2d61fdf0ea08258/tsam-2.3.9.tar.gz", hash = "sha256:1f219eef05788d199af1ff61bd5a3d9217a26f9279988b1ef4b7d5af2757ed15", size = 223755, upload_time = "2025-06-16T07:30:03.015Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/e7/5c072b990bddccc4a78a186d641e50257993c50658cddc0d4bf300acd1e1/tsam-2.3.9-py3-none-any.whl", hash = "sha256:edcc4febb9e1dacc028bc819d710974ede8f563467c3d235a250f46416f93a1b", size = 36816, upload_time = "2025-06-16T07:30:01.562Z" }, +] + +[[package]] +name = "typeguard" +version = "4.4.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c7/68/71c1a15b5f65f40e91b65da23b8224dad41349894535a97f63a52e462196/typeguard-4.4.4.tar.gz", hash = "sha256:3a7fd2dffb705d4d0efaed4306a704c89b9dee850b688f060a8b1615a79e5f74", size = 75203, upload_time = "2025-06-18T09:56:07.624Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/44/e7/5c072b990bddccc4a78a186d641e50257993c50658cddc0d4bf300acd1e1/tsam-2.3.9-py3-none-any.whl", hash = "sha256:edcc4febb9e1dacc028bc819d710974ede8f563467c3d235a250f46416f93a1b", size = 36816 }, + { url = "https://files.pythonhosted.org/packages/1b/a9/e3aee762739c1d7528da1c3e06d518503f8b6c439c35549b53735ba52ead/typeguard-4.4.4-py3-none-any.whl", hash = "sha256:b5f562281b6bfa1f5492470464730ef001646128b180769880468bd84b68b09e", size = 34874, upload_time = "2025-06-18T09:56:05.999Z" }, ] [[package]] @@ -3158,18 +3232,31 @@ dependencies = [ { name = "shellingham" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/03/ea/9cc57c3c627fd7a6a0907ea371019fe74c3ec00e3cf209a6864140a602ad/typer-0.19.1.tar.gz", hash = "sha256:cb881433a4b15dacc875bb0583d1a61e78497806741f9aba792abcab390c03e6", size = 104802 } +sdist = { url = "https://files.pythonhosted.org/packages/03/ea/9cc57c3c627fd7a6a0907ea371019fe74c3ec00e3cf209a6864140a602ad/typer-0.19.1.tar.gz", hash = "sha256:cb881433a4b15dacc875bb0583d1a61e78497806741f9aba792abcab390c03e6", size = 104802, upload_time = "2025-09-20T08:59:22.692Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/fa/6473c00b5eb26a2ba427813107699d3e6f4e1a4afad3f7494b17bdef3422/typer-0.19.1-py3-none-any.whl", hash = "sha256:914b2b39a1da4bafca5f30637ca26fa622a5bf9f515e5fdc772439f306d5682a", size = 46876 }, + { url = "https://files.pythonhosted.org/packages/1e/fa/6473c00b5eb26a2ba427813107699d3e6f4e1a4afad3f7494b17bdef3422/typer-0.19.1-py3-none-any.whl", hash = "sha256:914b2b39a1da4bafca5f30637ca26fa622a5bf9f515e5fdc772439f306d5682a", size = 46876, upload_time = "2025-09-20T08:59:21.153Z" }, ] [[package]] name = "typing-extensions" version = "4.15.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391 } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload_time = "2025-08-25T13:49:26.313Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614 }, + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload_time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "typing-inspect" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/dc/74/1789779d91f1961fa9438e9a8710cdae6bd138c80d7303996933d117264a/typing_inspect-0.9.0.tar.gz", hash = "sha256:b23fc42ff6f6ef6954e4852c1fb512cdd18dbea03134f91f856a95ccc9461f78", size = 13825, upload_time = "2023-05-24T20:25:47.612Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/65/f3/107a22063bf27bdccf2024833d3445f4eea42b2e598abfbd46f6a63b6cb0/typing_inspect-0.9.0-py3-none-any.whl", hash = "sha256:9ee6fc59062311ef8547596ab6b955e1b8aa46242d854bfc78f4f6b0eff35f9f", size = 8827, upload_time = "2023-05-24T20:25:45.287Z" }, ] [[package]] @@ -3179,45 +3266,57 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload_time = "2025-05-21T18:55:23.885Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload_time = "2025-05-21T18:55:22.152Z" }, ] [[package]] name = "tzdata" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload_time = "2025-03-23T13:54:43.652Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload_time = "2025-03-23T13:54:41.845Z" }, ] [[package]] name = "unidecode" version = "1.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/7d/a8a765761bbc0c836e397a2e48d498305a865b70a8600fd7a942e85dcf63/Unidecode-1.4.0.tar.gz", hash = "sha256:ce35985008338b676573023acc382d62c264f307c8f7963733405add37ea2b23", size = 200149 } +sdist = { url = "https://files.pythonhosted.org/packages/94/7d/a8a765761bbc0c836e397a2e48d498305a865b70a8600fd7a942e85dcf63/Unidecode-1.4.0.tar.gz", hash = "sha256:ce35985008338b676573023acc382d62c264f307c8f7963733405add37ea2b23", size = 200149, upload_time = "2025-04-24T08:45:03.798Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/b7/559f59d57d18b44c6d1250d2eeaa676e028b9c527431f5d0736478a73ba1/Unidecode-1.4.0-py3-none-any.whl", hash = "sha256:c3c7606c27503ad8d501270406e345ddb480a7b5f38827eafe4fa82a137f0021", size = 235837, upload_time = "2025-04-24T08:45:01.609Z" }, +] + +[[package]] +name = "url-normalize" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/80/31/febb777441e5fcdaacb4522316bf2a527c44551430a4873b052d545e3279/url_normalize-2.2.1.tar.gz", hash = "sha256:74a540a3b6eba1d95bdc610c24f2c0141639f3ba903501e61a52a8730247ff37", size = 18846, upload_time = "2025-04-26T20:37:58.553Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/b7/559f59d57d18b44c6d1250d2eeaa676e028b9c527431f5d0736478a73ba1/Unidecode-1.4.0-py3-none-any.whl", hash = "sha256:c3c7606c27503ad8d501270406e345ddb480a7b5f38827eafe4fa82a137f0021", size = 235837 }, + { url = "https://files.pythonhosted.org/packages/bc/d9/5ec15501b675f7bc07c5d16aa70d8d778b12375686b6efd47656efdc67cd/url_normalize-2.2.1-py3-none-any.whl", hash = "sha256:3deb687587dc91f7b25c9ae5162ffc0f057ae85d22b1e15cf5698311247f567b", size = 14728, upload_time = "2025-04-26T20:37:57.217Z" }, ] [[package]] name = "urllib3" version = "2.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185 } +sdist = { url = "https://files.pythonhosted.org/packages/15/22/9ee70a2574a4f4599c47dd506532914ce044817c7752a79b6a51286319bc/urllib3-2.5.0.tar.gz", hash = "sha256:3fc47733c7e419d4bc3f6b3dc2b4f890bb743906a30d56ba4a5bfa4bbff92760", size = 393185, upload_time = "2025-06-18T14:07:41.644Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795 }, + { url = "https://files.pythonhosted.org/packages/a7/c2/fe1e52489ae3122415c51f387e221dd0773709bad6c6cdaa599e8a2c5185/urllib3-2.5.0-py3-none-any.whl", hash = "sha256:e6b01673c0fa6a13e374b50871808eb3bf7046c4b125b216f6bf1cc604cff0dc", size = 129795, upload_time = "2025-06-18T14:07:40.39Z" }, ] [[package]] name = "validators" version = "0.35.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/53/66/a435d9ae49850b2f071f7ebd8119dd4e84872b01630d6736761e6e7fd847/validators-0.35.0.tar.gz", hash = "sha256:992d6c48a4e77c81f1b4daba10d16c3a9bb0dbb79b3a19ea847ff0928e70497a", size = 73399 } +sdist = { url = "https://files.pythonhosted.org/packages/53/66/a435d9ae49850b2f071f7ebd8119dd4e84872b01630d6736761e6e7fd847/validators-0.35.0.tar.gz", hash = "sha256:992d6c48a4e77c81f1b4daba10d16c3a9bb0dbb79b3a19ea847ff0928e70497a", size = 73399, upload_time = "2025-05-01T05:42:06.7Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/6e/3e955517e22cbdd565f2f8b2e73d52528b14b8bcfdb04f62466b071de847/validators-0.35.0-py3-none-any.whl", hash = "sha256:e8c947097eae7892cb3d26868d637f79f47b4a0554bc6b80065dfe5aac3705dd", size = 44712 }, + { url = "https://files.pythonhosted.org/packages/fa/6e/3e955517e22cbdd565f2f8b2e73d52528b14b8bcfdb04f62466b071de847/validators-0.35.0-py3-none-any.whl", hash = "sha256:e8c947097eae7892cb3d26868d637f79f47b4a0554bc6b80065dfe5aac3705dd", size = 44712, upload_time = "2025-05-01T05:42:04.203Z" }, ] [[package]] @@ -3229,33 +3328,33 @@ dependencies = [ { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/1c/14/37fcdba2808a6c615681cd216fecae00413c9dab44fb2e57805ecf3eaee3/virtualenv-20.34.0.tar.gz", hash = "sha256:44815b2c9dee7ed86e387b842a84f20b93f7f417f95886ca1996a72a4138eb1a", size = 6003808 } +sdist = { url = "https://files.pythonhosted.org/packages/1c/14/37fcdba2808a6c615681cd216fecae00413c9dab44fb2e57805ecf3eaee3/virtualenv-20.34.0.tar.gz", hash = "sha256:44815b2c9dee7ed86e387b842a84f20b93f7f417f95886ca1996a72a4138eb1a", size = 6003808, upload_time = "2025-08-13T14:24:07.464Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/06/04c8e804f813cf972e3262f3f8584c232de64f0cde9f703b46cf53a45090/virtualenv-20.34.0-py3-none-any.whl", hash = "sha256:341f5afa7eee943e4984a9207c025feedd768baff6753cd660c857ceb3e36026", size = 5983279 }, + { url = "https://files.pythonhosted.org/packages/76/06/04c8e804f813cf972e3262f3f8584c232de64f0cde9f703b46cf53a45090/virtualenv-20.34.0-py3-none-any.whl", hash = "sha256:341f5afa7eee943e4984a9207c025feedd768baff6753cd660c857ceb3e36026", size = 5983279, upload_time = "2025-08-13T14:24:05.111Z" }, ] [[package]] name = "watchdog" version = "6.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload_time = "2024-11-01T14:07:13.037Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, - { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, - { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, - { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 }, - { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 }, - { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471, upload_time = "2024-11-01T14:06:37.745Z" }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449, upload_time = "2024-11-01T14:06:39.748Z" }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054, upload_time = "2024-11-01T14:06:41.009Z" }, + { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480, upload_time = "2024-11-01T14:06:42.952Z" }, + { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451, upload_time = "2024-11-01T14:06:45.084Z" }, + { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057, upload_time = "2024-11-01T14:06:47.324Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload_time = "2024-11-01T14:06:59.472Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload_time = "2024-11-01T14:07:01.431Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload_time = "2024-11-01T14:07:02.568Z" }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload_time = "2024-11-01T14:07:03.893Z" }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload_time = "2024-11-01T14:07:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload_time = "2024-11-01T14:07:06.376Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload_time = "2024-11-01T14:07:07.547Z" }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload_time = "2024-11-01T14:07:09.525Z" }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload_time = "2024-11-01T14:07:10.686Z" }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload_time = "2024-11-01T14:07:11.845Z" }, ] [[package]] @@ -3267,88 +3366,88 @@ dependencies = [ { name = "requests" }, { name = "tabulate" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d7/4a/f55695bd1c9f1996b675b6e9e980eef40ebdb5e4bf8774c059c31af6ade1/wbgapi-1.0.12.tar.gz", hash = "sha256:338c3c768bd120b80596b48fa0449ecabc93513ac989c55671dce579dbb3a5be", size = 33590 } +sdist = { url = "https://files.pythonhosted.org/packages/d7/4a/f55695bd1c9f1996b675b6e9e980eef40ebdb5e4bf8774c059c31af6ade1/wbgapi-1.0.12.tar.gz", hash = "sha256:338c3c768bd120b80596b48fa0449ecabc93513ac989c55671dce579dbb3a5be", size = 33590, upload_time = "2022-07-05T15:07:22.772Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/12/224030af4886e119a3d03b709f7130e9601a4d15332e1d6a35671b25a4de/wbgapi-1.0.12-py3-none-any.whl", hash = "sha256:c5a1e1683b03d4264d287627c2562932f30e7f5c65509b812cb2e3de7d32633f", size = 36385 }, + { url = "https://files.pythonhosted.org/packages/00/12/224030af4886e119a3d03b709f7130e9601a4d15332e1d6a35671b25a4de/wbgapi-1.0.12-py3-none-any.whl", hash = "sha256:c5a1e1683b03d4264d287627c2562932f30e7f5c65509b812cb2e3de7d32633f", size = 36385, upload_time = "2022-07-05T15:07:20.606Z" }, ] [[package]] name = "wcwidth" version = "0.2.13" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload_time = "2024-01-06T02:10:57.829Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload_time = "2024-01-06T02:10:55.763Z" }, ] [[package]] name = "webencodings" version = "0.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload_time = "2017-04-05T20:21:34.189Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload_time = "2017-04-05T20:21:32.581Z" }, ] [[package]] name = "wheel" version = "0.45.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545 } +sdist = { url = "https://files.pythonhosted.org/packages/8a/98/2d9906746cdc6a6ef809ae6338005b3f21bb568bea3165cfc6a243fdc25c/wheel-0.45.1.tar.gz", hash = "sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729", size = 107545, upload_time = "2024-11-23T00:18:23.513Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494 }, + { url = "https://files.pythonhosted.org/packages/0b/2c/87f3254fd8ffd29e4c02732eee68a83a1d3c346ae39bc6822dcbcb697f2b/wheel-0.45.1-py3-none-any.whl", hash = "sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248", size = 72494, upload_time = "2024-11-23T00:18:21.207Z" }, ] [[package]] name = "win32-setctime" version = "1.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867 } +sdist = { url = "https://files.pythonhosted.org/packages/b3/8f/705086c9d734d3b663af0e9bb3d4de6578d08f46b1b101c2442fd9aecaa2/win32_setctime-1.2.0.tar.gz", hash = "sha256:ae1fdf948f5640aae05c511ade119313fb6a30d7eabe25fef9764dca5873c4c0", size = 4867, upload_time = "2024-12-07T15:28:28.314Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083 }, + { url = "https://files.pythonhosted.org/packages/e1/07/c6fe3ad3e685340704d314d765b7912993bcb8dc198f0e7a89382d37974b/win32_setctime-1.2.0-py3-none-any.whl", hash = "sha256:95d644c4e708aba81dc3704a116d8cbc974d70b3bdb8be1d150e36be6e9d1390", size = 4083, upload_time = "2024-12-07T15:28:26.465Z" }, ] [[package]] name = "xlrd" version = "2.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/5a/377161c2d3538d1990d7af382c79f3b2372e880b65de21b01b1a2b78691e/xlrd-2.0.2.tar.gz", hash = "sha256:08b5e25de58f21ce71dc7db3b3b8106c1fa776f3024c54e45b45b374e89234c9", size = 100167 } +sdist = { url = "https://files.pythonhosted.org/packages/07/5a/377161c2d3538d1990d7af382c79f3b2372e880b65de21b01b1a2b78691e/xlrd-2.0.2.tar.gz", hash = "sha256:08b5e25de58f21ce71dc7db3b3b8106c1fa776f3024c54e45b45b374e89234c9", size = 100167, upload_time = "2025-06-14T08:46:39.039Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/62/c8d562e7766786ba6587d09c5a8ba9f718ed3fa8af7f4553e8f91c36f302/xlrd-2.0.2-py2.py3-none-any.whl", hash = "sha256:ea762c3d29f4cca48d82df517b6d89fbce4db3107f9d78713e48cd321d5c9aa9", size = 96555 }, + { url = "https://files.pythonhosted.org/packages/1a/62/c8d562e7766786ba6587d09c5a8ba9f718ed3fa8af7f4553e8f91c36f302/xlrd-2.0.2-py2.py3-none-any.whl", hash = "sha256:ea762c3d29f4cca48d82df517b6d89fbce4db3107f9d78713e48cd321d5c9aa9", size = 96555, upload_time = "2025-06-14T08:46:37.766Z" }, ] [[package]] name = "xlrd3" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/db/88d8d49ddacc203956ecb98dc86c6ffeee6e933ef1f50da9b369de518f7f/xlrd3-1.1.0.tar.gz", hash = "sha256:20e6ed2e5f7f8b4ab61e30faffebceff6fab348332b4c915373f0a72742dc177", size = 58919847 } +sdist = { url = "https://files.pythonhosted.org/packages/79/db/88d8d49ddacc203956ecb98dc86c6ffeee6e933ef1f50da9b369de518f7f/xlrd3-1.1.0.tar.gz", hash = "sha256:20e6ed2e5f7f8b4ab61e30faffebceff6fab348332b4c915373f0a72742dc177", size = 58919847, upload_time = "2021-04-25T12:27:10.03Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5d/08/fce745025e58f160e7dcb5a45d4d43eb0bd44c0d8851425be87ef90271fa/xlrd3-1.1.0-py2.py3-none-any.whl", hash = "sha256:8e8e808f938144e7936a6e07c1d57be7a0f6c6f5b37c9c67974b43246d8aacb6", size = 105268 }, + { url = "https://files.pythonhosted.org/packages/5d/08/fce745025e58f160e7dcb5a45d4d43eb0bd44c0d8851425be87ef90271fa/xlrd3-1.1.0-py2.py3-none-any.whl", hash = "sha256:8e8e808f938144e7936a6e07c1d57be7a0f6c6f5b37c9c67974b43246d8aacb6", size = 105268, upload_time = "2021-04-25T12:26:55.264Z" }, ] [[package]] name = "xlsx2csv" version = "0.8.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/20/94860286a308a4213581c1beacd4fc7be724250c03583fcff23aaa6107bb/xlsx2csv-0.8.4.tar.gz", hash = "sha256:2aa809888826f6af5b26c77fc7f613f2bbeada0d8cc09e5a58e0f59684bb6911", size = 221390 } +sdist = { url = "https://files.pythonhosted.org/packages/36/20/94860286a308a4213581c1beacd4fc7be724250c03583fcff23aaa6107bb/xlsx2csv-0.8.4.tar.gz", hash = "sha256:2aa809888826f6af5b26c77fc7f613f2bbeada0d8cc09e5a58e0f59684bb6911", size = 221390, upload_time = "2024-11-19T17:06:07.818Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/c0/15c21556362c67f1155f3643a375d50ac67559b82c768e64e800a42a2577/xlsx2csv-0.8.4-py3-none-any.whl", hash = "sha256:52ab873fc7b2f2ca75d14aee8bd1985a9f5c1bcb3cc7b80df7a5d57a40a67473", size = 15904 }, + { url = "https://files.pythonhosted.org/packages/c4/c0/15c21556362c67f1155f3643a375d50ac67559b82c768e64e800a42a2577/xlsx2csv-0.8.4-py3-none-any.whl", hash = "sha256:52ab873fc7b2f2ca75d14aee8bd1985a9f5c1bcb3cc7b80df7a5d57a40a67473", size = 15904, upload_time = "2024-11-19T17:06:05.362Z" }, ] [[package]] name = "xlsxwriter" version = "3.2.9" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/46/2c/c06ef49dc36e7954e55b802a8b231770d286a9758b3d936bd1e04ce5ba88/xlsxwriter-3.2.9.tar.gz", hash = "sha256:254b1c37a368c444eac6e2f867405cc9e461b0ed97a3233b2ac1e574efb4140c", size = 215940 } +sdist = { url = "https://files.pythonhosted.org/packages/46/2c/c06ef49dc36e7954e55b802a8b231770d286a9758b3d936bd1e04ce5ba88/xlsxwriter-3.2.9.tar.gz", hash = "sha256:254b1c37a368c444eac6e2f867405cc9e461b0ed97a3233b2ac1e574efb4140c", size = 215940, upload_time = "2025-09-16T00:16:21.63Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/0c/3662f4a66880196a590b202f0db82d919dd2f89e99a27fadef91c4a33d41/xlsxwriter-3.2.9-py3-none-any.whl", hash = "sha256:9a5db42bc5dff014806c58a20b9eae7322a134abb6fce3c92c181bfb275ec5b3", size = 175315 }, + { url = "https://files.pythonhosted.org/packages/3a/0c/3662f4a66880196a590b202f0db82d919dd2f89e99a27fadef91c4a33d41/xlsxwriter-3.2.9-py3-none-any.whl", hash = "sha256:9a5db42bc5dff014806c58a20b9eae7322a134abb6fce3c92c181bfb275ec5b3", size = 175315, upload_time = "2025-09-16T00:16:20.108Z" }, ] [[package]] name = "xlwt" version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/97/56a6f56ce44578a69343449aa5a0d98eefe04085d69da539f3034e2cd5c1/xlwt-1.3.0.tar.gz", hash = "sha256:c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88", size = 153929 } +sdist = { url = "https://files.pythonhosted.org/packages/06/97/56a6f56ce44578a69343449aa5a0d98eefe04085d69da539f3034e2cd5c1/xlwt-1.3.0.tar.gz", hash = "sha256:c59912717a9b28f1a3c2a98fd60741014b06b043936dcecbc113eaaada156c88", size = 153929, upload_time = "2017-08-22T06:47:16.498Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/44/48/def306413b25c3d01753603b1a222a011b8621aed27cd7f89cbc27e6b0f4/xlwt-1.3.0-py2.py3-none-any.whl", hash = "sha256:a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e", size = 99981 }, + { url = "https://files.pythonhosted.org/packages/44/48/def306413b25c3d01753603b1a222a011b8621aed27cd7f89cbc27e6b0f4/xlwt-1.3.0-py2.py3-none-any.whl", hash = "sha256:a082260524678ba48a297d922cc385f58278b8aa68741596a87de01a9c628b2e", size = 99981, upload_time = "2017-08-22T06:47:15.281Z" }, ]