diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 85ed088bd4..4143e3b62d 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -82,11 +82,11 @@ jobs: df -h - name: Skip - no source changes - if: steps.filter.outputs.src != 'true' && github.event_name != 'schedule' + if: steps.filter.outputs.src != 'true' && github.event_name != 'schedule' && github.event_name != 'workflow_dispatch' run: echo "Skipping tests because no source code changes detected" - name: Setup Pixi - if: steps.filter.outputs.src == 'true' || github.event_name == 'schedule' + if: steps.filter.outputs.src == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' uses: prefix-dev/setup-pixi@v0.9.4 with: pixi-version: v0.59.0 @@ -94,36 +94,36 @@ jobs: cache-write: ${{ github.event_name == 'push' && github.ref_name == 'master' }} - name: Setup cache keys - if: steps.filter.outputs.src == 'true' || github.event_name == 'schedule' + if: steps.filter.outputs.src == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' run: | echo "WEEK=$(date +'%Y%U')" >> $GITHUB_ENV # data echo "MONTH=$(date +'%Y%m')" >> $GITHUB_ENV # cutouts echo "VERSIONS_HASH=${{ hashFiles('data/versions.csv') }}" >> $GITHUB_ENV - uses: actions/cache@v5 - if: steps.filter.outputs.src == 'true' || github.event_name == 'schedule' + if: steps.filter.outputs.src == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' with: path: data key: data-${{ env.WEEK }}-${{ env.VERSIONS_HASH }} - uses: actions/cache@v5 - if: steps.filter.outputs.src == 'true' || github.event_name == 'schedule' + if: steps.filter.outputs.src == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' with: path: cutouts key: cutouts-${{ env.MONTH }} - name: Restore git-tracked files in data/ - if: steps.filter.outputs.src == 'true' || github.event_name == 'schedule' + if: steps.filter.outputs.src == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' run: git checkout HEAD -- data/ - name: Run pylint check on scripts - if: steps.filter.outputs.src == 'true' || github.event_name == 'schedule' + if: steps.filter.outputs.src == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' # check for undefined variables to reuse functions across scripts run: | pixi run pylint --disable=all --enable=E0601,E0606 --output-format=parseable scripts/add_* scripts/prepare_* scripts/solve_* - name: Run snakemake test workflows - if: steps.filter.outputs.src == 'true' || github.event_name == 'schedule' + if: steps.filter.outputs.src == 'true' || github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' env: SNAKEMAKE_STORAGE_CACHED_HTTP_CACHE: "" SNAKEMAKE_STORAGE_CACHED_HTTP_SKIP_REMOTE_CHECKS: "1" diff --git a/.github/workflows/validate.yaml b/.github/workflows/validate.yaml index c3c29dca9a..f0af6216e2 100644 --- a/.github/workflows/validate.yaml +++ b/.github/workflows/validate.yaml @@ -52,11 +52,11 @@ jobs: # /.png plots: > " - graphs/energy.svg - graphs/costs.svg - graphs/balances-energy.svg - graphs/balances-urban_central_heat.svg - graphs/balances-urban_decentral_heat.svg - graphs/balances-rural_heat.svg + graphs/energy.pdf + graphs/costs.pdf + graphs/balances-energy.pdf + graphs/balances-urban_central_heat.pdf + graphs/balances-urban_decentral_heat.pdf + graphs/balances-rural_heat.pdf " validator_key: ${{ secrets.VALIDATOR_KEY }} diff --git a/.pixi/config.toml b/.pixi/config.toml index b5f21c1620..addb66df43 100644 --- a/.pixi/config.toml +++ b/.pixi/config.toml @@ -3,4 +3,7 @@ # SPDX-License-Identifier: CC0-1.0 pinning-strategy = "latest-up" -run-post-link-scripts = "false" # set to "insecure" to allow running post-link scripts + +# This aligns with default `conda` behaviour. +# Set to "false" to stop post-link scripts from running. +run-post-link-scripts = "insecure" diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7ce8f59a40..73d2bd72f0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -10,7 +10,6 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v6.0.0 hooks: - - id: check-merge-conflict - id: check-added-large-files args: ["--maxkb=2000"] @@ -30,7 +29,7 @@ repos: rev: v2.4.1 hooks: - id: codespell - args: ['--ignore-regex="(\b[A-Z]+\b)"', '--ignore-words-list=fom,appartment,bage,ore,setis,tabacco,berfore,vor,pris,bund'] # Ignore capital case words, e.g. country codes + args: ['--ignore-regex="(\b[A-Z]+\b)"', '--ignore-words-list=fom,appartment,bage,ore,setis,tabacco,berfore,vor,pris,bund,ons'] # Ignore capital case words, e.g. country codes types_or: [python, rst, markdown] files: ^(scripts|doc)/ diff --git a/CITATION.cff b/CITATION.cff index 2c5beac966..0c55447a5f 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -6,7 +6,7 @@ cff-version: 1.1.0 message: "If you use this package, please cite it in the following way." title: "PyPSA-Eur: An open sector-coupled optimisation model of the European energy system" repository: https://github.com/pypsa/pypsa-eur -version: v2025.07.0 +version: v2026.02.0 license: MIT authors: - family-names: Brown diff --git a/README.md b/README.md index 822886d71d..e6ae154103 100644 --- a/README.md +++ b/README.md @@ -16,23 +16,11 @@ SPDX-License-Identifier: CC-BY-4.0 # PyPSA-Eur: A Sector-Coupled Open Optimisation Model of the European Energy System PyPSA-Eur is an open model dataset of the European energy system at the -transmission network level that covers the full ENTSO-E area. The model is suitable both for operational studies and generation and transmission expansion planning studies. -The continental scope and highly resolved spatial scale enables a proper description of the long-range -smoothing effects for renewable power generation and their varying resource availability. - - - - -The model is described in the [documentation](https://pypsa-eur.readthedocs.io) -and in the paper -[PyPSA-Eur: An Open Optimisation Model of the European Transmission -System](https://arxiv.org/abs/1806.01613), 2018, -[arXiv:1806.01613](https://arxiv.org/abs/1806.01613). -The model building routines are defined through a snakemake workflow. -Please see the [documentation](https://pypsa-eur.readthedocs.io/) -for installation instructions and other useful information about the snakemake workflow. -The model is designed to be imported into the open toolbox -[PyPSA](https://github.com/PyPSA/PyPSA). +transmission network level that covers the full ENTSO-E area and all energy sectors, including transport, heating, biomass, industry, and agriculture. +Besides the power grid, pipeline networks for gas, hydrogen, carbon dioxide, and liquid fuels are included. +The model is suitable both for planning studies and operational studies. +The model is built from open data using a Snakemake workflow and fully open source. +It is designed to be imported into the open-source energy system modelling framework [PyPSA](www.pypsa.org). > [!NOTE] > PyPSA-Eur has many contributors, with the maintenance currently led by the [Department of Digital Transformation in @@ -42,65 +30,55 @@ The model is designed to be imported into the open toolbox > Institute of Technology](http://www.kit.edu/english/index.php) funded by the > [Helmholtz Association](https://www.helmholtz.de/en/). -> [!WARNING] -> PyPSA-Eur is under active development and has several -> [limitations](https://pypsa-eur.readthedocs.io/en/latest/limitations.html) which -> you should understand before using the model. The github repository -> [issues](https://github.com/PyPSA/pypsa-eur/issues) collect known topics we are -> working on (please feel free to help or make suggestions). The -> [documentation](https://pypsa-eur.readthedocs.io/) remains somewhat patchy. You -> can find showcases of the model's capabilities in the Joule paper [The potential -> role of a hydrogen network in -> Europe](https://doi.org/10.1016/j.joule.2023.06.016), another [paper in Joule -> with a description of the industry -> sector](https://doi.org/10.1016/j.joule.2022.04.016), or in [a 2021 presentation -> at EMP-E](https://nworbmot.org/energy/brown-empe.pdf). We do not recommend to -> use the full resolution network model for simulations. At high granularity the -> assignment of loads and generators to the nearest network node may not be a -> correct assumption, depending on the topology of the underlying distribution -> grid, and local grid bottlenecks may cause unrealistic load-shedding or -> generator curtailment. We recommend to cluster the network to a couple of -> hundred nodes to remove these local inconsistencies. See the discussion in -> Section 3.4 "Model validation" of the paper. - - -![PyPSA-Eur Grid Model](doc/img/elec.png) - -The dataset consists of: - -- A grid model based on a modified [GridKit](https://github.com/bdw/GridKit) - extraction of the [ENTSO-E Transmission System - Map](https://www.entsoe.eu/data/map/). The grid model contains 7072 lines - (alternating current lines at and above 220kV voltage level and all high - voltage direct current lines) and 3803 substations. + +Among many other things, the dataset consists of: + +- A power grid model based on [OpenStreetMap](https://zenodo.org/records/18619025) for voltage levels above 220kV (optional above 60kV). - The open power plant database [powerplantmatching](https://github.com/PyPSA/powerplantmatching). -- Electrical demand time series from the - [OPSD project](https://open-power-system-data.org/). -- Renewable time series based on ERA5 and SARAH, assembled using the [atlite tool](https://github.com/PyPSA/atlite). -- Geographical potentials for wind and solar generators based on land use (CORINE) and excluding nature reserves (Natura2000) are computed with the [atlite library](https://github.com/PyPSA/atlite). +- Electrical demand time series from the [ENTSO-E Transparency Platform](https://transparency.entsoe.eu/). +- Renewable time series based on ERA5 and SARAH-3, assembled using [atlite](https://github.com/PyPSA/atlite). +- Geographical potentials for wind and solar generators based land eligibility analysis in [atlite](https://github.com/PyPSA/atlite). +- Energy balances compiled from Eurostat and JRC-IDEES datasets. + +The high-voltage grid and the power plant fleet are shown in this map of the unclustered model (as of 1 January 2026): -A sector-coupled extension adds demand -and supply for the following sectors: transport, space and water -heating, biomass, industry and industrial feedstocks, agriculture, -forestry and fishing. This completes the energy system and includes -all greenhouse gas emitters except waste management and land use. +![PyPSA-Eur Unclustered](doc/img/base.png) + + +For computational reasons the model is usually clustered down +to 50-250 nodes. The image below shows the electricity network and power plants clustered to NUTS2 regions: + +![network diagram](doc/img/elec.png) This diagram gives an overview of the sectors and the links between -them: +them within each model region: ![sector diagram](doc/img/multisector_figure.png) -Each of these sectors is built up on the transmission network nodes -from [PyPSA-Eur](https://github.com/PyPSA/pypsa-eur): - -![network diagram](https://github.com/PyPSA/pypsa-eur/blob/master/doc/img/base.png?raw=true) -For computational reasons the model is usually clustered down -to 50-200 nodes. -Already-built versions of the model can be found in the accompanying [Zenodo -repository](https://doi.org/10.5281/zenodo.3601881). +# Warnings + +PyPSA-Eur is under active development and has several +[limitations](https://pypsa-eur.readthedocs.io/en/latest/limitations.html) which +you should understand before using the model. The github repository +[issues](https://github.com/PyPSA/pypsa-eur/issues) collect known topics we are +working on (please feel free to help or make suggestions). The +[documentation](https://pypsa-eur.readthedocs.io/) remains somewhat patchy. You +can find showcases of the model's capabilities in the Joule paper [The potential +role of a hydrogen network in +Europe](https://doi.org/10.1016/j.joule.2023.06.016), another [paper in Joule +with a description of the industry +sector](https://doi.org/10.1016/j.joule.2022.04.016), or in [a 2021 presentation +at EMP-E](https://nworbmot.org/energy/brown-empe.pdf). We do not recommend to +use the full resolution network model for simulations. At high granularity the +assignment of loads and generators to the nearest network node may not be a +correct assumption, depending on the topology of the underlying distribution +grid, and local grid bottlenecks may cause unrealistic load-shedding or +generator curtailment. We recommend to cluster the network to a couple of +hundred nodes to remove these local inconsistencies. See the discussion in +Section 3.4 "Model validation" of the paper. # Contributing and Support We strongly welcome anyone interested in contributing to this project. If you have any ideas, suggestions or encounter problems, feel invited to file issues or make pull requests on GitHub. diff --git a/REUSE.toml b/REUSE.toml index 8739d8cc07..27f8c4ff97 100644 --- a/REUSE.toml +++ b/REUSE.toml @@ -21,7 +21,7 @@ path = [ "envs/*.pin.txt", "envs/environment.yaml", "config/config.default.yaml", - "config/schema.json" + "config/schema.default.json" ] SPDX-FileCopyrightText = "The PyPSA-Eur Authors" SPDX-License-Identifier = "CC0-1.0" @@ -42,7 +42,6 @@ path = [ "data/parameter_corrections.yaml", "data/retro/window_assumptions.csv", "data/retro/retro_cost_germany.csv", - "data/switzerland-new_format-all_years.csv", "data/transmission_projects/**", "data/unit_commitment.csv", "data/versions.csv", diff --git a/Snakefile b/Snakefile index 9681873aac..de393c6b1d 100644 --- a/Snakefile +++ b/Snakefile @@ -93,7 +93,7 @@ if config["foresight"] == "perfect": rule all: input: - expand(RESULTS + "graphs/costs.svg", run=config["run"]["name"]), + expand(RESULTS + "graphs/costs.pdf", run=config["run"]["name"]), expand(resources("maps/power-network.pdf"), run=config["run"]["name"]), expand( resources("maps/power-network-s-{clusters}.pdf"), @@ -290,7 +290,6 @@ rule rulegraph: # Generate visualizations from the DOT file if [ -s {output.dot} ]; then - dot -c echo "[Rule rulegraph] Generating PDF from DOT" dot -Tpdf -o {output.pdf} {output.dot} || {{ echo "Error: Failed to generate PDF. Is graphviz installed?" >&2; exit 1; }} diff --git a/config/config.default.yaml b/config/config.default.yaml index bbdb363f72..43e3c881af 100644 --- a/config/config.default.yaml +++ b/config/config.default.yaml @@ -1,9 +1,9 @@ %YAML 1.1 --- -# yaml-language-server: $schema=./schema.json +# yaml-language-server: $schema=./schema.default.json # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#version -version: v2025.07.0 +version: v2026.02.0 # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#tutorial tutorial: false @@ -147,7 +147,7 @@ electricity: - battery - H2 Link: [] - powerplants_filter: "(DateOut >= 2024 or DateOut != DateOut) and not (Country == 'Germany' and Fueltype == 'Nuclear')" + powerplants_filter: "(DateOut > 2025 or DateOut != DateOut) and (DateIn < 2026 or DateIn != DateIn)" custom_powerplants: false everywhere_powerplants: [] conventional_carriers: @@ -158,6 +158,7 @@ electricity: - coal - lignite - geothermal + - waste - biomass renewable_carriers: - solar @@ -169,13 +170,15 @@ electricity: - hydro estimate_renewable_capacities: enable: true - from_gem: true - year: 2020 + from_powerplantmatching: true + from_irenastat: false + year: 2024 expansion_limit: false technology_mapping: Offshore: "offwind-ac" Onshore: onwind PV: solar + estimate_battery_capacities: false autarky: enable: false by_country: false @@ -186,6 +189,7 @@ atlite: default_cutout: "europe-2013-sarah3-era5" nprocesses: 16 show_progress: false + plot_availability_matrix: false cutouts: "europe-1940-2024-era5": module: era5 @@ -267,9 +271,7 @@ renewable: resource_classes: 1 capacity_per_sqkm: 2 correction_factor: 0.8855 - corine: - - 44 - - 255 + corine: false luisa: false natura: true ship_threshold: 400 @@ -290,9 +292,7 @@ renewable: resource_classes: 1 capacity_per_sqkm: 2 correction_factor: 0.8855 - corine: - - 44 - - 255 + corine: false luisa: false natura: true ship_threshold: 400 @@ -313,9 +313,7 @@ renewable: resource_classes: 1 capacity_per_sqkm: 2 correction_factor: 0.8855 - corine: - - 44 - - 255 + corine: false luisa: false natura: true ship_threshold: 400 @@ -425,6 +423,7 @@ renewable: conventional: unit_commitment: false dynamic_fuel_price: false + fuel_price_rolling_window: 6 nuclear: p_max_pu: data/nuclear_p_max_pu.csv @@ -498,6 +497,7 @@ load: scaling_factor: 1.0 fixed_year: false supplement_synthetic: true + substation_only: true distribution_key: gdp: 0.6 population: 0.4 @@ -524,7 +524,7 @@ pypsa_eur: # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#energy energy: - energy_totals_year: 2019 + energy_totals_year: 2023 base_emissions_year: 1990 emissions: CO2 @@ -599,6 +599,7 @@ existing_capacities: - 2015 - 2020 - 2025 + - 2030 grouping_years_heat: - 1980 - 1985 @@ -665,6 +666,9 @@ sector: bottom_temperature: 35 design_top_temperature: 90 design_bottom_temperature: 35 + layered: + layer_temperatures: [90] + heat_transfer_coefficient: 0.01 # H [W/(m²·K)] ates: enable: false suitable_aquifer_types: @@ -777,9 +781,6 @@ sector: agriculture_machinery_oil_share: 0.5 agriculture_machinery_fuel_efficiency: 0.7 agriculture_machinery_electric_efficiency: 0.3 - MWh_MeOH_per_MWh_H2: 0.8787 - MWh_MeOH_per_tCO2: 4.0321 - MWh_MeOH_per_MWh_e: 3.6907 shipping_hydrogen_liquefaction: false shipping_hydrogen_share: 2020: 0 @@ -1096,7 +1097,8 @@ costs: emission_prices: enable: false co2: 0.0 - co2_monthly_prices: false + dynamic: false + rolling_window: 90 # docs in https://pypsa-eur.readthedocs.io/en/latest/configuration.html#clustering clustering: @@ -1111,7 +1113,6 @@ clustering: aggregate_to_tyndp: false simplify_network: to_substations: false - exclude_carriers: [] remove_stubs: true remove_stubs_across_borders: false cluster_network: @@ -1159,6 +1160,7 @@ solving: transmission_losses: 2 linearized_unit_commitment: true horizon: 365 + overlap: 0 post_discretization: enable: false line_unit_size: 1700 @@ -1173,6 +1175,7 @@ solving: gas pipeline: 0.3 fractional_last_unit_size: false keep_files: false + store_model: false model_kwargs: solver_dir: "" agg_p_nom_limits: @@ -1290,12 +1293,18 @@ data: worldbank_urban_population: source: archive version: latest + worldbank_commodity_prices: + source: archive + version: latest gem_europe_gas_tracker: source: archive version: latest gem_gcct: source: archive version: latest + instrat_co2_prices: + source: primary + version: latest co2stop: source: archive version: latest @@ -1332,6 +1341,9 @@ data: seawater_temperature: source: archive version: latest + swiss_energy_balances: + source: primary + version: latest synthetic_electricity_demand: source: primary version: latest @@ -1396,10 +1408,10 @@ data: source: archive version: latest powerplants: - source: primary + source: archive version: latest costs: - source: primary + source: archive version: latest country_runoff: source: archive @@ -1431,6 +1443,15 @@ data: jrc_ardeco: source: archive version: latest + jrc_energy_atlas: + source: archive + version: latest + desnz_electricity_consumption: + source: archive + version: latest + ons_lad: + source: archive + version: latest bidding_zones_electricitymaps: source: archive version: latest diff --git a/config/examples/config.distribution-grid-experimental.yaml b/config/examples/config.distribution-grid-experimental.yaml index de36db5690..06642fe5ae 100644 --- a/config/examples/config.distribution-grid-experimental.yaml +++ b/config/examples/config.distribution-grid-experimental.yaml @@ -1,10 +1,48 @@ -# yaml-language-server: $schema=../schema.json +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 run: name: "distribution-grid-experimental" +countries: +- AL +- AT +- BA +- BE +- BG +- CH +- CZ +- DE +- DK +- EE +- ES +- FI +- FR +- GB +- GR +- HR +- HU +- IE +- IT +- LT +- LU +- LV +- ME +- MD +- MK +- NL +- 'NO' +- PL +- PT +- RO +- RS +- SE +- SI +- SK +- XK +- UA + electricity: voltages: [63., 66., 90., 110., 132., 150., 220., 300., 330., 380., 400., 500., 750.] base_network: osm @@ -26,3 +64,11 @@ overpass_api: project_name: PyPSA-Eur email: contact@pypsa.org website: https://github.com/PyPSA/pypsa-eur + +osm_network_release: + release_version: "experimental" + under_construction: remove + remove_after: "2025-12-31" + compare_to: + version: latest + source: archive diff --git a/config/examples/config.entsoe-all.yaml b/config/examples/config.entsoe-all.yaml index b1d0dde90f..6f5627e6ee 100644 --- a/config/examples/config.entsoe-all.yaml +++ b/config/examples/config.entsoe-all.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=../schema.json +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 diff --git a/config/examples/config.iterative.yaml b/config/examples/config.iterative.yaml index 24c0b6ea38..18076927e2 100644 --- a/config/examples/config.iterative.yaml +++ b/config/examples/config.iterative.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=../schema.json +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 diff --git a/config/examples/config.osm-release.yaml b/config/examples/config.osm-release.yaml new file mode 100644 index 0000000000..47461fde41 --- /dev/null +++ b/config/examples/config.osm-release.yaml @@ -0,0 +1,81 @@ +# yaml-language-server: $schema=../schema.default.json +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: CC0-1.0 +run: + name: "osm-release" + +countries: +- AL +- AT +- BA +- BE +- BG +- CH +- CZ +- DE +- DK +- EE +- ES +- FI +- FR +- GB +- GR +- HR +- HU +- IE +- IT +- LT +- LU +- LV +- ME +- MD +- MK +- NL +- 'NO' +- PL +- PT +- RO +- RS +- SE +- SI +- SK +- XK +- UA + +electricity: + voltages: + - 220.0 + - 300.0 + - 330.0 + - 380.0 + - 400.0 + - 500.0 + - 750.0 + base_network: osm + +transmission_projects: + enable: false + +data: + osm: + source: build + version: unknown + +# Please provide your own user agent details when using the Overpass API +overpass_api: + url: https://overpass-api.de/api/interpreter + max_tries: 5 + timeout: 600 + user_agent: + project_name: PyPSA-Eur + email: contact@pypsa.org + website: https://github.com/PyPSA/pypsa-eur + +osm_network_release: + release_version: "0.7" + under_construction: remove + remove_after: "2025-12-31" + compare_to: + version: latest + source: archive diff --git a/config/examples/config.perfect.yaml b/config/examples/config.perfect.yaml index 07af9a019b..4903c8fce9 100644 --- a/config/examples/config.perfect.yaml +++ b/config/examples/config.perfect.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=../schema.json +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 diff --git a/config/examples/config.validation.yaml b/config/examples/config.validation.yaml index ccd03c77fe..b43455ae2f 100644 --- a/config/examples/config.validation.yaml +++ b/config/examples/config.validation.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=../schema.json +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 diff --git a/config/plotting.default.yaml b/config/plotting.default.yaml index 060af68e3a..06af3d6d14 100644 --- a/config/plotting.default.yaml +++ b/config/plotting.default.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=./schema.json +# yaml-language-server: $schema=./schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 @@ -608,8 +608,30 @@ plotting: services rural air heat pump: '#5af95d' urban central air heat pump: '#6cfb6b' ptes heat pump: '#5dade2' + ptes layer 0 heat pump: '#9656e3' + ptes layer 1 heat pump: '#613794' + ptes layer 2 heat pump: '#311b4d' + ptes layer 3 heat pump: '#311b4d' + ptes layer 4 heat pump: '#311b4d' + ptes layer 5 heat pump: '#311b4d' + ptes layer 6 heat pump: '#311b4d' + ptes layer 7 heat pump: '#311b4d' + ptes layer 8 heat pump: '#311b4d' + ptes layer 9 heat pump: '#311b4d' ptes heat preheater: '#c3d9e8' + ptes preheater layer 0: '#91c8ed' + ptes preheater layer 1: '#76abcf' + ptes preheater layer 2: '#537a94' + ptes preheater layer 3: '#537a94' + ptes preheater layer 4: '#537a94' + ptes preheater layer 5: '#537a94' + ptes preheater layer 6: '#537a94' + ptes preheater layer 7: '#537a94' + ptes preheater layer 8: '#537a94' + ptes preheater layer 9: '#537a94' ptes heat utilisation: '#2013d1' + ptes heat vent: '#a74747' + water pits interlayer: '#a74747' urban central ptes heat: '#5dade2' urban central geothermal heat pump: '#4f2144' geothermal heat pump: '#4f2144' diff --git a/config/schema.json b/config/schema.default.json similarity index 96% rename from config/schema.json rename to config/schema.default.json index 58b4d9e35c..59fa6d544a 100644 --- a/config/schema.json +++ b/config/schema.default.json @@ -184,6 +184,11 @@ "description": "Whether progressbar for atlite conversion processes should be shown. False saves time.", "type": "boolean" }, + "plot_availability_matrix": { + "default": false, + "description": "Whether to plot the landuse availability matrix.", + "type": "boolean" + }, "cutouts": { "additionalProperties": { "description": "Configuration for a single cutout in `atlite.cutouts`.", @@ -536,13 +541,6 @@ "description": "Aggregates all nodes without power injection (positive or negative, i.e. demand or generation) to electrically closest ones.", "type": "boolean" }, - "exclude_carriers": { - "description": "List of carriers which will not be aggregated. If empty, all carriers will be aggregated.", - "items": { - "type": "string" - }, - "type": "array" - }, "remove_stubs": { "default": true, "description": "Controls whether radial parts of the network should be recursively aggregated. Defaults to true.", @@ -584,9 +582,19 @@ "type": "array" }, "consider_efficiency_classes": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "number" + }, + "type": "array" + } + ], "default": false, - "description": "Aggregated each carriers into the top 10-quantile (high), the bottom 90-quantile (low), and everything in between (medium).", - "type": "boolean" + "description": "Aggregate each carrier into efficiency classes defined by quantile boundaries. If True, uses [0.1, 0.9] as default quantiles (labels: Q0, Q10, Q90). If a list of floats, defines custom quantile boundaries, e.g. [0.1, 0.5, 0.9]." }, "aggregation_strategies": { "description": "Configuration for `clustering.aggregation_strategies` settings.", @@ -659,6 +667,12 @@ "description": "Consider the monthly fluctuating fuel prices for each conventional generator. Refer to the CSV file 'data/validation/monthly_fuel_price.csv'.", "type": "boolean" }, + "fuel_price_rolling_window": { + "default": 6, + "description": "Monthly rolling mean window for fossil fuel prices smoothing.", + "minimum": 1, + "type": "integer" + }, "nuclear": { "additionalProperties": { "anyOf": [ @@ -797,10 +811,15 @@ "default": 0.0, "description": "Exogenous price of carbon-dioxide. In electricity-only runs it is added to the marginal costs of fossil-fuelled generators according to their carbon intensity, while for sector networks it applies to emissions ending up in CO2 atmosphere." }, - "co2_monthly_prices": { + "dynamic": { "default": false, - "description": "Add monthly cost for a carbon-dioxide price based on historical values built by the rule `build_monthly_prices`.", + "description": "Add time-varying cost for a carbon-dioxide price based on historical values built by the rule `build_co2_prices`.", "type": "boolean" + }, + "rolling_window": { + "default": 90, + "description": "Rolling window (in days) for smoothing the historical CO2 prices when `dynamic` is set to True.", + "type": "integer" } } } @@ -932,6 +951,26 @@ } } }, + "worldbank_commodity_prices": { + "description": "Configuration for a single data source.", + "properties": { + "source": { + "default": "archive", + "description": "Source of the data. 'archive' retrieves pre-built data, 'primary' retrieves from primary source.", + "enum": [ + "archive", + "primary", + "build" + ], + "type": "string" + }, + "version": { + "default": "latest", + "description": "Version of the data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source.", + "type": "string" + } + } + }, "gem_europe_gas_tracker": { "description": "Configuration for a single data source.", "properties": { @@ -972,6 +1011,26 @@ } } }, + "instrat_co2_prices": { + "description": "Configuration for a single data source.", + "properties": { + "source": { + "default": "archive", + "description": "Source of the data. 'archive' retrieves pre-built data, 'primary' retrieves from primary source.", + "enum": [ + "archive", + "primary", + "build" + ], + "type": "string" + }, + "version": { + "default": "latest", + "description": "Version of the data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source.", + "type": "string" + } + } + }, "co2stop": { "description": "Configuration for a single data source.", "properties": { @@ -1212,6 +1271,26 @@ } } }, + "swiss_energy_balances": { + "description": "Configuration for a single data source.", + "properties": { + "source": { + "default": "archive", + "description": "Source of the data. 'archive' retrieves pre-built data, 'primary' retrieves from primary source.", + "enum": [ + "archive", + "primary", + "build" + ], + "type": "string" + }, + "version": { + "default": "latest", + "description": "Version of the data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source.", + "type": "string" + } + } + }, "synthetic_electricity_demand": { "description": "Configuration for a single data source.", "properties": { @@ -1872,6 +1951,66 @@ } } }, + "jrc_energy_atlas": { + "description": "Configuration for a single data source.", + "properties": { + "source": { + "default": "archive", + "description": "Source of the data. 'archive' retrieves pre-built data, 'primary' retrieves from primary source.", + "enum": [ + "archive", + "primary", + "build" + ], + "type": "string" + }, + "version": { + "default": "latest", + "description": "Version of the data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source.", + "type": "string" + } + } + }, + "desnz_electricity_consumption": { + "description": "Configuration for a single data source.", + "properties": { + "source": { + "default": "archive", + "description": "Source of the data. 'archive' retrieves pre-built data, 'primary' retrieves from primary source.", + "enum": [ + "archive", + "primary", + "build" + ], + "type": "string" + }, + "version": { + "default": "latest", + "description": "Version of the data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source.", + "type": "string" + } + } + }, + "ons_lad": { + "description": "Configuration for a single data source.", + "properties": { + "source": { + "default": "archive", + "description": "Source of the data. 'archive' retrieves pre-built data, 'primary' retrieves from primary source.", + "enum": [ + "archive", + "primary", + "build" + ], + "type": "string" + }, + "version": { + "default": "latest", + "description": "Version of the data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source.", + "type": "string" + } + } + }, "bidding_zones_electricitymaps": { "description": "Configuration for a single data source.", "properties": { @@ -2086,7 +2225,7 @@ "type": "boolean" } ], - "default": "(DateOut >= 2024 or DateOut != DateOut) and not (Country == 'Germany' and Fueltype == 'Nuclear')", + "default": "(DateOut > 2025 or DateOut != DateOut) and (DateIn < 2026 or DateIn != DateIn)", "description": "Filter query for the default powerplant database." }, "custom_powerplants": { @@ -2130,14 +2269,18 @@ "description": "Activate routine to estimate renewable capacities in rule `add_electricity`. This option should not be used in combination with pathway planning `foresight: myopic` or `foresight: perfect` as renewable capacities are added differently in `add_existing_baseyear`.", "type": "boolean" }, - "from_gem": { + "from_powerplantmatching": { "default": true, - "description": "Add renewable capacities from `Global Energy Monitor's Global Solar Power Tracker `_ and `Global Energy Monitor's Global Wind Power Tracker `_.", - "markdownDescription": "Add renewable capacities from [Global Energy Monitor's Global Solar Power Tracker ](https://globalenergymonitor.org/projects/global-solar-power-tracker/) and [Global Energy Monitor's Global Wind Power Tracker ](https://globalenergymonitor.org/projects/global-wind-power-tracker/).", + "description": "Add renewable capacities from powerplantmatching dataset.", + "type": "boolean" + }, + "from_irenastat": { + "default": false, + "description": "Supplement powerplantmatching dataset with heuristics based on country-level renewable capacities from IRENA (IRENASTAT).", "type": "boolean" }, "year": { - "default": 2020, + "default": 2024, "description": "Renewable capacities are based on existing capacities reported by IRENA (IRENASTAT) for the specified year.", "type": "integer" }, @@ -2175,6 +2318,11 @@ } } }, + "estimate_battery_capacities": { + "default": false, + "description": "Enable estimation of existing battery storage capacities.", + "type": "boolean" + }, "autarky": { "description": "Configuration for `electricity.autarky` settings.", "properties": { @@ -2211,7 +2359,7 @@ "description": "Configuration for `energy` settings.", "properties": { "energy_totals_year": { - "default": 2019, + "default": 2023, "description": "The year for the sector energy use. The year must be available in the Eurostat report.", "type": "integer" }, @@ -2445,14 +2593,14 @@ }, "MWh_elec_per_tMeOH": { "default": 0.167, - "description": "The energy amount of electricity needed to produce a ton of methanol. From `DECHEMA (2017) `_, Table 14, page 65.", - "markdownDescription": "The energy amount of electricity needed to produce a ton of methanol. From [DECHEMA (2017) ](https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry-p-20002750.pdf), Table 14, page 65.", + "description": "The energy amount of electricity needed to produce a ton of methanol from fossil gas. From `DECHEMA (2017) `_, Table 14, page 65.", + "markdownDescription": "The energy amount of electricity needed to produce a ton of methanol from fossil gas. From [DECHEMA (2017) ](https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry-p-20002750.pdf), Table 14, page 65.", "type": "number" }, "MWh_CH4_per_tMeOH": { "default": 10.25, - "description": "The energy amount of methane needed to produce a ton of methanol. From `DECHEMA (2017) `_, Table 14, page 65.", - "markdownDescription": "The energy amount of methane needed to produce a ton of methanol. From [DECHEMA (2017) ](https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry-p-20002750.pdf), Table 14, page 65.", + "description": "The energy amount of methane needed to produce a ton of methanol from fossil gas. From `DECHEMA (2017) `_, Table 14, page 65.", + "markdownDescription": "The energy amount of methane needed to produce a ton of methanol from fossil gas. From [DECHEMA (2017) ](https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry-p-20002750.pdf), Table 14, page 65.", "type": "number" }, "MWh_MeOH_per_tMeOH": { @@ -2673,6 +2821,11 @@ "markdownDescription": "Whether to supplement missing data for selected time period should be supplemented by synthetic data from [Zenodo ](https://zenodo.org/records/10820928).", "type": "boolean" }, + "substation_only": { + "default": true, + "description": "Whether to only consider substations for the spatial disaggregation of the per-country electricity demand data.", + "type": "boolean" + }, "distribution_key": { "description": "Configuration for `load.distribution_key` settings.", "properties": { @@ -3030,6 +3183,7 @@ "type": "array" } ], + "default": false, "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for AC-connected offshore wind turbine placement." }, "luisa": { @@ -3212,6 +3366,7 @@ "type": "array" } ], + "default": false, "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for AC-connected offshore wind turbine placement." }, "luisa": { @@ -3394,6 +3549,7 @@ "type": "array" } ], + "default": false, "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for AC-connected offshore wind turbine placement." }, "luisa": { @@ -4277,24 +4433,6 @@ "description": "The efficiency of oil-powered machinery in the conversion of oil to meet agricultural needs.", "type": "number" }, - "MWh_MeOH_per_MWh_H2": { - "default": 0.8787, - "description": "The energy amount of the produced methanol per energy amount of hydrogen. From `DECHEMA (2017) `_, page 64.", - "markdownDescription": "The energy amount of the produced methanol per energy amount of hydrogen. From [DECHEMA (2017) ](https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry-p-20002750.pdf), page 64.", - "type": "number" - }, - "MWh_MeOH_per_tCO2": { - "default": 4.0321, - "description": "The energy amount of the produced methanol per ton of CO2. From `DECHEMA (2017) `_, page 66.", - "markdownDescription": "The energy amount of the produced methanol per ton of CO2. From [DECHEMA (2017) ](https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry-p-20002750.pdf), page 66.", - "type": "number" - }, - "MWh_MeOH_per_MWh_e": { - "default": 3.6907, - "description": "The energy amount of the produced methanol per energy amount of electricity. From `DECHEMA (2017) `_, page 64.", - "markdownDescription": "The energy amount of the produced methanol per energy amount of electricity. From [DECHEMA (2017) ](https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry-p-20002750.pdf), page 64.", - "type": "number" - }, "shipping_hydrogen_liquefaction": { "default": false, "description": "Whether to include liquefaction costs for hydrogen demand in shipping.", @@ -5158,6 +5296,11 @@ "description": "Number of snapshots to consider in each iteration. Defaults to 100.", "type": "integer" }, + "overlap": { + "default": 0, + "description": "Number of overlapping snapshots between consecutive iterations in rolling horizon optimization. Defaults to 0, which means no overlap.", + "type": "integer" + }, "post_discretization": { "description": "Configuration for `solving.options.post_discretization` settings.", "properties": { @@ -5202,6 +5345,11 @@ "description": "Whether to keep LPs and MPS files after solving.", "type": "boolean" }, + "store_model": { + "default": false, + "description": "Store the linopy model to a NetCDF file after solving. Not supported with rolling_horizon. Not scenario-aware.", + "type": "boolean" + }, "model_kwargs": { "description": "Configuration for `solving.options.model_kwargs` settings.", "properties": { @@ -6207,10 +6355,15 @@ "default": 0.0, "description": "Exogenous price of carbon-dioxide. In electricity-only runs it is added to the marginal costs of fossil-fuelled generators according to their carbon intensity, while for sector networks it applies to emissions ending up in CO2 atmosphere." }, - "co2_monthly_prices": { + "dynamic": { "default": false, - "description": "Add monthly cost for a carbon-dioxide price based on historical values built by the rule `build_monthly_prices`.", + "description": "Add time-varying cost for a carbon-dioxide price based on historical values built by the rule `build_co2_prices`.", "type": "boolean" + }, + "rolling_window": { + "default": 90, + "description": "Rolling window (in days) for smoothing the historical CO2 prices when `dynamic` is set to True.", + "type": "integer" } } }, @@ -6258,14 +6411,18 @@ "description": "Activate routine to estimate renewable capacities in rule `add_electricity`. This option should not be used in combination with pathway planning `foresight: myopic` or `foresight: perfect` as renewable capacities are added differently in `add_existing_baseyear`.", "type": "boolean" }, - "from_gem": { + "from_powerplantmatching": { "default": true, - "description": "Add renewable capacities from `Global Energy Monitor's Global Solar Power Tracker `_ and `Global Energy Monitor's Global Wind Power Tracker `_.", - "markdownDescription": "Add renewable capacities from [Global Energy Monitor's Global Solar Power Tracker ](https://globalenergymonitor.org/projects/global-solar-power-tracker/) and [Global Energy Monitor's Global Wind Power Tracker ](https://globalenergymonitor.org/projects/global-wind-power-tracker/).", + "description": "Add renewable capacities from powerplantmatching dataset.", + "type": "boolean" + }, + "from_irenastat": { + "default": false, + "description": "Supplement powerplantmatching dataset with heuristics based on country-level renewable capacities from IRENA (IRENASTAT).", "type": "boolean" }, "year": { - "default": 2020, + "default": 2024, "description": "Renewable capacities are based on existing capacities reported by IRENA (IRENASTAT) for the specified year.", "type": "integer" }, @@ -6787,6 +6944,7 @@ "type": "array" } ], + "default": false, "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for AC-connected offshore wind turbine placement." }, "luisa": { @@ -7318,13 +7476,6 @@ "description": "Aggregates all nodes without power injection (positive or negative, i.e. demand or generation) to electrically closest ones.", "type": "boolean" }, - "exclude_carriers": { - "description": "List of carriers which will not be aggregated. If empty, all carriers will be aggregated.", - "items": { - "type": "string" - }, - "type": "array" - }, "remove_stubs": { "default": true, "description": "Controls whether radial parts of the network should be recursively aggregated. Defaults to true.", @@ -7644,6 +7795,11 @@ "description": "Number of snapshots to consider in each iteration. Defaults to 100.", "type": "integer" }, + "overlap": { + "default": 0, + "description": "Number of overlapping snapshots between consecutive iterations in rolling horizon optimization. Defaults to 0, which means no overlap.", + "type": "integer" + }, "post_discretization": { "description": "Configuration for `solving.options.post_discretization` settings.", "properties": { @@ -7688,6 +7844,11 @@ "description": "Whether to keep LPs and MPS files after solving.", "type": "boolean" }, + "store_model": { + "default": false, + "description": "Store the linopy model to a NetCDF file after solving. Not supported with rolling_horizon. Not scenario-aware.", + "type": "boolean" + }, "model_kwargs": { "description": "Configuration for `solving.options.model_kwargs` settings.", "properties": { @@ -7851,7 +8012,7 @@ "description": "Combined configuration schema for PyPSA-EUR.", "properties": { "version": { - "default": "v2025.07.0", + "default": "v2026.02.0", "description": "Version of PyPSA-Eur. Descriptive only.", "type": "string" }, @@ -8331,7 +8492,7 @@ "type": "boolean" } ], - "default": "(DateOut >= 2024 or DateOut != DateOut) and not (Country == 'Germany' and Fueltype == 'Nuclear')", + "default": "(DateOut > 2025 or DateOut != DateOut) and (DateIn < 2026 or DateIn != DateIn)", "description": "Filter query for the default powerplant database." }, "custom_powerplants": { @@ -8375,14 +8536,18 @@ "description": "Activate routine to estimate renewable capacities in rule `add_electricity`. This option should not be used in combination with pathway planning `foresight: myopic` or `foresight: perfect` as renewable capacities are added differently in `add_existing_baseyear`.", "type": "boolean" }, - "from_gem": { + "from_powerplantmatching": { "default": true, - "description": "Add renewable capacities from `Global Energy Monitor's Global Solar Power Tracker `_ and `Global Energy Monitor's Global Wind Power Tracker `_.", - "markdownDescription": "Add renewable capacities from [Global Energy Monitor's Global Solar Power Tracker ](https://globalenergymonitor.org/projects/global-solar-power-tracker/) and [Global Energy Monitor's Global Wind Power Tracker ](https://globalenergymonitor.org/projects/global-wind-power-tracker/).", + "description": "Add renewable capacities from powerplantmatching dataset.", + "type": "boolean" + }, + "from_irenastat": { + "default": false, + "description": "Supplement powerplantmatching dataset with heuristics based on country-level renewable capacities from IRENA (IRENASTAT).", "type": "boolean" }, "year": { - "default": 2020, + "default": 2024, "description": "Renewable capacities are based on existing capacities reported by IRENA (IRENASTAT) for the specified year.", "type": "integer" }, @@ -8420,6 +8585,11 @@ } } }, + "estimate_battery_capacities": { + "default": false, + "description": "Enable estimation of existing battery storage capacities.", + "type": "boolean" + }, "autarky": { "description": "Configuration for `electricity.autarky` settings.", "properties": { @@ -8470,6 +8640,11 @@ "description": "Whether progressbar for atlite conversion processes should be shown. False saves time.", "type": "boolean" }, + "plot_availability_matrix": { + "default": false, + "description": "Whether to plot the landuse availability matrix.", + "type": "boolean" + }, "cutouts": { "additionalProperties": { "description": "Configuration for a single cutout in `atlite.cutouts`.", @@ -8887,6 +9062,7 @@ "type": "array" } ], + "default": false, "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for AC-connected offshore wind turbine placement." }, "luisa": { @@ -9069,6 +9245,7 @@ "type": "array" } ], + "default": false, "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for AC-connected offshore wind turbine placement." }, "luisa": { @@ -9251,6 +9428,7 @@ "type": "array" } ], + "default": false, "description": "Specifies areas according to CORINE Land Cover codes which are generally eligible for AC-connected offshore wind turbine placement." }, "luisa": { @@ -9698,6 +9876,12 @@ "description": "Consider the monthly fluctuating fuel prices for each conventional generator. Refer to the CSV file 'data/validation/monthly_fuel_price.csv'.", "type": "boolean" }, + "fuel_price_rolling_window": { + "default": 6, + "description": "Monthly rolling mean window for fossil fuel prices smoothing.", + "minimum": 1, + "type": "integer" + }, "nuclear": { "additionalProperties": { "anyOf": [ @@ -9994,6 +10178,11 @@ "markdownDescription": "Whether to supplement missing data for selected time period should be supplemented by synthetic data from [Zenodo ](https://zenodo.org/records/10820928).", "type": "boolean" }, + "substation_only": { + "default": true, + "description": "Whether to only consider substations for the spatial disaggregation of the per-country electricity demand data.", + "type": "boolean" + }, "distribution_key": { "description": "Configuration for `load.distribution_key` settings.", "properties": { @@ -10055,7 +10244,7 @@ "description": "Configuration for `energy` settings.", "properties": { "energy_totals_year": { - "default": 2019, + "default": 2023, "description": "The year for the sector energy use. The year must be available in the Eurostat report.", "type": "integer" }, @@ -10532,24 +10721,6 @@ "description": "The efficiency of oil-powered machinery in the conversion of oil to meet agricultural needs.", "type": "number" }, - "MWh_MeOH_per_MWh_H2": { - "default": 0.8787, - "description": "The energy amount of the produced methanol per energy amount of hydrogen. From `DECHEMA (2017) `_, page 64.", - "markdownDescription": "The energy amount of the produced methanol per energy amount of hydrogen. From [DECHEMA (2017) ](https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry-p-20002750.pdf), page 64.", - "type": "number" - }, - "MWh_MeOH_per_tCO2": { - "default": 4.0321, - "description": "The energy amount of the produced methanol per ton of CO2. From `DECHEMA (2017) `_, page 66.", - "markdownDescription": "The energy amount of the produced methanol per ton of CO2. From [DECHEMA (2017) ](https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry-p-20002750.pdf), page 66.", - "type": "number" - }, - "MWh_MeOH_per_MWh_e": { - "default": 3.6907, - "description": "The energy amount of the produced methanol per energy amount of electricity. From `DECHEMA (2017) `_, page 64.", - "markdownDescription": "The energy amount of the produced methanol per energy amount of electricity. From [DECHEMA (2017) ](https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry-p-20002750.pdf), page 64.", - "type": "number" - }, "shipping_hydrogen_liquefaction": { "default": false, "description": "Whether to include liquefaction costs for hydrogen demand in shipping.", @@ -11396,14 +11567,14 @@ }, "MWh_elec_per_tMeOH": { "default": 0.167, - "description": "The energy amount of electricity needed to produce a ton of methanol. From `DECHEMA (2017) `_, Table 14, page 65.", - "markdownDescription": "The energy amount of electricity needed to produce a ton of methanol. From [DECHEMA (2017) ](https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry-p-20002750.pdf), Table 14, page 65.", + "description": "The energy amount of electricity needed to produce a ton of methanol from fossil gas. From `DECHEMA (2017) `_, Table 14, page 65.", + "markdownDescription": "The energy amount of electricity needed to produce a ton of methanol from fossil gas. From [DECHEMA (2017) ](https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry-p-20002750.pdf), Table 14, page 65.", "type": "number" }, "MWh_CH4_per_tMeOH": { "default": 10.25, - "description": "The energy amount of methane needed to produce a ton of methanol. From `DECHEMA (2017) `_, Table 14, page 65.", - "markdownDescription": "The energy amount of methane needed to produce a ton of methanol. From [DECHEMA (2017) ](https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry-p-20002750.pdf), Table 14, page 65.", + "description": "The energy amount of methane needed to produce a ton of methanol from fossil gas. From `DECHEMA (2017) `_, Table 14, page 65.", + "markdownDescription": "The energy amount of methane needed to produce a ton of methanol from fossil gas. From [DECHEMA (2017) ](https://dechema.de/dechema_media/Downloads/Positionspapiere/Technology_study_Low_carbon_energy_and_feedstock_for_the_European_chemical_industry-p-20002750.pdf), Table 14, page 65.", "type": "number" }, "MWh_MeOH_per_tMeOH": { @@ -11552,10 +11723,15 @@ "default": 0.0, "description": "Exogenous price of carbon-dioxide. In electricity-only runs it is added to the marginal costs of fossil-fuelled generators according to their carbon intensity, while for sector networks it applies to emissions ending up in CO2 atmosphere." }, - "co2_monthly_prices": { + "dynamic": { "default": false, - "description": "Add monthly cost for a carbon-dioxide price based on historical values built by the rule `build_monthly_prices`.", + "description": "Add time-varying cost for a carbon-dioxide price based on historical values built by the rule `build_co2_prices`.", "type": "boolean" + }, + "rolling_window": { + "default": 90, + "description": "Rolling window (in days) for smoothing the historical CO2 prices when `dynamic` is set to True.", + "type": "integer" } } } @@ -11646,13 +11822,6 @@ "description": "Aggregates all nodes without power injection (positive or negative, i.e. demand or generation) to electrically closest ones.", "type": "boolean" }, - "exclude_carriers": { - "description": "List of carriers which will not be aggregated. If empty, all carriers will be aggregated.", - "items": { - "type": "string" - }, - "type": "array" - }, "remove_stubs": { "default": true, "description": "Controls whether radial parts of the network should be recursively aggregated. Defaults to true.", @@ -11694,9 +11863,19 @@ "type": "array" }, "consider_efficiency_classes": { + "anyOf": [ + { + "type": "boolean" + }, + { + "items": { + "type": "number" + }, + "type": "array" + } + ], "default": false, - "description": "Aggregated each carriers into the top 10-quantile (high), the bottom 90-quantile (low), and everything in between (medium).", - "type": "boolean" + "description": "Aggregate each carrier into efficiency classes defined by quantile boundaries. If True, uses [0.1, 0.9] as default quantiles (labels: Q0, Q10, Q90). If a list of floats, defines custom quantile boundaries, e.g. [0.1, 0.5, 0.9]." }, "aggregation_strategies": { "description": "Configuration for `clustering.aggregation_strategies` settings.", @@ -12006,6 +12185,11 @@ "description": "Number of snapshots to consider in each iteration. Defaults to 100.", "type": "integer" }, + "overlap": { + "default": 0, + "description": "Number of overlapping snapshots between consecutive iterations in rolling horizon optimization. Defaults to 0, which means no overlap.", + "type": "integer" + }, "post_discretization": { "description": "Configuration for `solving.options.post_discretization` settings.", "properties": { @@ -12050,6 +12234,11 @@ "description": "Whether to keep LPs and MPS files after solving.", "type": "boolean" }, + "store_model": { + "default": false, + "description": "Store the linopy model to a NetCDF file after solving. Not supported with rolling_horizon. Not scenario-aware.", + "type": "boolean" + }, "model_kwargs": { "description": "Configuration for `solving.options.model_kwargs` settings.", "properties": { @@ -12318,6 +12507,26 @@ } } }, + "worldbank_commodity_prices": { + "description": "Configuration for a single data source.", + "properties": { + "source": { + "default": "archive", + "description": "Source of the data. 'archive' retrieves pre-built data, 'primary' retrieves from primary source.", + "enum": [ + "archive", + "primary", + "build" + ], + "type": "string" + }, + "version": { + "default": "latest", + "description": "Version of the data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source.", + "type": "string" + } + } + }, "gem_europe_gas_tracker": { "description": "Configuration for a single data source.", "properties": { @@ -12358,6 +12567,26 @@ } } }, + "instrat_co2_prices": { + "description": "Configuration for a single data source.", + "properties": { + "source": { + "default": "archive", + "description": "Source of the data. 'archive' retrieves pre-built data, 'primary' retrieves from primary source.", + "enum": [ + "archive", + "primary", + "build" + ], + "type": "string" + }, + "version": { + "default": "latest", + "description": "Version of the data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source.", + "type": "string" + } + } + }, "co2stop": { "description": "Configuration for a single data source.", "properties": { @@ -12598,6 +12827,26 @@ } } }, + "swiss_energy_balances": { + "description": "Configuration for a single data source.", + "properties": { + "source": { + "default": "archive", + "description": "Source of the data. 'archive' retrieves pre-built data, 'primary' retrieves from primary source.", + "enum": [ + "archive", + "primary", + "build" + ], + "type": "string" + }, + "version": { + "default": "latest", + "description": "Version of the data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source.", + "type": "string" + } + } + }, "synthetic_electricity_demand": { "description": "Configuration for a single data source.", "properties": { @@ -13258,6 +13507,66 @@ } } }, + "jrc_energy_atlas": { + "description": "Configuration for a single data source.", + "properties": { + "source": { + "default": "archive", + "description": "Source of the data. 'archive' retrieves pre-built data, 'primary' retrieves from primary source.", + "enum": [ + "archive", + "primary", + "build" + ], + "type": "string" + }, + "version": { + "default": "latest", + "description": "Version of the data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source.", + "type": "string" + } + } + }, + "desnz_electricity_consumption": { + "description": "Configuration for a single data source.", + "properties": { + "source": { + "default": "archive", + "description": "Source of the data. 'archive' retrieves pre-built data, 'primary' retrieves from primary source.", + "enum": [ + "archive", + "primary", + "build" + ], + "type": "string" + }, + "version": { + "default": "latest", + "description": "Version of the data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source.", + "type": "string" + } + } + }, + "ons_lad": { + "description": "Configuration for a single data source.", + "properties": { + "source": { + "default": "archive", + "description": "Source of the data. 'archive' retrieves pre-built data, 'primary' retrieves from primary source.", + "enum": [ + "archive", + "primary", + "build" + ], + "type": "string" + }, + "version": { + "default": "latest", + "description": "Version of the data to use. Uses the specific 'version' for the selected 'source' or the dataset tagged 'latest' for this source.", + "type": "string" + } + } + }, "bidding_zones_electricitymaps": { "description": "Configuration for a single data source.", "properties": { diff --git a/config/test/config.clusters.yaml b/config/test/config.clusters.yaml index 7f61f22089..efc9cab92a 100644 --- a/config/test/config.clusters.yaml +++ b/config/test/config.clusters.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=../schema.json +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 diff --git a/config/test/config.electricity.yaml b/config/test/config.electricity.yaml index fba70ed84b..7e13435c5f 100644 --- a/config/test/config.electricity.yaml +++ b/config/test/config.electricity.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=../schema.json +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 @@ -37,7 +37,7 @@ electricity: renewable_carriers: [solar, solar-hsat, onwind, offwind-ac, offwind-dc, offwind-float] estimate_renewable_capacities: enable: true - from_gem: true + from_powerplantmatching: true year: 2020 expansion_limit: false technology_mapping: @@ -77,7 +77,7 @@ lines: solving: solver: name: highs - options: highs-simplex + options: highs-default check_objective: enable: false diff --git a/config/test/config.myopic.yaml b/config/test/config.myopic.yaml index 27f5954c0a..74853c8d14 100644 --- a/config/test/config.myopic.yaml +++ b/config/test/config.myopic.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=../schema.json +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 @@ -65,7 +65,7 @@ sector: electricity: extendable_carriers: - Generator: [OCGT] + Generator: [OCGT, solar, onwind, OCGT, CCGT, nuclear] StorageUnit: [battery] Store: [H2] Link: [H2 pipeline] @@ -106,7 +106,7 @@ industry: solving: solver: name: highs - options: highs-simplex + options: highs-default mem: 4000 plotting: diff --git a/config/test/config.overnight.yaml b/config/test/config.overnight.yaml index 7127ade43e..809eeb6355 100644 --- a/config/test/config.overnight.yaml +++ b/config/test/config.overnight.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=../schema.json +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 @@ -29,7 +29,7 @@ snapshots: electricity: extendable_carriers: - Generator: [OCGT] + Generator: [OCGT, solar, onwind, OCGT, CCGT, nuclear] StorageUnit: [battery] Store: [H2] Link: [H2 pipeline] @@ -111,7 +111,7 @@ industry: solving: solver: name: highs - options: highs-simplex + options: highs-default mem: 4000 check_objective: diff --git a/config/test/config.perfect.yaml b/config/test/config.perfect.yaml index bc41ddfd16..09e5ef2be3 100644 --- a/config/test/config.perfect.yaml +++ b/config/test/config.perfect.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=../schema.json +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 diff --git a/config/test/config.scenarios.yaml b/config/test/config.scenarios.yaml index 1315ffcc1b..f990d8e0b2 100644 --- a/config/test/config.scenarios.yaml +++ b/config/test/config.scenarios.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=../schema.json +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 diff --git a/config/test/config.tyndp.yaml b/config/test/config.tyndp.yaml index 33b224105d..7d3cc73073 100644 --- a/config/test/config.tyndp.yaml +++ b/config/test/config.tyndp.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=../schema.json +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 diff --git a/config/test/config.validator.yaml b/config/test/config.validator.yaml index 4caa222a61..87dfe63774 100644 --- a/config/test/config.validator.yaml +++ b/config/test/config.validator.yaml @@ -1,4 +1,4 @@ -# yaml-language-server: $schema=../schema.json +# yaml-language-server: $schema=../schema.default.json # SPDX-FileCopyrightText: Contributors to PyPSA-Eur # # SPDX-License-Identifier: CC0-1.0 diff --git a/data/custom_costs.csv b/data/custom_costs.csv index 312cd0b3da..d7b71e3bab 100644 --- a/data/custom_costs.csv +++ b/data/custom_costs.csv @@ -10,4 +10,5 @@ all,battery,marginal_cost,0,EUR/MWh,Default value to prevent mathematical degene all,battery inverter,marginal_cost,0,EUR/MWh,Default value to prevent mathematical degeneracy in optimisation, all,home battery storage,marginal_cost,0,EUR/MWh,Default value to prevent mathematical degeneracy in optimisation, all,water tank charger,marginal_cost,0.03,EUR/MWh,Default value to prevent mathematical degeneracy in optimisation, -all,central water pit charger,marginal_cost,0.025,EUR/MWh,Default value to prevent mathematical degeneracy in optimisation, +all,central water pit charger,marginal_cost,0.04,EUR/MWh,Default value to prevent mathematical degeneracy in optimisation, +all,central water pit discharger,marginal_cost,0.05,EUR/MWh,Default value to prevent mathematical degeneracy in optimisation, diff --git a/data/nuclear_p_max_pu.csv b/data/nuclear_p_max_pu.csv index 5a8d1d131e..663bab3e75 100644 --- a/data/nuclear_p_max_pu.csv +++ b/data/nuclear_p_max_pu.csv @@ -1,17 +1,18 @@ -country,factor -BE,0.883 -BG,0.876 -CZ,0.839 -FI,0.924 -FR,0.616 -DE,0.926 -HU,0.891 -NL,0.901 -RO,0.906 -SK,0.908 -SI,0.884 -ES,0.883 -SE,0.817 -CH,0.834 -GB,0.684 -UA,0.701 +country,2009,2010,2011,2012,2013,2015,2016,2017,2018,2019,2020,2021,2022,2023,2024 +BE,0.873,0.875,0.887,0.741,0.781,0.544,0.796,0.775,0.522,0.796,0.626,0.920,0.840,0.888,0.864 +BG,0.867,0.843,0.900,0.885,0.867,0.865,0.883,0.868,0.886,0.894,0.890,0.885,0.877,0.867,0.848 +CZ,0.796,0.816,0.818,0.860,0.864,0.736,0.656,0.775,0.818,0.827,0.819,0.844,0.844,0.828,0.806 +FI,0.952,0.919,0.928,0.910,0.935,0.923,0.918,0.887,0.901,0.936,0.911,0.924,0.912,0.932,0.835 +FR,0.729,0.764,0.793,0.760,0.760,0.785,0.715,0.704,0.730,0.710,0.647,0.688,0.536,0.622,0.715 +DE,0.736,0.767,0.820,0.905,0.886,0.897,0.863,0.784,0.881,0.871,0.880,0.944,0.940,0.714, +HU,0.876,0.886,0.889,0.890,0.865,0.891,0.905,0.909,0.886,0.913,0.899,0.895,0.885,0.894,0.899 +NL,0.951,0.889,0.921,0.869,0.637,0.905,0.878,0.756,0.783,0.868,0.917,0.864,0.941,0.898,0.796 +RO,0.948,0.935,0.946,0.926,0.935,0.938,0.910,0.928,0.919,0.909,0.922,0.913,0.897,0.909,0.880 +SK,0.867,0.870,0.906,0.904,0.920,0.897,0.870,0.890,0.875,0.900,0.897,0.899,0.906,0.920,0.862 +SI,0.908,0.893,0.986,0.865,0.830,0.885,0.892,0.985,0.906,0.913,0.993,0.896,0.878,0.878,0.906 +ES,0.775,0.901,0.832,0.887,0.845,0.876,0.898,0.890,0.855,0.897,0.906,0.873,0.900,0.877,0.872 +SE,0.634,0.682,0.713,0.745,0.766,0.649,0.712,0.810,0.869,0.851,0.724,0.846,0.827,0.779,0.812 +CH,0.922,0.886,0.895,0.848,0.860,0.760,0.694,0.671,0.838,0.870,0.885,0.714,0.890,0.899,0.882 +GB,0.708,0.634,0.712,0.771,0.788,0.771,0.826,0.815,0.757,0.656,0.588,0.585,0.774,0.724,0.722 +UA,0.745,0.760,0.756,0.752,0.765,0.740,0.679,0.708,0.679,0.674,0.680,0.701,,, +LT,0.938,,,,,,,,,,,,,, \ No newline at end of file diff --git a/data/switzerland-new_format-all_years.csv b/data/switzerland-new_format-all_years.csv deleted file mode 100644 index d083e8a887..0000000000 --- a/data/switzerland-new_format-all_years.csv +++ /dev/null @@ -1,25 +0,0 @@ -country,item,2010,2011,2012,2013,2014,2015,2016,2017,2018,2019,2020,2021,2022 -CH,total residential,268.2,223.4,243.4,261.3,214.2,229.1,241.2,236.5,223.7,226.5,219.1,241.2,211.3 -CH,total residential space,192.2,149,168.1,185.5,139.7,154.4,167.3,161.5,147.2,150.4,140.2,166.2,131.9 -CH,total residential water,32.2,31.6,31.9,32.2,31.7,31.9,31.8,31.8,31.8,31.7,33.3,32.5,32.5 -CH,total residential cooking,9.3,9.3,9.3,9.4,9.5,9.6,9.9,10,10.1,10.2,10.5,10.3,10.3 -CH,electricity residential,67.9,63.7,65.7,67.6,63,64.4,69.7,69.2,67.7,68.1,68.7,70.8,66.8 -CH,electricity residential space,15.9,12.8,14.3,15.8,12.3,13.5,15.8,15.6,14.7,15.3,14.8,17.8,14.8 -CH,electricity residential water,8.8,8.5,8.5,8.6,8.5,8.6,8.9,9,9.2,9.3,9.7,9.5,9.5 -CH,electricity residential cooking,4.9,4.9,4.9,4.9,5,5,5,5.1,5.1,5.1,5.4,5.2,5.3 -CH,total services,145.9,127.4,136.7,144,124.5,132.5,150.5,147.7,141.5,143.1,129.7,144.2,122.5 -CH,total services space,80,62.2,70.8,77.4,58.3,64.3,77,74.4,68.2,69.8,64.3,75.7,58.7 -CH,total services water,10.1,10,10.1,10.1,10,10,11.4,11.3,11.2,11.1,9.7,10.4,12 -CH,total services cooking,2.5,2.4,2.3,2.3,2.4,2.3,3.1,3.1,3.2,3.3,2.1,2.6,3.2 -CH,electricity services,60.5,59.2,60.3,61.4,60.3,62.6,65.9,65.7,65.5,65.6,58.8,61.6,61.6 -CH,electricity services space,4,3.2,3.8,4.2,3.3,3.6,2.7,2.5,2.3,2.3,2.2,2.5,2.5 -CH,electricity services water,0.7,0.7,0.7,0.7,0.7,0.7,1.2,1.1,1.1,1.1,0.9,1,1 -CH,electricity services cooking,2.5,2.4,2.3,2.3,2.4,2.3,3.1,3.1,3.1,3.2,3.3,2.1,3.2 -CH,total rail,11.5,11.1,11.2,11.4,11.1,11.4,11.6,11.4,11.2,11,10.2,10.6,10.8 -CH,total road,199.4,200.4,200.4,201.2,202,203.1,203.9,203.7,202.6,200.5,182.6,188.3,193.3 -CH,electricity road,0,0,0,0,0,0,0.1,0.2,0.3,0.4,0.5,0.8,1.3 -CH,electricity rail,11.5,11.1,11.2,11.4,11.1,11.4,11.5,11.3,11.1,11,10.1,10.6,10.7 -CH,total domestic aviation,3.3,3.2,3.4,3.4,3.5,3.5,3.6,3.1,3.1,2.9,2.5,2.8,3 -CH,total international aviation,58,62,63.5,64.2,64.5,66.8,70.6,72.8,77.2,78.2,28.2,31.2,56.8 -CH,total domestic navigation,1.6,1.6,1.6,1.6,1.6,1.6,1.4,1.4,1.4,1.4,1.4,1.4,1.4 -CH,total international navigation,0,0,0,0,0,0,0,0,0,0,0,0,0 diff --git a/data/unit_commitment.csv b/data/unit_commitment.csv index e93b1a903c..804bc3598c 100644 --- a/data/unit_commitment.csv +++ b/data/unit_commitment.csv @@ -1,8 +1,9 @@ attribute,OCGT,CCGT,coal,lignite,nuclear -ramp_limit_up,1,1,1,1,0.3 -ramp_limit_start_up,0.2,0.45,0.38,0.4,0.5 -ramp_limit_shut_down,0.2,0.45,0.38,0.4,0.5 -p_min_pu,0.2,0.45,0.325,0.4,0.5 -min_up_time,,3,5,7,6 -min_down_time,,2,6,6,10 -start_up_cost,9.6,34.2,35.64,19.14,16.5 +ramp_limit_up,1,1,0.9,0.6,0.3 +ramp_limit_down,1,1,0.9,0.6,0.3 +ramp_limit_start_up,0.8,0.5,0.4,0.4,0.2 +ramp_limit_shut_down,0.8,0.5,0.4,0.4,0.2 +p_min_pu,0.2,0.45,0.38,0.5,0.5 +min_up_time,0,4,8,8,10 +min_down_time,0,2,8,8,10 +start_up_cost,24,60,49,49,250 diff --git a/data/versions.csv b/data/versions.csv index 94eabacb14..e4ebd18957 100644 --- a/data/versions.csv +++ b/data/versions.csv @@ -18,12 +18,14 @@ copernicus_land_cover,v3.0.1,archive,latest supported,2026-01-20,"The primary is copernicus_land_cover,v2.0.2,archive,deprecated supported,2026-01-13,,https://data.pypsa.org/workflows/eur/copernicus_land_cover/v2.0.2/PROBAV_LC100_global_v3.0.1_2015-base_Discrete-Classification-map_EPSG-4326.tif corine,v18_5,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/corine/v18_5/corine.zip corine,unknown,primary,latest supported,2025-12-02,Need to register with CLMS API and create an access token. The download URL is dynamic, -costs,v0.13.4,primary,latest supported,2025-12-02,"Part of the `technologydata` repository and versioned on GitHub, i.e. no dedicated 'archive' entry.",https://raw.githubusercontent.com/PyPSA/technology-data/refs/tags/v0.13.4/outputs -costs,v0.13.4,archive,supported,2026-01-21,"Part of the `technologydata` repository and versioned on GitHub, i.e. no dedicated 'archive' entry.",https://data.pypsa.org/workflows/eur/costs/v0.13.4 -costs,v0.13.3,primary,supported,2025-12-02,"Part of the `technologydata` repository and versioned on GitHub, i.e. no dedicated 'archive' entry.",https://raw.githubusercontent.com/PyPSA/technology-data/refs/tags/v0.13.3/outputs -costs,v0.13.3,archive,supported,2026-01-20,"Part of the `technologydata` repository and versioned on GitHub, i.e. no dedicated 'archive' entry.",https://data.pypsa.org/workflows/eur/costs/v0.13.3 -costs,v0.13.2,primary,supported,2025-12-02,"Part of the `technologydata` repository and versioned on GitHub, i.e. no dedicated 'archive' entry.",https://raw.githubusercontent.com/PyPSA/technology-data/refs/tags/v0.13.2/outputs -costs,v0.13.2,archive,supported,2026-01-20,"Part of the `technologydata` repository and versioned on GitHub, i.e. no dedicated 'archive' entry.",https://data.pypsa.org/workflows/eur/costs/v0.13.2 +costs,v0.14.0,primary,latest supported,2026-02-13,Part of the `technologydata` repository and versioned on GitHub.,https://raw.githubusercontent.com/PyPSA/technology-data/refs/tags/v0.14.0/outputs +costs,v0.14.0,archive,latest supported,2026-02-13,Part of the `technologydata` repository and versioned on GitHub.,https://data.pypsa.org/workflows/eur/costs/v0.14.0 +costs,v0.13.4,primary,supported,2025-12-02,Part of the `technologydata` repository and versioned on GitHub.,https://raw.githubusercontent.com/PyPSA/technology-data/refs/tags/v0.13.4/outputs +costs,v0.13.4,archive,supported,2026-01-21,Part of the `technologydata` repository and versioned on GitHub.,https://data.pypsa.org/workflows/eur/costs/v0.13.4 +costs,v0.13.3,primary,supported,2025-12-02,Part of the `technologydata` repository and versioned on GitHub.,https://raw.githubusercontent.com/PyPSA/technology-data/refs/tags/v0.13.3/outputs +costs,v0.13.3,archive,supported,2026-01-20,Part of the `technologydata` repository and versioned on GitHub.,https://data.pypsa.org/workflows/eur/costs/v0.13.3 +costs,v0.13.2,primary,supported,2025-12-02,Part of the `technologydata` repository and versioned on GitHub.,https://raw.githubusercontent.com/PyPSA/technology-data/refs/tags/v0.13.2/outputs +costs,v0.13.2,archive,supported,2026-01-20,Part of the `technologydata` repository and versioned on GitHub.,https://data.pypsa.org/workflows/eur/costs/v0.13.2 country_hdd,unknown,build,latest supported,2025-12-02,Latest dataset built using ERA5 runoff data. This takes a very long time to build., country_hdd,2025-08-13,primary,latest supported,2025-12-02,,https://zenodo.org/records/16849356/files/era5-HDD-per-country.csv country_hdd,2025-08-13,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/country_hdd/2025-08-13/era5-HDD-per-country.csv @@ -32,6 +34,8 @@ country_runoff,2025-08-13,primary,latest supported,2025-12-02,,https://zenodo.or country_runoff,2025-08-13,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/country_runoff/2025-08-13/era5-runoff-per-country.csv cutout,v1.0,archive,latest supported,2026-01-13,Pre-build cutouts for PyPSA-Eur,https://data.pypsa.org/workflows/cutout/v1.0 cutout,unknown,build,latest supported,2025-12-02,Build latest cutouts using ERA5/SARAH3 data., +desnz_electricity_consumption,unknown,primary,latest supported,2026-02-02,,https://assets.publishing.service.gov.uk/media/6762951abe7b2c675de30705/Subnational_electricity_consumption_statistics_2005-2024.xlsx +desnz_electricity_consumption,2026-02-16,archive,latest supported,2026-02-16,,https://data.pypsa.org/workflows/eur/desnz_electricity_consumption/2026-02-16/Subnational_electricity_consumption_statistics_2005-2024.xlsx dh_areas,341.5,primary,latest supported,2025-12-02,,https://fordatis.fraunhofer.de/bitstream/fordatis/341.5/2/dh_areas.gpkg dh_areas,341.5,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/dh_areas/341.5/dh_areas.gpkg eez,v12_20231025,primary,latest supported,2025-12-02,API request used,https://www.marineregions.org/download_file.php @@ -46,8 +50,10 @@ eu_nuts2013,2015-12-03,primary,latest supported,2025-12-02, ,https://gisco-servi eu_nuts2013,2015-12-03,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/eu_nuts2013/2015-12-03/ref-nuts-2013-03m.geojson.zip eu_nuts2021,2021-01-01,primary,latest supported,2025-12-02,,https://gisco-services.ec.europa.eu/distribution/v2/nuts/download/ref-nuts-2021-01m.geojson.zip eu_nuts2021,2021-01-01,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/eu_nuts2021/2021-01-01/ref-nuts-2021-01m.geojson.zip -eurostat_balances,2023-04,primary,latest supported broken-link,2025-12-02,"The link is broken, use the archived versions instead.",https://ec.europa.eu/eurostat/documents/38154/4956218/Balances-April2023.zip -eurostat_balances,2023-04,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/eurostat_balances/2023-04/balances.zip +eurostat_balances,unknown,primary,latest supported,2026-02-04,,https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/data/nrg_bal_c?format=TSV&compressed=true +eurostat_balances,2026-02,archive,latest supported,2026-02-09,,https://data.pypsa.org/workflows/eur/eurostat_balances/2026-02/nrg_bal_c +eurostat_balances,2023-04,primary,not-supported,2025-12-02,"The link is broken, use the archived versions instead.",https://ec.europa.eu/eurostat/documents/38154/4956218/Balances-April2023.zip +eurostat_balances,2023-04,archive,not-supported,2026-01-13,,https://data.pypsa.org/workflows/eur/eurostat_balances/2023-04/balances.zip eurostat_household_balances,unknown,primary,latest supported,2025-12-02,"URL limits the period to 2013-2022, but the data is updated regularly.",https://ec.europa.eu/eurostat/databrowser-backend/api/extraction/1.0/LIVE/false/sdmx/csv/nrg_d_hhq__custom_11480365?startPeriod=2013&endPeriod=2022 eurostat_household_balances,2025-07-09,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/eurostat_household_balances/2025-07-09/nrg_d_hhq.csv gdp_per_capita,2018-02-06,primary,latest supported,2025-12-02,"Primary link is a direct download, earlier part of zenodo bundle",https://zenodo.org/records/16556029/files/GDP_per_capita_PPP_1990_2015_v2.nc @@ -70,10 +76,15 @@ h2_salt_caverns,16-10-2019,archive,latest supported,2026-01-13,,https://data.pyp hotmaps_industrial_sites,version-1.1,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/hotmaps_industrial_sites/version-1.1/Industrial_Database.csv hotmaps_industrial_sites,version-1.0,primary,not-supported,2025-12-02,Required renaming of country names to work with PyPSA-Eur. This was fixed in the latest version.,https://gitlab.com/hotmaps/industrial_sites/industrial_sites_Industrial_Database/-/raw/1.0/data/Industrial_Database.csv hotmaps_industrial_sites,unknown,primary,latest supported,2025-12-02,,https://gitlab.com/hotmaps/industrial_sites/industrial_sites_Industrial_Database/-/raw/master/data/Industrial_Database.csv +instrat_co2_prices,unknown,primary,latest supported,2026-02-03,API endpoint provides latest data without versioning,https://energy-api.instrat.pl/api/prices/co2?all=1 jrc_ardeco,2021,primary,latest supported,2025-12-02,,https://territorial.ec.europa.eu/ardeco-api-v2/rest/export/ jrc_ardeco,2021,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/jrc_ardeco/2021 -jrc_idees,unknown,primary,latest supported,2025-12-02,,https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/JRC-IDEES/JRC-IDEES-2021_v1/JRC-IDEES-2021.zip -jrc_idees,2024-05-20,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/jrc_idees/2024-05-20/JRC-IDEES-2021.zip +jrc_energy_atlas,unknown,primary,latest supported,2026-02-02,,https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/EIGL-Data/RASTER/electricity_tot_demand_2019.tif +jrc_energy_atlas,2026-02-16,archive,latest supported,2026-02-16,,https://data.pypsa.org/workflows/eur/jrc_energy_atlas/2026-02-16/electricity_tot_demand_2019.tif +jrc_idees,2023-v1,primary,latest supported,2026-02-04,,https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/JRC-IDEES/JRC-IDEES-2023_v1/JRC-IDEES-2023.zip +jrc_idees,2023-v1,archive,latest supported,2026-02-09,,https://data.pypsa.org/workflows/eur/jrc_idees/2023-v1/JRC-IDEES-2023.zip +jrc_idees,2021-v1,primary,supported,2025-12-02,,https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/JRC-IDEES/JRC-IDEES-2021_v1/JRC-IDEES-2021.zip +jrc_idees,2021-v1,archive,supported,2026-01-13,,https://data.pypsa.org/workflows/eur/jrc_idees/2024-05-20/JRC-IDEES-2021.zip lau_regions,2019,primary,latest supported,2025-12-02,,https://gisco-services.ec.europa.eu/distribution/v2/lau/download/ref-lau-2019-01m.geojson.zip lau_regions,2019,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/lau_regions/2019/ref-lau-2019-01m.geojson.zip luisa_land_cover,unknown,primary,latest supported,2025-12-02,,https://jeodpp.jrc.ec.europa.eu/ftp/jrc-opendata/LUISA/EUROPE/Basemaps/LandUse/2018/LATEST/LUISA_basemap_020321_50m.tif @@ -95,29 +106,37 @@ nitrogen_statistics,2022,primary,latest supported,2025-12-02,,https://d9-wret.s3 nitrogen_statistics,2022,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/nitrogen_statistics/2022/nitro-ert.xlsx nuts3_population,13-03-2025,primary,latest supported,2025-12-02,,https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/data/nama_10r_3popgdp?format=TSV&compressed=true nuts3_population,13-03-2025,archive,latest supported,2026-01-13,earlier part of zenodo bundle,https://data.pypsa.org/workflows/eur/nuts3_population/13-03-2025/nama_10r_3popgdp.tsv.gz +ons_lad,may-2024,primary,latest supported,2026-02-02,API request used,https://services1.arcgis.com/ESMARspQHYMw9BZ9/arcgis/rest/services/Local_Authority_Districts_May_2024_Boundaries__UK_BSC/FeatureServer/0/query +ons_lad,may-2024,archive,latest supported,2026-02-17,API request used,https://data.pypsa.org/workflows/eur/ons_lad/may-2024/ons_lad.geojson opsd_electricity_demand,unknown,build,latest supported,2026-02-02,multiple versions concatenated,https://data.open-power-system-data.org/time_series/ opsd_electricity_demand,2026-02-02,archive,latest supported,2026-02-03,,https://data.pypsa.org/workflows/eur/opsd_electricity_demand/2026-02-02/electricity_demand_opsd_raw.csv osm,unknown,build,latest supported,2025-12-02,Latest dataset built using OSM data. No single URL available to access the data. See the related scripts and documentation for details., -osm,0.6,primary,latest supported,2026-01-13,,https://zenodo.org/records/14144752/files -osm,0.6,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/osm/0.6 -osm,0.5,primary,deprecated not-supported,2026-01-13,,https://zenodo.org/records/13981528/files -osm,0.5,archive,deprecated not-supported,2026-01-13,,https://data.pypsa.org/workflows/eur/osm/0.5 -osm,0.4,primary,deprecated not-supported,2026-01-13,,https://zenodo.org/records/13759222/files -osm,0.4,archive,deprecated not-supported,2026-01-13,,https://data.pypsa.org/workflows/eur/osm/0.4 -osm,0.3,primary,deprecated not-supported,2026-01-13,,https://zenodo.org/records/13358976/files -osm,0.3,archive,deprecated not-supported,2026-01-13,,https://data.pypsa.org/workflows/eur/osm/0.3 -osm,0.2,primary,deprecated not-supported,2026-01-13,,https://zenodo.org/records/13342577/files -osm,0.2,archive,deprecated not-supported,2026-01-13,,https://data.pypsa.org/workflows/eur/osm/0.2 -osm,0.1,primary,deprecated not-supported,2026-01-13,,https://zenodo.org/records/12799202/files -osm,0.1,archive,deprecated not-supported,2026-01-13,,https://data.pypsa.org/workflows/eur/osm/0.1 +osm,0.7,primary,latest supported,2026-02-12,,https://zenodo.org/records/18619025/files +osm,0.7,archive,latest supported,2026-02-12,,https://data.pypsa.org/workflows/eur/osm/0.7 +osm,0.6,primary,supported,2026-01-13,,https://zenodo.org/records/14144752/files +osm,0.6,archive,supported,2026-01-13,,https://data.pypsa.org/workflows/eur/osm/0.6 +osm,0.5,primary,supported,2026-01-13,,https://zenodo.org/records/13981528/files +osm,0.5,archive,supported,2026-01-13,,https://data.pypsa.org/workflows/eur/osm/0.5 +osm,0.4,primary,supported,2026-01-13,,https://zenodo.org/records/13759222/files +osm,0.4,archive,supported,2026-01-13,,https://data.pypsa.org/workflows/eur/osm/0.4 +osm,0.3,primary,supported,2026-01-13,,https://zenodo.org/records/13358976/files +osm,0.3,archive,supported,2026-01-13,,https://data.pypsa.org/workflows/eur/osm/0.3 +osm,0.2,primary,supported,2026-01-13,,https://zenodo.org/records/13342577/files +osm,0.2,archive,supported,2026-01-13,,https://data.pypsa.org/workflows/eur/osm/0.2 +osm,0.1,primary,supported,2026-01-13,,https://zenodo.org/records/12799202/files +osm,0.1,archive,supported,2026-01-13,,https://data.pypsa.org/workflows/eur/osm/0.1 osm_boundaries,unknown,primary,latest supported,2025-12-02,Overpass API is used to fetch the latest available data, osm_boundaries,unknown,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/osm_boundaries/unknown/osm_boundaries.zip population_count,2018-11-01,primary,latest supported,2025-12-02,,https://data.worldpop.org/GIS/Population/Global_2000_2020/2019/0_Mosaicked/ppp_2019_1km_Aggregated.tif population_count,2018-11-01,archive,latest supported,2026-01-13,earlier part of zenodo bundle,https://data.pypsa.org/workflows/eur/population_count/2018-11-01/ppp_2019_1km_Aggregated.tif -powerplants,0.7.1,primary,latest supported,2025-12-02,"Part of the `powerplantmatching` package and versioned on GitHub, i.e. no dedicated 'archive' entry.",https://raw.githubusercontent.com/PyPSA/powerplantmatching/refs/tags/v0.7.1/powerplants.csv -powerplants,0.7.1,archive,latest supported,2026-01-20,"Part of the `powerplantmatching` package and versioned on GitHub, i.e. no dedicated 'archive' entry.",https://data.pypsa.org/workflows/eur/powerplants/0.7.1 -powerplants,0.7.0,primary,supported,2025-12-02,"Part of the `powerplantmatching` package and versioned on GitHub, i.e. no dedicated 'archive' entry.",https://raw.githubusercontent.com/PyPSA/powerplantmatching/refs/tags/v0.7.0/powerplants.csv -powerplants,0.7.0,archive,supported,2026-01-20,"Part of the `powerplantmatching` package and versioned on GitHub, i.e. no dedicated 'archive' entry.",https://data.pypsa.org/workflows/eur/powerplants/0.7.0 +powerplants,0.8.1,primary,latest supported,2026-02-11,Part of the `powerplantmatching` package and versioned on GitHub.,https://raw.githubusercontent.com/PyPSA/powerplantmatching/refs/tags/v0.8.1/powerplants.csv +powerplants,0.8.1,archive,latest supported,2026-02-12,Part of the `powerplantmatching` package and versioned on GitHub.,https://data.pypsa.org/workflows/eur/powerplants/0.8.1/powerplants.csv +powerplants,0.8.0,primary,supported,2026-02-05,Part of the `powerplantmatching` package and versioned on GitHub.,https://raw.githubusercontent.com/PyPSA/powerplantmatching/refs/tags/v0.8.0/powerplants.csv +powerplants,0.8.0,archive,supported,2026-02-09,Part of the `powerplantmatching` package and versioned on GitHub.,https://data.pypsa.org/workflows/eur/powerplants/0.8.0/powerplants.csv +powerplants,0.7.1,primary,supported,2025-12-02,Part of the `powerplantmatching` package and versioned on GitHub.,https://raw.githubusercontent.com/PyPSA/powerplantmatching/refs/tags/v0.7.1/powerplants.csv +powerplants,0.7.1,archive,supported,2026-01-20,Part of the `powerplantmatching` package and versioned on GitHub.,https://data.pypsa.org/workflows/eur/powerplants/0.7.1 +powerplants,0.7.0,primary,supported,2025-12-02,Part of the `powerplantmatching` package and versioned on GitHub.,https://raw.githubusercontent.com/PyPSA/powerplantmatching/refs/tags/v0.7.0/powerplants.csv +powerplants,0.7.0,archive,supported,2026-01-20,Part of the `powerplantmatching` package and versioned on GitHub.,https://data.pypsa.org/workflows/eur/powerplants/0.7.0 scigrid_gas,1.1.2,primary,latest supported,2025-12-02,the primary is already from Zenodo published by original authors,https://zenodo.org/records/4767098/files/IGGIELGN.zip scigrid_gas,1.1.2,archive,latest supported,2026-01-20,the primary is already from Zenodo published by original authors,https://data.pypsa.org/workflows/eur/scigrid_gas/1.1.2 scigrid_gas,1.1.1,archive,deprecated not-supported,2026-01-13,,https://data.pypsa.org/workflows/eur/scigrid_gas/1.1.1/IGGIELGN.zip @@ -126,6 +145,8 @@ seawater_temperature,v1.0,primary,latest supported,2026-01-21,Test cutout seawat seawater_temperature,v1.0,archive,latest supported,2026-01-21,Test cutout seawater temperature,https://data.pypsa.org/workflows/eur/seawater_temperature/v1.0/seawater_temperature.nc ship_raster,v5,primary,latest supported,2025-12-02,,https://datacatalogfiles.worldbank.org/ddh-published/0037580/5/DR0045406/shipdensity_global.zip ship_raster,v5,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/ship_raster/v5/shipdensity_global.zip +swiss_energy_balances,2025-10-01,primary,latest supported,2026-02-12,,https://pubdb.bfe.admin.ch/de/publication/download/12361 +swiss_energy_balances,2025-10-01,archive,latest supported,2026-02-16,,https://web.archive.org/web/20260216/https%3A//pubdb.bfe.admin.ch/de/publication/download/12361 synthetic_electricity_demand,v2,primary,latest supported,2025-12-02,the primary is already from Zenodo published by original authors,https://zenodo.org/records/10820928/files/demand_hourly.csv synthetic_electricity_demand,v2,archive,latest supported,2026-01-20,the primary is already from Zenodo published by original authors,https://data.pypsa.org/workflows/eur/synthetic_electricity_demand/v2 synthetic_electricity_demand,0.1.0,archive,deprecated might-work,2026-01-13,,https://data.pypsa.org/workflows/eur/synthetic_electricity_demand/0.1.0/demand_hourly.csv @@ -135,5 +156,7 @@ wdpa,unknown,primary,latest supported,2025-12-02,"WDPA changes its URL every mon wdpa,2025-07,archive,latest supported,2025-12-02,"We are legally not allowed to redistribute this dataset, luckily the web archive is keeping copies of it.",https://web.archive.org/web/20250715071823if_/https%3A//d1gam3xoknrgr2.cloudfront.net/current/WDPA_Jul2025_Public_shp.zip wdpa_marine,unknown,primary,latest supported,2025-12-02,"WDPA maritime changes its URL every month, the URL here is used as a template and {bYYYY} is replaced inside the retrieve.smk.",https://d1gam3xoknrgr2.cloudfront.net/current/WDPA_WDOECM_{bYYYY}_Public_marine_shp.zip wdpa_marine,2025-07,archive,latest supported,2025-12-02,"We are legally not allowed to redistribute this dataset, luckily the web archive is keeping copies of it.",https://web.archive.org/web/20250715084308if_/https%3A//d1gam3xoknrgr2.cloudfront.net/current/WDPA_WDOECM_Jul2025_Public_marine_shp.zip +worldbank_commodity_prices,jan-2026,primary,latest supported,2026-02-03,,https://thedocs.worldbank.org/en/doc/18675f1d1639c7a34d463f59263ba0a2-0050012025/related/CMO-Historical-Data-Monthly.xlsx +worldbank_commodity_prices,jan-2026,archive,latest supported,2026-02-12,,https://data.pypsa.org/workflows/eur/worldbank_commodity_prices/jan-2026/CMO-Historical-Data-Monthly.xlsx worldbank_urban_population,unknown,primary,latest might-work,2025-12-02,"This is the original World Bank API link, which is sometimes updated; it is not guaranteed to work with the current codebase and data changes without notice.",https://api.worldbank.org/v2/en/indicator/SP.URB.TOTL.IN.ZS?downloadformat=csv worldbank_urban_population,2025-08-14,archive,latest supported,2026-01-13,,https://data.pypsa.org/workflows/eur/worldbank_urban_population/2025-08-14/API_SP.URB.TOTL.IN.ZS_DS2_en_csv_v2_22447.zip diff --git a/doc/conf.py b/doc/conf.py index 00ac181aa4..4baba1b9c1 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -78,6 +78,8 @@ def setup(app): "powerplantmatching", "rasterio", "dask.distributed", + "pydantic", + "ruamel", ] autodoc_default_flags = ["members"] @@ -110,7 +112,7 @@ def setup(app): # built documents. # # The short X.Y version. -version = "v2025.07.0" +version = "v2026.02.0" # The full version, including alpha/beta/rc tags. release = version + "" diff --git a/doc/configuration.rst b/doc/configuration.rst index e9e140365e..ae4bfb2cdc 100644 --- a/doc/configuration.rst +++ b/doc/configuration.rst @@ -53,7 +53,7 @@ using the ``--configfile`` option: ``version`` =========== -.. jsonschema:: ../config/schema.json#/properties/version +.. jsonschema:: ../config/schema.default.json#/properties/version :lift_description: :hide_key: /**/additionalProperties @@ -69,7 +69,7 @@ using the ``--configfile`` option: ``tutorial`` ============ -.. jsonschema:: ../config/schema.json#/properties/tutorial +.. jsonschema:: ../config/schema.default.json#/properties/tutorial :lift_description: :hide_key: /**/additionalProperties @@ -85,7 +85,7 @@ using the ``--configfile`` option: ``logging`` =========== -.. jsonschema:: ../config/schema.json#/$defs/LoggingConfig +.. jsonschema:: ../config/schema.default.json#/$defs/LoggingConfig :lift_description: :hide_key: /**/additionalProperties @@ -103,7 +103,7 @@ using the ``--configfile`` option: "Remote" indicates the address of a server used for data exchange, often for clusters and data pushing/pulling. -.. jsonschema:: ../config/schema.json#/$defs/RemoteConfig +.. jsonschema:: ../config/schema.default.json#/$defs/RemoteConfig :lift_description: :hide_key: /**/additionalProperties @@ -127,7 +127,7 @@ The ``run`` section is used for running and storing scenarios with different con It determines the path at which resources, networks and results are stored. Therefore the user can run different configurations within the same directory. -.. jsonschema:: ../config/schema.json#/$defs/RunConfig +.. jsonschema:: ../config/schema.default.json#/$defs/RunConfig :lift_description: :hide_key: /**/additionalProperties @@ -143,7 +143,7 @@ Therefore the user can run different configurations within the same directory. ``foresight`` ============= -.. jsonschema:: ../config/schema.json#/$defs/ForesightConfig +.. jsonschema:: ../config/schema.default.json#/$defs/ForesightConfig :lift_description: :hide_key: /**/additionalProperties @@ -189,7 +189,7 @@ An exemplary dependency graph (starting from the simplification rules) then look .. image:: img/scenarios.png -.. jsonschema:: ../config/schema.json#/$defs/ScenarioConfig +.. jsonschema:: ../config/schema.default.json#/$defs/ScenarioConfig :lift_description: :hide_key: /**/additionalProperties @@ -205,7 +205,7 @@ An exemplary dependency graph (starting from the simplification rules) then look ``countries`` ============= -.. jsonschema:: ../config/schema.json#/$defs/CountriesConfig +.. jsonschema:: ../config/schema.default.json#/$defs/CountriesConfig :lift_description: :hide_key: /**/additionalProperties @@ -223,7 +223,7 @@ An exemplary dependency graph (starting from the simplification rules) then look Specifies the temporal range to build an energy system model for as arguments to `pandas.date_range `__ -.. jsonschema:: ../config/schema.json#/$defs/SnapshotsConfig +.. jsonschema:: ../config/schema.default.json#/$defs/SnapshotsConfig :lift_description: :hide_key: /**/additionalProperties @@ -241,7 +241,7 @@ Specifies the temporal range to build an energy system model for as arguments to Switches for some rules and optional features. -.. jsonschema:: ../config/schema.json#/$defs/EnableConfig +.. jsonschema:: ../config/schema.default.json#/$defs/EnableConfig :lift_description: :hide_key: /**/additionalProperties @@ -257,7 +257,7 @@ Switches for some rules and optional features. ``co2 budget`` ============== -.. jsonschema:: ../config/schema.json#/$defs/Co2BudgetConfig +.. jsonschema:: ../config/schema.default.json#/$defs/Co2BudgetConfig :lift_description: :hide_key: /**/additionalProperties @@ -277,7 +277,7 @@ Switches for some rules and optional features. ``electricity`` =============== -.. jsonschema:: ../config/schema.json#/$defs/ElectricityConfig +.. jsonschema:: ../config/schema.default.json#/$defs/ElectricityConfig :lift_description: :hide_key: /**/additionalProperties @@ -295,7 +295,7 @@ Switches for some rules and optional features. Define and specify the ``atlite.Cutout`` used for calculating renewable potentials and time-series. All options except for ``features`` are directly used as `cutout parameters `__. -.. jsonschema:: ../config/schema.json#/$defs/AtliteConfig +.. jsonschema:: ../config/schema.default.json#/$defs/AtliteConfig :lift_description: :hide_key: /**/additionalProperties @@ -314,7 +314,7 @@ Define and specify the ``atlite.Cutout`` used for calculating renewable potentia ``onwind`` ---------- -.. jsonschema:: ../config/schema.json#/$defs/RenewableConfig/properties/onwind +.. jsonschema:: ../config/schema.default.json#/$defs/RenewableConfig/properties/onwind :lift_description: :hide_key: /**/additionalProperties @@ -337,7 +337,7 @@ Define and specify the ``atlite.Cutout`` used for calculating renewable potentia ``offwind-x`` -------------- -.. jsonschema:: ../config/schema.json#/$defs/RenewableConfig/properties/offwind-ac +.. jsonschema:: ../config/schema.default.json#/$defs/RenewableConfig/properties/offwind-ac :lift_description: :hide_key: /**/additionalProperties @@ -348,11 +348,11 @@ Define and specify the ``atlite.Cutout`` used for calculating renewable potentia :start-at: "offwind-ac": :end-before: solar: -.. jsonschema:: ../config/schema.json#/$defs/RenewableConfig/properties/offwind-dc +.. jsonschema:: ../config/schema.default.json#/$defs/RenewableConfig/properties/offwind-dc :lift_description: :hide_key: /**/additionalProperties -.. jsonschema:: ../config/schema.json#/$defs/RenewableConfig/properties/offwind-float +.. jsonschema:: ../config/schema.default.json#/$defs/RenewableConfig/properties/offwind-float :lift_description: :hide_key: /**/additionalProperties @@ -369,7 +369,7 @@ Define and specify the ``atlite.Cutout`` used for calculating renewable potentia ``solar`` --------------- -.. jsonschema:: ../config/schema.json#/$defs/RenewableConfig/properties/solar +.. jsonschema:: ../config/schema.default.json#/$defs/RenewableConfig/properties/solar :lift_description: :hide_key: /**/additionalProperties @@ -392,7 +392,7 @@ Define and specify the ``atlite.Cutout`` used for calculating renewable potentia ``hydro`` --------------- -.. jsonschema:: ../config/schema.json#/$defs/RenewableConfig/properties/hydro +.. jsonschema:: ../config/schema.default.json#/$defs/RenewableConfig/properties/hydro :lift_description: :hide_key: /**/additionalProperties @@ -415,7 +415,7 @@ with country specific values. Then, the values are read in and applied to all generators of the given carrier in the given country. Note that the value(s) overwrite the existing values. -.. jsonschema:: ../config/schema.json#/$defs/ConventionalConfig +.. jsonschema:: ../config/schema.default.json#/$defs/ConventionalConfig :lift_description: :hide_key: /**/additionalProperties @@ -431,7 +431,7 @@ overwrite the existing values. ``lines`` ========= -.. jsonschema:: ../config/schema.json#/$defs/LinesConfig +.. jsonschema:: ../config/schema.default.json#/$defs/LinesConfig :lift_description: :hide_key: /**/additionalProperties @@ -447,7 +447,7 @@ overwrite the existing values. ``links`` ============= -.. jsonschema:: ../config/schema.json#/$defs/LinksConfig +.. jsonschema:: ../config/schema.default.json#/$defs/LinksConfig :lift_description: :hide_key: /**/additionalProperties @@ -465,7 +465,7 @@ overwrite the existing values. Allows to define additional transmission projects that will be added to the base network, e.g., from the TYNDP 2020 dataset. The projects are read in from the CSV files in the subfolder of ``data/transmission_projects/``. New transmission projects, e.g. from TYNDP 2024, can be added in a new subfolder of transmission projects, e.g. ``data/transmission_projects/tyndp2024`` while extending the list of ``transmission_projects`` in the ``config.yaml`` by ``tyndp2024``. The CSV files in the project folder should have the same columns as the CSV files in the template folder ``data/transmission_projects/template``. -.. jsonschema:: ../config/schema.json#/$defs/TransmissionProjectsConfig +.. jsonschema:: ../config/schema.default.json#/$defs/TransmissionProjectsConfig :lift_description: :hide_key: /**/additionalProperties @@ -481,7 +481,7 @@ Allows to define additional transmission projects that will be added to the base ``transformers`` ================ -.. jsonschema:: ../config/schema.json#/$defs/TransformersConfig +.. jsonschema:: ../config/schema.default.json#/$defs/TransformersConfig :lift_description: :hide_key: /**/additionalProperties @@ -497,7 +497,7 @@ Allows to define additional transmission projects that will be added to the base ``load`` ============= -.. jsonschema:: ../config/schema.json#/$defs/LoadConfig +.. jsonschema:: ../config/schema.default.json#/$defs/LoadConfig :lift_description: :hide_key: /**/additionalProperties @@ -516,7 +516,7 @@ Allows to define additional transmission projects that will be added to the base .. note:: Only used for sector-coupling studies. -.. jsonschema:: ../config/schema.json#/$defs/EnergyConfig +.. jsonschema:: ../config/schema.default.json#/$defs/EnergyConfig :lift_description: :hide_key: /**/additionalProperties @@ -535,7 +535,7 @@ Allows to define additional transmission projects that will be added to the base .. note:: Only used for sector-coupling studies. -.. jsonschema:: ../config/schema.json#/$defs/BiomassConfig +.. jsonschema:: ../config/schema.default.json#/$defs/BiomassConfig :lift_description: :hide_key: /**/additionalProperties @@ -574,7 +574,7 @@ The list of available biomass is given by the category in `ENSPRESO_BIOMASS `__) - **Description:** Contains locations and capacities of oil refineries in Europe. -``data/switzerland-new_format-all_years.csv`` - -- **Source:** Swiss Federal Office of Energy (SFOE) -- **Link:** https://www.bfe.admin.ch/bfe/de/home/versorgung/statistik-und-geodaten/energiestatistiken/energieverbrauch-nach-verwendungszweck.html/ -- **License:** `custom `__ -- **Description:** Contains energy consumption by sector / application for Switzerland. - ``data/unit_commitment.csv`` - **Source:** `DIW - `__, - `Agora Energiewende - `__, - `Schill et al. (2017) - `__, - `Martin (2022) `__ -- **Link:** https://github.com/lisazeyen/hourly_vs_annually/blob/b67ca9222711372d8ab6cd58f9ebe7bc637939bf/scripts/solve_network.py#L554 + `__, + `IRENA __`, + `Agora Energiewende `__. - **License:** CC-BY 4.0 -- **Description:** Contains energy balances for Europe. +- **Description:** Contains unit commitment parameters for thermal power plants. ``data/biomass_transport_costs_supply_chain{1,2}.csv`` diff --git a/doc/data_inventory.csv b/doc/data_inventory.csv index 91362328a6..6b2a9ce831 100644 --- a/doc/data_inventory.csv +++ b/doc/data_inventory.csv @@ -1,16 +1,18 @@ "Short name","Long name","Description","Owner","Link to website","License" "enspreso_biomass",ENSPRESO biomass potentials for Europe,"This collection contains datasets from ENSPRESO2, an EU-28 wide, open dataset on renewable energy potentials, at national (NUTS0), regional and high-resolution (1 x 1 km and 5 x 5 km) levels for the 2010-2050 period. Within ENSPRESO, ENergy Systems Potential Renewable Energy SOurces, and the ENSPRESO2 updates, technical potentials are provided for wind, solar and biomass, based on coherent GIS-based land-restriction scenarios. [...] For biomass, agriculture, forestry and waste sectors are considered. The temporal resolution for wind and solar is both annual.","European Commission Joint Research Centre","https://data.jrc.ec.europa.eu/dataset/74ed5a04-7d74-4807-9eab-b94774309d9f","CC-BY-4.0" -"osm","Open Street Map electricity transmission grid","Transmission grid topology and infrastructure on substations, lines and cables from Open Street Map (OSM). The dataset is built from OSM data and is not versioned. The latest dataset can be built using the scripts in the repository.","Open Street Map contributors","https://www.openstreetmap.org/","ODbL-1.0" +"osm","Open Street Map electricity transmission grid","Transmission grid topology and infrastructure on substations, lines and cables from Open Street Map (OSM). The dataset is built from OSM data and is not versioned. The latest dataset can be built using the scripts in the repository.","Open Street Map contributors","https://www.openstreetmap.org/ and https://doi.org/10.5281/zenodo.12799201","ODbL-1.0" "worldbank_urban_population","Urban population (% of total population)","Percentage of Urban population by country, United Nations Population Division. World Urbanization Prospects: 2018 Revision.","World Bank","https://data.worldbank.org/indicator/SP.URB.TOTL.IN.ZS","CC-BY-4.0" +"worldbank_commodity_prices","World Bank Commodity Prices","Monthly commodity price data for a range of commodities including fossil fuels","World Bank","https://thedocs.worldbank.org/en/doc/18675f1d1639c7a34d463f59263ba0a2-0050012025/related/CMO-Historical-Data-Monthly.xlsx","CC-BY-4.0" "hotmaps_industrial_sites","Hotmaps industrial sites","In this repository are over 5000 georeferenced industrial sites of energy-intensive industry sectors published, together with GHG-emissions, production capacity, fuel demand and excess heat potentials calculated from emission and production data.","","https://gitlab.com/hotmaps/industrial_sites/industrial_sites_Industrial_Database/","CC-BY-4.0" +"instrat_co2_prices","CO2 Emission Allowance Prices","CO2 emission allowance prices from the EU Emissions Trading System (ETS), retrieved from the Instrat energy price API.","Instrat","https://energy.instrat.pl/","unknown" "co2stop","CO2 Storage Potentials","An assessment of the CO2 storage potential in Europe, including storage units, traps, and maps.","European Commission Joint Research Centre","https://setis.ec.europa.eu/european-co2-storage-database_en","Reuse policy following 2011/833/EU" "nitrogen_statistics","Nitrogen Statistics and Information","Statistics and information on the worldwide supply of, demand for, and flow of the mineral commodity nitrogen.","United States Geological Survey (USGS)","https://www.usgs.gov/centers/nmic/nitrogen-statistics-and-information","Public Domain" "eu_nuts2013","Nomenclature of Territorial Units for Statistics (NUTS) 2013 - shapefiles","Shapefiles of EU's Nomenclature of Territorial Units for Statistics (NUTS) 2013, which is a hierarchical system for dividing up the economic territory of the European Union.","eurostat","https://ec.europa.eu/eurostat/web/nuts/overview","Reuse policy following 2011/833/EU" "eu_nuts2021","Nomenclature of Territorial Units for Statistics (NUTS) 2021 - shapefiles","Shapefiles of EU's Nomenclature of Territorial Units for Statistics (NUTS) 2021, which is a hierarchical system for dividing up the economic territory of the European Union.","eurostat","https://ec.europa.eu/eurostat/web/nuts/overview","Reuse policy following 2011/833/EU" -"eurostat_balances","Energy Balances","European energy balances by country and fuel, as reported by Eurostat.","eurostat","https://ec.europa.eu/eurostat/data/database","Reuse policy following 2011/833/EU ; newer versions of the same data are available as CC-BY-4.0 through the eurostat API" +"eurostat_balances","Energy Balances","European energy balances by country and fuel, as reported by Eurostat.","eurostat","https://ec.europa.eu/eurostat/data/database","CC-BY-4.0" "eurostat_household_balances","Eurostat Household Energy Balances","Disaggregated final energy consumption in household - quantities (nrg_d_hhq)","eurostat","https://ec.europa.eu/eurostat/databrowser/product/page/NRG_D_HHQ","CC-BY-4.0" "luisa_land_cover","The LUISA base map 2018","The LUISA Base Map 2018 is a high-resolution land use/land cover map developed and produced by the Joint Research Centre of the European Commission","European Commission Joint Research Centre","https://data.jrc.ec.europa.eu/dataset/51858b51-8f27-4006-bf82-53eba35a142c","CC-BY-4.0" -"jrc_idees","JRC-IDEES-2021","The JRC-IDEES-2021 release contains a consistent set of disaggregated energy-economy-emissions data for each Member State of the European Union, covering all sectors of the energy system for the 2000-2021 period: industry, buildings, transport, and power generation.", "European Commission Joint Research Centre", "https://data.jrc.ec.europa.eu/dataset/82322924-506a-4c9a-8532-2bdd30d69bf5", "CC-BY-4.0" +"jrc_idees","JRC-IDEES-2023","The JRC-IDEES-2023 release contains a consistent set of disaggregated energy-economy-emissions data for each Member State of the European Union, covering all sectors of the energy system for the 2000-2021 period: industry, buildings, transport, and power generation.", "European Commission Joint Research Centre", "https://data.jrc.ec.europa.eu/dataset/82322924-506a-4c9a-8532-2bdd30d69bf5", "CC-BY-4.0" "scigrid_gas","","Scientific Grid Model of European Gas Transmission Networks,Gas transmission data model","DLR Institute for Networked Energy Systems","https://web.archive.org/web/20241112092853/https://www.gas.scigrid.de/", "CC-BY-4.0" "synthetic_electricity_demand","","Interannual Electricity Demand Calculator,generates country-level electricity consumption time series based on weather data and correlates historical electricity demand to temperature","","https://zenodo.org/records/10820928", "CC-BY-4.0" "opsd_electricity_demand","Open Power System Data - Electricity Demand","Time series data of electricity consumption at country-level for various European countries.","Open Power System Data","https://data.open-power-system-data.org/time_series/","unknown" @@ -42,9 +44,13 @@ "natura","Natura 2000 protected areas","Protected areas in Europe as defined by the Natura 2000 network.","European Environment Agency","https://www.eea.europa.eu/en/datahub/datahubitem-view/6fc8ad2d-195d-40f4-bdec-576e7d1268e4","CC-BY-4.0" "bfs_road_vehicle_stock","Swiss Road Vehicle Stock","Stock of road motor vehicles in Switzerland.","Swiss Federal Statistics Office","https://www.bfs.admin.ch/bfs/de/home/statistiken/kataloge-datenbanken.assetdetail.33827666.html","custom (OPEN BY ASK)" "bfs_gdp_and_population","Swiss Population","Population data for Switzerland.","Swiss Federal Statistics Office","https://www.bfs.admin.ch/bfs/en/home/news/whats-new.assetdetail.7786557.html","custom (OPEN BY ASK)" +"swiss_energy_balances","Swiss Energy Balances","Energy balances for Switzerland.","Swiss Federal Office of Energy (SFOE)","https://pubdb.bfe.admin.ch/de/publication/download/12361","custom (https://www.admin.ch/gov/de/start/rechtliches.html)" "mobility_profiles","German Vehicle Activity Profiles","Vehicle activity profiles for different vehicle types and road types in Germany, based on monitoring data from the Federal Highway Research Institute (BASt). These profiles provide insights into travel behavior and patterns, which can be used for transport modeling and analysis.","Federal Highway Research Institute (BASt)","https://www.bast.de/DE/Themen/Digitales/HF_1/Massnahmen/verkehrszaehlung/Stundenwerte.html?nn=414410","CC-BY-4.0" "dh_areas","","Shapes of district heating areas","ISI Fraunhofer-Institut für System- und Innovationsforschung","https://fordatis.fraunhofer.de/handle/fordatis/341.5","CC-BY-4.0" "geothermal_heat_utilisation_potentials","","Potentials for Geothermal heat utilisation","ISI Fraunhofer-Institut für System- und Innovationsforschung","https://fordatis.fraunhofer.de/handle/fordatis/341.5","CC-BY-4.0" "jrc_ardeco","Annual Regional Database of the European Commission's Directorate General for Regional and Urban Policy","The database contains a set of long time-series variables and indicators for EU regions, as well as for regions in some EFTA and candidate countries, at various statistical scales (NUTS1, NUTS2, NUTS3, metro regions).","European Commission","https://territorial.ec.europa.eu/ardeco","similar to CC-BY" +"jrc_energy_atlas","JRC Energy Atlas","Contains 1km by 1km raster data of annual electricity demand per EU country","European Commission Joint Research Centre","https://energy-industry-geolab.jrc.ec.europa.eu/energy-atlas/","`CC-BY-4.0 `__" +"desnz_electricity_consumption","Regional and local authority electricity consumption statistics","Contains subnational electricity consumption statistics from 2005 to 2023.","UK Government, Department for Energy Security and Net Zero","https://www.gov.uk/government/statistics/regional-and-local-authority-electricity-consumption-statistics","Open Government Licence v3.0" +"ons_lad","UK Local Authority Districts May 2024 Boundaries","Contains shapefiles of local authorities in the United Kingdom.","UK Office for National Statistics","https://geoportal.statistics.gov.uk/datasets/ons::local-authority-districts-may-2024-boundaries-uk-bsc-2/about","Open Government Licence v.3.0" "bidding_zones_electricitymaps","Electricity Maps Bidding Zones","Geospatial data defining bidding zones for electricity markets in Europe","Electricity Maps","https://github.com/electricitymaps/electricitymaps-contrib","AGPL-3.0" "bidding_zones_entsoepy","ENTSOE-PY Bidding Zones","Geospatial data defining bidding zones for electricity markets in Europe","EnergieID","https://github.com/EnergieID/entsoe-py","MIT" diff --git a/doc/img/base.png b/doc/img/base.png index 071c499510..aff8fc87e5 100644 Binary files a/doc/img/base.png and b/doc/img/base.png differ diff --git a/doc/img/elec.png b/doc/img/elec.png index 2f68867193..5a159a4e88 100644 Binary files a/doc/img/elec.png and b/doc/img/elec.png differ diff --git a/doc/img/intro-workflow.png b/doc/img/intro-workflow.png index 6d0b2b6070..5859e2bc82 100644 Binary files a/doc/img/intro-workflow.png and b/doc/img/intro-workflow.png differ diff --git a/doc/img/workflow.png b/doc/img/workflow.png index 0b274af8e2..dbec135d3f 100644 Binary files a/doc/img/workflow.png and b/doc/img/workflow.png differ diff --git a/doc/index.rst b/doc/index.rst index 1152a988c8..76429b74ed 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -56,7 +56,7 @@ transmission expansion planning studies. The continental scope and highly resolved spatial scale enables a proper description of the long-range smoothing effects for renewable power generation and their varying resource availability. -.. image:: img/elec.png +.. image:: img/base.png :width: 70% :align: center @@ -141,7 +141,7 @@ Workflow .. note:: The graph above was generated using - ``pixi run dot -c && snakemake --rulegraph -F | sed -n "/digraph/,/}/p" | dot -Tpng -o doc/img/workflow.png`` + ``pixi run snakemake --rulegraph -F | sed -n "/digraph/,/}/p" | dot -Tpng -o doc/img/workflow.png`` Learning Energy System Modelling diff --git a/doc/introduction.rst b/doc/introduction.rst index 22988093e5..91b42a3596 100644 --- a/doc/introduction.rst +++ b/doc/introduction.rst @@ -10,10 +10,10 @@ .. raw:: html - + .. note:: - Find the introductory slides `here `__. + Find the introductory slides `here `__. .. warning:: The video only introduces the electricity-only part of PyPSA-Eur. @@ -49,7 +49,7 @@ preceding rules which another rule takes as input data. .. note:: The dependency graph was generated using - ``pixi run dot -c && snakemake --dag results/networks/base_s_128_elec_.nc -F | sed -n "/digraph/,/}/p" | dot -Tpng -o doc/img/intro-workflow.png`` + ``pixi run snakemake --dag results/networks/base_s_128_elec_.nc -F | sed -n "/digraph/,/}/p" | dot -Tpng -o doc/img/intro-workflow.png`` For the use of ``snakemake``, it makes sense to familiarize yourself quickly with the `basic tutorial diff --git a/doc/release_notes.rst b/doc/release_notes.rst index b3f6f0088e..e9962403a1 100644 --- a/doc/release_notes.rst +++ b/doc/release_notes.rst @@ -6,198 +6,317 @@ Release Notes ########################################## -Upcoming Release -================ +.. Upcoming Release +.. ================= + * Update heat source handling in `prepare_sector_network` and introduce preheating of heat sources for more realistic system integrations (https://github.com/PyPSA/pypsa-eur/pull/1893). +PyPSA-Eur v2026.02.0 (18th February 2026) +========================================= -* Add script path getter helper method to allow for rule inheritance in nested snakefiles. +**Features** -* Include new storage technologies such as li-ion, vanadium, lfp, lair, pair and iron-air. These technologies can now be configured as either store-link combinations or standalone storage units. - Implemented in both `add_electricity.py` and `prepare_sector_network.py` (https://github.com/PyPSA/pypsa-eur/pull/1961). - -* Updated data sources for country-level electricity demand time series. In addition to the OPSD data (``retrieve_electricity_demand_opsd``, demand time series - are now downloaded via the ENTSO-E Transparency Platform API (``retrieve_electricity_demand_entsoe`` environment variable ``ENTSOE_API_KEY`` required) - and from the NESO data portal for Great Britain and Northern Ireland (``retrieve_electricity_demand_neso``). - Manual corrections and gap filling methods have been applied and checked for data until the end of 2025. - (https://github.com/PyPSA/pypsa-eur/pull/1828). +* **Updated energy balances:** -* Applied scaling of kW and GW to MW for custom_costs as well (https://github.com/PyPSA/pypsa-eur/pull/2023). + - Update energy balances from JRC-IDEES-2021 to JRC-IDEES-2023; default reference year changed from 2019 to 2023 + (https://github.com/PyPSA/pypsa-eur/pull/1976). -* Fix wildcards error in `clean_osm_data` rule message introduced in github.com/PyPSA/pypsa-eur/pull/1846 by replacing `wildcards.country` with expanded `config["countries"]` list (https://github.com/PyPSA/pypsa-eur/pull/2022). + - Build energy balances from Eurostat API data with new rule :mod:`build_eurostat_balances` + (https://github.com/PyPSA/pypsa-eur/pull/1987). -* Fix `None` default config parameter from creating zero availability for offshore wind (#2019). + - Updated Swiss energy balances from Swiss Federal Office of Energy (SFOE, October 2025), retrieved directly + from SFOE website in :mod:`build_swiss_energy_balances` (https://github.com/PyPSA/pypsa-eur/pull/2057). -* Remove snakemake's slurm plugin from windows installations (https://github.com/PyPSA/pypsa-eur/pull/2009). +* **Better electricity demand data:** -* Added Xpress solver configuration options (``xpress-default`` and ``xpress-gpu``) with barrier method settings optimized for large-scale linear programming problems. + - Updated electricity demand data sources with ENTSO-E Transparency Platform API (requires ``ENTSOE_API_KEY``) + and NESO data portal for Great Britain and Northern Ireland (https://github.com/PyPSA/pypsa-eur/pull/1828). -* Added missing bidding zone data sources to data layer (https://github.com/PyPSA/pypsa-eur/pull/1991). + - Electricity demand distribution to subnational model regions now uses JRC Energy Atlas data for EU countries + (1km x 1km raster) with fallbacks to NESO and NUTS3-based distribution + (https://github.com/PyPSA/pypsa-eur/pull/1829). -* Fix virtual bus naming when building the transmission network from raw OSM data to use persistent names (https://github.com/PyPSA/pypsa-eur/pull/1956). +* **Updated electricity network data:** -* Fix column selection when preparing OSM pre-built releases (https://github.com/PyPSA/pypsa-eur/pull/1956). + - Improved OSM network building: Support for voltage levels from 63 kV to 750 kV, temporal attributes + (start_date, construction tags), and pure DC buses (switching stations). + Rebuilt interactive network map using PyDeck/deck.gl (https://github.com/PyPSA/pypsa-eur/pull/2052, https://github.com/PyPSA/pypsa-eur/pull/2030). -* Fix: capital-cost of solar-hsat did not get adjusted to current planning_horizon in myopic optimization + - Added prebuilt OSM network v0.7 (https://zenodo.org/records/18619025) + (https://github.com/PyPSA/pypsa-eur/pull/2064, https://github.com/PyPSA/pypsa-eur/pull/2054). -* Removed the ``secrets`` configuration section and disallow setting Gurobi license credentials (WLSACCESSID, WLSSECRET, LICENSEID) in config files to prevent accidental exposure of sensitive credentials. Use environment variables or license files instead (https://github.com/PyPSA/pypsa-eur/pull/1989). + - New base network using TYNDP 2024 data modeling NTC transmission capacities as a transport model + (https://github.com/PyPSA/pypsa-eur/pull/1646). -* Fix ConsistencyError for Links without buses when `gas_network: true`, but no `conventional_generation` (https://github.com/PyPSA/pypsa-eur/pull/1971) +* **Improved power plants and industrial sites data:** -* Fix ConsistencyError for Links without buses when `industry: true`, but no `conventional_generation` or `biomass` (https://github.com/PyPSA/pypsa-eur/pull/1971) + - Added powerplantmatching v0.8.0 to data versions. Wind and solar capacity updates for 2025. Nuclear power plants are now resolved by block (https://github.com/PyPSA/pypsa-eur/pull/2040). -* Fix `mock_snakemake` due to breaking `snakemake` upstream API changes, i.e., requiring passing a `LoggerManager` instance (https://github.com/PyPSA/pypsa-eur/pull/1984). + - Enhanced renewable capacity estimation using plant-level data from Powerplantmatching. Renamed setting + ``from_gem`` to ``from_powerplantmatching``. New ``from_irenastat`` setting supplements capacity estimation + (https://github.com/PyPSA/pypsa-eur/pull/2050). -* Added technology-data v0.13.4 (https://github.com/PyPSA/technology-data/releases/tag/v0.13.4) to data versions (https://github.com/PyPSA/pypsa-eur/pull/1985). + - Waste-to-energy plants now included in electricity-only networks (https://github.com/PyPSA/pypsa-eur/pull/2050). + - Updated GEM steel plant tracker and initial GEM cement plant tracker (https://github.com/PyPSA/pypsa-eur/pull/1830). -* Important: PyPSA-Eur now uses a validation schema for configuration files. The schema - also contains the default values for all known configuration options, which means - `config/config.default.yaml` still exists and can be used, but will be automatically - exported from the schema. Changes to the default config, therefore now require the - schema to be updated. Find a detailed explanation in the contributors documentation - (https://github.com/PyPSA/pypsa-eur/pull/1912). +* **Improved storage:** -* Fix bugs when using PyPSA-Eur as a Snakemake module by making sure that all file paths are defined relative to a rule's input or an output (https://github.com/PyPSA/pypsa-eur/pull/1967). + - Added new storage technologies, including iron-air batteries. These can be configured as + either store-link combinations or standalone storage units. Implemented in both :mod:`add_electricity` and + :mod:`prepare_sector_network` (https://github.com/PyPSA/pypsa-eur/pull/1961). -* Fix compatibility of rules `build_gas_input_locations` and `build_gas_network` with pyogrio >=0.12.0 (https://github.com/PyPSA/pypsa-eur/pull/1955). + - Existing battery storage capacities from Powerplantmatching can be added as ``StorageUnit`` components using + plant-level duration data (https://github.com/PyPSA/pypsa-eur/pull/2071). -* Added interactive (html) balance maps `results/maps/interactive/` (https://github.com/PyPSA/pypsa-eur/pull/1935) based on https://docs.pypsa.org/latest/user-guide/plotting/explore/. Settings for interactive maps can be found in `plotting.default.yaml` under `plotting["balance_map_interactive"]`. +* **Updated technology parameters:** -* Relocated and modified static (pdf) balance maps to `results/maps/static/` (https://github.com/PyPSA/pypsa-eur/pull/1935) for better organization. + - Added technology-data v0.13.4 to data versions (https://github.com/PyPSA/pypsa-eur/pull/1985). -* With https://github.com/PyPSA/pypsa-eur/pull/1935, note that bus carriers for balance maps containing spaces need to be specified with underscores `_` in the configuration file, e.g., `co2_stored` instead of `co2 stored`. This is to ensure compatibility with queue managers like slurm. +* **Better data, configuration and dependency management:** -* Fix building osm network using overpass API (https://github.com/PyPSA/pypsa-eur/pull/1940). + - Data versions now version controlled in ``data/versions.csv`` with configurable per-scenario specifications + (https://github.com/PyPSA/pypsa-eur/pull/1675, https://github.com/PyPSA/pypsa-eur/pull/1963). -* Added configuration option to set overpass API URL, maximum retries, timeout and user agent information (https://github.com/PyPSA/pypsa-eur/pull/1940 and https://pypsa-eur.readthedocs.io/en/latest/configuration.html#overpass_api). For a list of public overpass APIs see `here `_. + - Use validation schema for configuration files. Schema contains default values; + changes to ``config/config.default.yaml`` now require schema updates + (https://github.com/PyPSA/pypsa-eur/pull/1912). -* Refactored `solve_network.py` and `solve_operations_network.py` to separate optimization problem preparation from solving, enabling inspection of optimization problems before solve execution. + - Move to Pixi for robust cross-platform dependency management (https://github.com/PyPSA/pypsa-eur/pull/1886). -* Added example configurations for rolling horizon and iterative optimization modes in `config/examples/`. +* Updated CO2 emission allowance prices to use Instrat API for real-time pricing data + (https://github.com/PyPSA/pypsa-eur/pull/2035). -* Refactor: Integrated excess heat from Power-to-X processes into the new heat-source structure and moved some code from `scripts/prepare_sector_network.py` to `scripts/def/heat_source.py`. Also updated PtX excess heat efficiencies (https://github.com/PyPSA/pypsa-eur/pull/1944). +* Added CO2 emission prices configurable per planning horizon as marginal cost on ``co2 atmosphere`` Store + (https://github.com/PyPSA/pypsa-eur/pull/1897). -* Update heat source handling in `prepare_sector_network` and introduce preheating of heat sources for more realistic system integrations (https://github.com/PyPSA/pypsa-eur/pull/1893). +* Nuclear energy availability factors now stored with annual data per country in ``data/nuclear_p_max_pu.csv``; + model automatically selects year nearest to weather year (https://github.com/PyPSA/pypsa-eur/pull/2072). + +* Added interactive HTML balance maps in ``results/maps/interactive/`` with configurable settings + (https://github.com/PyPSA/pypsa-eur/pull/1935). + +* Added ``solving.options.store_model`` config option to store the linopy model as NetCDF after solving + (not supported with rolling horizon) (https://github.com/PyPSA/pypsa-eur/pull/2001). -* Added existing biomass decentral/rural residential and services heating capacity. +* Added residential heat demand-side management (DSM) based on SmartEN study methodology + (https://github.com/PyPSA/pypsa-eur/pull/1857). -* Fix parsing in Swiss passenger cars data (https://github.com/PyPSA/pypsa-eur/pull/1934 and https://github.com/PyPSA/pypsa-eur/pull/1936). +* Xpress solver configuration options (``xpress-default`` and ``xpress-gpu``) with barrier method settings for + large-scale problems (https://github.com/PyPSA/pypsa-eur/pull/2006). -* Fix: ValueError with `cop_heat_pump` in `prepare_sector_network.py` if `tim_dep_hp_cop` is `false`. +* ``clustering: consider_efficiency_classes`` now accepts list of quantile boundaries (e.g. ``[0.1, 0.5, 0.9]``) + in addition to boolean; default unchanged (https://github.com/PyPSA/pypsa-eur/pull/2075). + +* Added existing biomass decentral/rural residential and services heating capacity + (https://github.com/PyPSA/pypsa-eur/pull/1872). + +* Introduced method to overwrite costs via ``costs:custom_cost_fn`` for techno-economic assumptions + (https://github.com/PyPSA/pypsa-eur/pull/1752, https://github.com/PyPSA/pypsa-eur/pull/1879). + +* Added minimum unit dispatch setting option for electrolysis (https://github.com/PyPSA/pypsa-eur/pull/1859). + +* Added integration with OETC platform (https://github.com/PyPSA/pypsa-eur/pull/1831). + +**Changes** -* Fixed OSM raw data cleaning to include `section` line relation role. +* Removed config options ``sector:MWh_MeOH_per_tCO2``, ``MWh_MeOH_per_MWh_H2``, and ``MWh_MeOH_per_MWh_elec`` + in favour of technology-data repository values (https://github.com/PyPSA/pypsa-eur/pull/2043). -* Fixed missing raw OSM HVDC links defined using the ``power=circuit`` tag (NOTE: ``type=route``+``route=power`` is `deprecated `_). +* Rewritten power plant mapping to model regions/buses using spatial joins instead of nearest-bus approach. + Necessary due to administrative clustering conformance changes + (https://github.com/PyPSA/pypsa-eur/pull/2050). -* Fixed bugs with load shedding due to incorrect use of `sign` argument in `n.add` and `np.isscalar` (https://github.com/PyPSA/pypsa-eur/pull/1908). +* Setting ``from_gem`` renamed to ``from_powerplantmatching`` + (https://github.com/PyPSA/pypsa-eur/pull/2050). -* chore: disable PTES dynamic capacity by default +* Function ``rescale_idees_from_eurostat`` removed (https://github.com/PyPSA/pypsa-eur/pull/1987). -* Add CO2 emission prices configurable per planning horizon for sector-coupled models. - The CO2 price is added as a marginal cost on the `co2 atmosphere` Store. +* Removed ``shared_cutouts`` configuration entry; cutouts always shared. Use differently named cutouts for + scenario-specific temporal/spatial resolution (https://github.com/PyPSA/pypsa-eur/pull/1675). -* Add `custom storage plugin `_ to handle retrievals from zenodo to address recurring failures. +* Cutouts relocated to ``data/cutouts/`` directory; will trigger re-download/rebuild. Move existing cutouts + manually if needed (https://github.com/PyPSA/pypsa-eur/pull/1675). -* Move to [pixi](https://pixi.sh/latest/) for robust cross-platform dependency management. +* Cutout bounds must now be explicitly defined in configuration; inference from ``regions_onshore`` and + ``regions_offshore`` removed (https://github.com/PyPSA/pypsa-eur/pull/1675). -* Fix: Allocate heat pump CAPEX on heat instead of electricity bus instead and remove nominal efficiency from CAPEX calculation +* Cutout preparation configuration moved to nested ``prepare_kwargs`` dictionary + (https://github.com/PyPSA/pypsa-eur/pull/1675). -* Fix: Configsettings for `heat_pump_cop_approximation` are now correctly passed to `CentralHeatingCopApproximator.py` +* Configuration options ``enable: retrieve``, ``enable: retrieve_databundle``, and ``enable: retrieve_cost_data`` + removed; rules always included (https://github.com/PyPSA/pypsa-eur/pull/1675). -* Fix: Allocate heat pump CAPEX on heat instead of electricity bus instead and remove nominal efficiency from CAPEX calculation +* Removed ``secrets`` configuration section and Gurobi license credentials from config files to prevent + accidental exposure of sensitive data (https://github.com/PyPSA/pypsa-eur/pull/1989). -* Fix: Configsettings for `heat_pump_cop_approximation` are now correctly passed to `CentralHeatingCopApproximator.py` +* Configuration schema updater allowing soft-fork changes without modifying base PyPSA-Eur files + (https://github.com/PyPSA/pypsa-eur/pull/2056). -* Fix: Deprecation warnings from `pandas>=2.3.0` (https://github.com/PyPSA/pypsa-eur/pull/1898) +* Removed outdated hotfixes in :mod:`build_powerplants` (https://github.com/PyPSA/pypsa-eur/pull/2050). -* Feature: Introduce a new method to overwrite costs (https://github.com/PyPSA/pypsa-eur/pull/1752, https://github.com/PyPSA/pypsa-eur/pull/1879). Modifications to the default techno-economic assumptions can now be configured via `costs:custom_cost_fn`, which applies changes to the `resources/costs_{planning_horizons}.csv` files. The default configuration includes minor adjustments to stabilize optimization results. The existing implementation via `costs:overwrites` and `costs:capital_cost`/`costs:marginal_cost` parameters remains available but will be deprecated in a future release. +* Updated ``powerplants_filter`` to include plants operational in 2025 + (https://github.com/PyPSA/pypsa-eur/pull/2050). -* Fixed `AttributeError` in `prepare_sector_network.py` when running sector-coupled - PyPSA-Eur with only one country and cluster. - (https://github.com/PyPSA/pypsa-eur/pull/1835) +* Default year for renewable capacity estimation updated to 2024 (https://github.com/PyPSA/pypsa-eur/pull/2040). -* Added river-water and sea-water sourced heat pumps as well as interactive bus-balance plots and heat-source maps. Also introduced district heating areas in which heat sources must be located. +* Added 2030 to power plant grouping years by default (https://github.com/PyPSA/pypsa-eur/pull/2050). -* Added automatic retry for some (Zenodo) HTTP requests to handle transient errors - like rate limiting and server errors. +* Disabled ``powerplantmatching`` phase-out heuristic in :mod:`build_powerplants` + (https://github.com/PyPSA/pypsa-eur/pull/2050). -* Fixed `ValueError` in `prepare_sector_network.py` in function `add_storage_and_grids` - when running with few nodes such that they are all already connected by existing gas - lines. (https://github.com/PyPSA/pypsa-eur/pull/1780) +* Applied scaling of kW and GW to MW for custom costs (https://github.com/PyPSA/pypsa-eur/pull/2023). -* Fixed `AttributeError` in `prepare_sector_network.py` when running sector-coupled - PyPSA-Eur with only one country. (https://github.com/PyPSA/pypsa-eur/pull/1778) +* Refactored :mod:`solve_network` and :mod:`solve_operations_network` separating optimization problem preparation + from solving (https://github.com/PyPSA/pypsa-eur/pull/1956). -* Fixed `FileNotFoundError` bugs preventing pypsa from being run as a Snakemake - module. The cause of this bug was that intermediate zip files in rules were being - saved in directories that didn't exist yet (without creating the parent directories). - This didn't fail when using PyPSA-Eur as a standalone module, because the directory - was the same as the rule's output file. However, when using PyPSA-Eur as a Snakemake - module, this was not the case as Snakemake prepends a prefix to all the input and - output files, but not to any file locations listed as parameters. The fix was to save - intermediate zip files at the top directory level. This was fixed for many rules in - `retrieve.smk`, i.e., `retrieve_eez`, `retrieve_nuts_2021_shapes`, - `retrieve_nuts_2013_shapes`, `retrieve_worldbank_urban_population`, - `retrieve_co2stop`, `download_wdpa`, `download_wdpa_marine`, `retrieve_eurostat_data`. - (https://github.com/PyPSA/pypsa-eur/pull/1768) +* Added example configurations for rolling horizon and iterative optimization modes in ``config/examples/`` + (https://github.com/PyPSA/pypsa-eur/pull/1902). -* Updated standing losses for PTES, central TTES, and decentral TTES, previously calculated using the ``tes_tau`` parameter, to the latest DEA technology data, and updated costs version to v0.13.3. +* Static balance maps relocated to ``results/maps/static/`` (https://github.com/PyPSA/pypsa-eur/pull/1935). -* Introduce a new base network using TYNDP 2024 data (https://github.com/PyPSA/pypsa-eur/pull/1646). This base network can be used with `tyndp` as `base_network`. It models NTC transmission capacities between TYNDP bidding zones using unidirectional `links`. This implementation neglects KVL and is referred to as a transport model. This is consistent with the TYNDP 2024 methodology. +* Bus carriers for balance maps with spaces must use underscores in configuration for SLURM compatibility + (https://github.com/PyPSA/pypsa-eur/pull/1935). -* Fixed missing costs name for geothermal-sourced heat pump and allowed geothermal heat pumps in test configs. +* Overpass API configuration options added (URL, retries, timeout, user agent) + (https://github.com/PyPSA/pypsa-eur/pull/1940). -* Changed error handling for non-extendable heat storage in energy-to-power ratio constraints to warning. +* Added script path getter helper method for rule inheritance in nested snakefiles + (https://github.com/PyPSA/pypsa-eur/pull/1997). -* Allow expandable CCGTs by default +* Updated standing losses for PTES, central TTES, and decentral TTES to latest DEA technology data (v0.13.3) + (https://github.com/PyPSA/pypsa-eur/pull/1791). + +* Disabled PTES dynamic capacity by default (https://github.com/PyPSA/pypsa-eur/pull/1926). + +* Distribution grid experimental feature: voltage levels from 63 kV to 750 kV with example configuration + (https://github.com/PyPSA/pypsa-eur/pull/1740). + +* Allow expandable CCGTs by default (https://github.com/PyPSA/pypsa-eur/pull/1796). + +* Reverted to PDF files for graphs generated with :mod:`plot_summary` (https://github.com/PyPSA/pypsa-eur/pull/2083). + +* Add user-readable messages to each rule (https://github.com/PyPSA/pypsa-eur/pull/1846). + +* Running perfect foresight marked as unstable (https://github.com/PyPSA/pypsa-eur/pull/1853). + +* Empty auto-generated folders (``resources/``, ``results/``) added to repository; ``purge`` rule preserves folders + (https://github.com/PyPSA/pypsa-eur/pull/1764). + +* Improved handling of grouping years in :mod:`add_existing_baseyear` + (https://github.com/PyPSA/pypsa-eur/pull/2050). + +* Automatically update DAGs in documentation (https://github.com/PyPSA/pypsa-eur/pull/1880). + +**Bugfixes and Compatibility** -* Updated `build_osm_network` and `clean_osm_data` to handle voltage levels below 220 kV (down to 63 kV). When `base_network` is set to `osm_raw`, an electricity grid from voltage levels AC 63 kV to 750 kV can be created (experimental feature). For an example, see the example configuration in `config/examples/config-distribution-grid-experimental.yaml`. +* Fixed offshore wind potentials by disregarding CORINE land cover data for offshore technologies. -* Fix `retrieve_eurostat_data` and `retrieve_eurostat_household_data` on Windows by avoiding a double access to a temporary file. - (https://github.com/PyPSA/pypsa-eur/pull/1825) +* Increased minimum required PyPSA version to 0.33.2 (https://github.com/PyPSA/pypsa-eur/pull/1849). -* Update GEM steel plant tracker and use initial release of GEM cement plant tracker. +* Custom storage plugin for Zenodo retrievals to address recurring failures + (https://github.com/PyPSA/snakemake-storage-plugin-cached-http, https://github.com/PyPSA/pypsa-eur/pull/1913). -* Added integration with the OETC platform +* Fixed unit commitment compatibility for PyPSA v1.0 component API + (https://github.com/PyPSA/pypsa-eur/pull/2049). -* Remove pinned environment files mention in the pre-commit-config-yaml (https://github.com/PyPSA/pypsa-eur/pull/1837) +* Fixed rolling horizon optimisation to work in :mod:`solve_network` in addition to :mod:`solve_operations_network`; + drop cyclicity constraints with ``rolling_horizon: true`` + (https://github.com/PyPSA/pypsa-eur/pull/2070). -* Add user-readable messages to each rule (https://github.com/PyPSA/pypsa-eur/pull/1846) +* Fixed unit commitment parameters scaling start-up costs with nominal power capacity + (https://github.com/PyPSA/pypsa-eur/pull/2080). -* Increase minimum required `pypsa` version to 0.33.2 (https://github.com/PyPSA/pypsa-eur/pull/1849) +* Pinned ``grpcio<1.78`` to silence cluttering warnings (https://github.com/PyPSA/pypsa-eur/pull/2080). -* Running perfect foresight is now marked as unstable and may not work as expected. +* Fixed CO2Stop ID column handling across versions (https://github.com/PyPSA/pypsa-eur/pull/2077). -* Add residential heat demand-side management (DSM) based on `smartEn study `_ methodology. See new settings under `sector: residential_heat`. +* Ensured renewable carriers not added as conventional power plants if in ``powerplants.csv`` + (https://github.com/PyPSA/pypsa-eur/pull/2050). -* Remove the hotfix in `progress_retrieve` and check that the directory exists (https://github.com/PyPSA/pypsa-eur/pull/1840). +* Fixed wildcards error in :mod:`clean_osm_data` rule message (https://github.com/PyPSA/pypsa-eur/pull/2022). -* Added minimum unit dispatch setting option for electrolysis +* Fixed ``None`` default config parameter creating zero offshore wind availability + (https://github.com/PyPSA/pypsa-eur/pull/2019). -* Feature: All input data to the model is now version controlled. The data versions are listed in `data/versions.csv` and can be configured in the configfile. (https://github.com/PyPSA/pypsa-eur/pull/1675) +* Fixed virtual bus naming in raw OSM transmission network to use persistent names + (https://github.com/PyPSA/pypsa-eur/pull/1956). -* Deprecate `shared_cutouts`: This configuration entry is no longer supported. Cutouts are always shared. - To use scenario specific cutouts with different time or spatial resolution, make sure to name those cutouts differently in the `atlite:` configuration entry. +* Fixed column selection when preparing OSM pre-built releases (https://github.com/PyPSA/pypsa-eur/pull/1956). -* Move cutouts into `data/cutouts/` directory for consistency. Note: This will trigger all cutouts to be re-downloaded or rebuild. If you need to retain downloaded cutouts, move them manually into `data/cutouts/`. +* Fixed capital cost of ``solar-hsat`` not adjusted to current planning horizon in myopic optimization + (https://github.com/PyPSA/pypsa-eur/pull/1965). -* Deprecate the ability to determine ``cutout`` bounds based on ``regions_onshore`` and ``regions_offshore``. - Instead ``cutouts`` need to have their bounds explicitly defined in the configuration file. +* Fixed ``ConsistencyError`` for Links without buses when ``gas_network: true`` but no ``conventional_generation`` + (https://github.com/PyPSA/pypsa-eur/pull/1971). -* Moved configuration for ``cutout`` preparation into a nested dictionary ``prepare_kwargs``. - This allows to pass any keyword argument supported by ``atlite.Cutout.prepare()`` like ``tmpdir``. +* Fixed ``ConsistencyError`` for Links without buses when ``industry: true`` but no ``conventional_generation`` or + ``biomass`` (https://github.com/PyPSA/pypsa-eur/pull/1971). -* Deprecate the configuration options ``enable: retrieve``, ``enable: retrieve_databundle``, and ``enable: retrieve_cost_data``. - Instead, the rules are always included in the workflow. If no internet connection is available, the rules will fail. +* Fixed ``mock_snakemake`` due to upstream Snakemake API changes requiring ``LoggerManager`` instance + (https://github.com/PyPSA/pypsa-eur/pull/1984). -* Misc: Empty folders that are automatically generated by ``snakemake`` have been added to the repository, e.g. ``resources/`` and ``results/``. - The ``purge`` rule now removes their contents but keeps the folders (https://github.com/PyPSA/pypsa-eur/pull/1764). +* Fixed compatibility with ``pyogrio>=0.12.0`` in :mod:`build_gas_input_locations` and :mod:`build_gas_network` + (https://github.com/PyPSA/pypsa-eur/pull/1955). -* Misc: Automatically update the DAGs shown in the documentation (https://github.com/PyPSA/pypsa-eur/pull/1880). +* Fixed PyPSA-Eur use as Snakemake module by ensuring all file paths relative to rule inputs/outputs + (https://github.com/PyPSA/pypsa-eur/pull/1967). + +* Fixed OSM network building via Overpass API (https://github.com/PyPSA/pypsa-eur/pull/1940). + +* Fixed parsing of Swiss passenger cars data (https://github.com/PyPSA/pypsa-eur/pull/1934, https://github.com/PyPSA/pypsa-eur/pull/1936). + +* Fixed ``ValueError`` with ``cop_heat_pump`` in :mod:`prepare_sector_network` when ``tim_dep_hp_cop`` is + ``false`` (https://github.com/PyPSA/pypsa-eur/pull/1929). + +* Fixed OSM raw data cleaning to include ``section`` line relation role (https://github.com/PyPSA/pypsa-eur/pull/1927). + +* Fixed missing raw OSM HVDC links defined using ``power=circuit`` tag (https://github.com/PyPSA/pypsa-eur/pull/1926). + +* Fixed load shedding bugs from incorrect ``sign`` argument in ``n.add`` and ``np.isscalar`` + (https://github.com/PyPSA/pypsa-eur/pull/1908). + +* Fixed Eurostat data retrieval on Windows by avoiding double temporary file access + (https://github.com/PyPSA/pypsa-eur/pull/1825). + +* Fixed ``AttributeError`` in :mod:`prepare_sector_network` with single country and cluster + (https://github.com/PyPSA/pypsa-eur/pull/1835). + +* Fixed ``ValueError`` in :mod:`prepare_sector_network` ``add_storage_and_grids`` with few nodes + (https://github.com/PyPSA/pypsa-eur/pull/1780). + +* Fixed ``AttributeError`` in :mod:`prepare_sector_network` with single country + (https://github.com/PyPSA/pypsa-eur/pull/1778). + +* Fixed ``FileNotFoundError`` preventing PyPSA-Eur use as Snakemake module by saving intermediate files at top + directory level in multiple ``retrieve.smk`` rules (https://github.com/PyPSA/pypsa-eur/pull/1768). + +* Fixed heat pump CAPEX allocation to heat bus and removed nominal efficiency from CAPEX calculation + (https://github.com/PyPSA/pypsa-eur/pull/1748). + +* Fixed heat pump COP approximation configuration passing to :mod:`CentralHeatingCopApproximator` + (https://github.com/PyPSA/pypsa-eur/pull/1748). + +* Fixed ``pandas>=2.3.0`` deprecation warnings (https://github.com/PyPSA/pypsa-eur/pull/1898). + +* Fixed WDPA links on Windows (https://github.com/PyPSA/pypsa-eur/pull/2008). + +* Fixed WDPA and WDPA Marine data download and extraction (https://github.com/PyPSA/pypsa-eur/issues/2005). + +* Added automatic retry for Zenodo HTTP requests to handle transient errors + (https://github.com/PyPSA/pypsa-eur/pull/1861). + +* Fixed missing cost name for geothermal-sourced heat pump and allowed in test configs + (https://github.com/PyPSA/pypsa-eur/pull/1766). + +* Changed error handling for non-extendable heat storage energy-to-power ratio constraints to warning + (https://github.com/PyPSA/pypsa-eur/pull/1769). + +* Removed snakemake SLURM plugin from Windows installations (https://github.com/PyPSA/pypsa-eur/pull/2009). + +* Added missing bidding zone data sources to data layer (https://github.com/PyPSA/pypsa-eur/pull/1991). -* Fix the WDPA links to function on Windows (https://github.com/PyPSA/pypsa-eur/pull/2008). +* Removed pinned environment files mention from pre-commit-config-yaml (https://github.com/PyPSA/pypsa-eur/pull/1837). -* Fix: An issue with the download and extraction of WDPA and WDPA Marine data (https://github.com/PyPSA/pypsa-eur/issues/2005). PyPSA-Eur v2025.07.0 (11th July 2025) ===================================== diff --git a/doc/retrieve.rst b/doc/retrieve.rst index 360ee3fcb3..40ee8813c4 100644 --- a/doc/retrieve.rst +++ b/doc/retrieve.rst @@ -30,6 +30,20 @@ Rule ``retrieve_cutout`` See :ref:`cutouts`. +Rule ``retrieve_electricity_demand_energy_atlas`` +================================================= + +This rule downloads 1km by 1km raster of estimated annual electricity demand from the `JRC Energy Atlas `__ . + +Rule ``retrieve_desnz_electricity_consumption`` +================================================ + +This rule downloads subnational electricity consumption data for Great Britain from the `Department for Energy Security and Net Zero `__ . + +Rule ``retrieve_ons_lad`` +========================= + +This rule downloads shapefiles of local authorities in the United Kingdom from the `Office for National Statistics `__ . Rule ``retrieve_electricity_demand_opsd`` ========================================= diff --git a/doc/sector.rst b/doc/sector.rst index 1313b2e549..dc1725f36b 100644 --- a/doc/sector.rst +++ b/doc/sector.rst @@ -117,6 +117,11 @@ Rule ``build_tes_capacity_profiles`` .. automodule:: build_tes_capacity_profiles +Rule ``build_eurostat_balances`` +============================================================================== + +.. automodule:: build_eurostat_balances + Rule ``build_energy_totals`` ============================================================================== diff --git a/doc/validation_dev.rst b/doc/validation_dev.rst index dae7063fbb..81a871bebe 100644 --- a/doc/validation_dev.rst +++ b/doc/validation_dev.rst @@ -15,7 +15,7 @@ Configuration The configuration validation system consists of: - **Pydantic models** in ``scripts/lib/validation/config/`` that define all options and validates the snakemake config. -- **Auto-generated files**: ``config/config.default.yaml`` and ``config/schema.json``. +- **Auto-generated files**: ``config/config.default.yaml`` and ``config/schema.default.json``. Adding a New Config Option -------------------------- @@ -48,6 +48,10 @@ For example, the ``logging`` section in ``scripts/lib/validation/config/__init__ For more Field parameters, see the `Pydantic Field documentation `__. +.. note:: + If you are making config changes in a fork of PyPSA-Eur to meet your project-specific needs, + you should instead use the config updater class described in :ref:`soft_fork_ext`. + Adding a New Config Section --------------------------- @@ -78,6 +82,10 @@ For example, adding a ``file`` section to ``LoggingConfig``: There is one python module for each top level configuration. Helper classes for nested keys usee underscore prefix (e.g., ``_LoggingFileConfig``) by convention. +.. note:: + If you are making config changes in a fork of PyPSA-Eur to meet your project-specific needs, + you should instead use the config updater class described in :ref:`soft_fork_ext`. + Regenerating Config Files ------------------------- @@ -89,7 +97,7 @@ schema: $ pixi run generate-config -This updates ``config/config.default.yaml`` and ``config/schema.json``. +This updates ``config/config.default.yaml`` and ``config/schema.default.json``. For example, the two examples above would now generate: .. code-block:: yaml @@ -105,20 +113,6 @@ For example, the two examples above would now generate: Always commit these regenerated files alongside your model changes. -Extending for Soft-Forks ------------------------- - -If you maintain a soft-fork of PyPSA-Eur with custom config options, you have two approaches: - -**Allow extra fields**: The ``ConfigSchema`` uses ``extra="allow"`` by default, so -unrecognized config keys won't cause validation errors. Your custom options will pass -through without type checking. Only if you changed existing config settings, you will -need to adjust the schema. But you will lose the sync of Pydantic model and defaults -YAML, which is currently enforced via an upstream CI job. - -**Extend the schema**: It is better to add full validation of your additional -configuration, which means you will need to update the Pydantic model as explained above. - Custom Validators ----------------- @@ -168,3 +162,101 @@ ensuring the file path is set when file logging is enabled: Again, find more information in the Pydantic documentation on `Field Validators `_ and `Model Validators `_. + +.. _soft_fork_ext: + +Extending for Soft-Forks +------------------------ + +If you maintain a soft-fork of PyPSA-Eur with custom config options, you have two approaches: + +**Allow extra fields**: The ``ConfigSchema`` uses ``extra="allow"`` by default, so +unrecognized config keys won't cause validation errors. Your custom options will pass +through without type checking. Only if you changed existing config settings, you will +need to adjust the schema. But you will lose the sync of Pydantic model and defaults +YAML, which is currently enforced via an upstream CI job. + +**Extend the schema**: It is better to add full validation of your additional +configuration. +The cleanest way to do this is to use the config updater base class that we make available. +You impose config changes in subclasses of the base class and by importing those into `scripts.lib.validation.config_updates.py` they will be used to automatically overwrite the configuration. + +In the below example, two updates are made to the default config. + +.. code-block:: python + + from typing import Literal + + from pydantic import BaseModel, Field + + from scripts.lib.validation.config._base import ConfigUpdater + from scripts.lib.validation.config._schema import ConfigSchema + + + class ClusteringConfigUpdater(ConfigUpdater): + name: str = "update_clustering" + + def update(self) -> type[ConfigSchema]: + # To update and existing config item, we need it's most recent state, as defined in `self.base_config` + clustering_config = self.base_config().clustering.__class__ + mode_config = clustering_config.model_fields["mode"] + + current_description = mode_config.description or "" + new_description = current_description + " (extra) foobar: new item." + new_list = Literal[mode_config.annotation, "foobar"] + + clustering_schema = self._apply_updates( + __base__=clustering_config, + mode=(new_list, Field(mode_config.default, description=new_description)), + ) + new_schema = self._apply_updates( + clustering=(clustering_schema, Field(default_factory=clustering_schema)) + ) + + return new_schema + + + class MyNewConfigSection(BaseModel): + my_new_field: str = Field("foo") + + + class NewConfigItem(ConfigUpdater): + name: str = "new_section" + + def update(self) -> type[ConfigSchema]: + new_schema = self._apply_updates( + new_section=(MyNewConfigSection, Field(default_factory=MyNewConfigSection)), + ) + return new_schema + +If this code were stored in the script ``scripts/_my_config_updates.py`` then ``scripts.lib.validation.config_updates.py`` would now include: + +.. code-block:: python + + import scripts._my_config_updates + +This is sufficient for both updates to be imported. + +.. admonition:: Config filename + + When generating the config files with the above example (``pixi run generate-config``), + you would now generate ``config/config.default.update_clustering.new_section.yaml``. + To override the base ``config/config.default.yaml``, you can set the ``name`` property of your updater classes to empty strings: ``""``. + +.. admonition:: Chaining updates + + Several separate update scripts can exist and be used to create chained updates of the schema. + They will be used to update the schema in the order they appear in ``scripts.lib.validation.config_updates.py``. + this means that you can update the same config item multiple times. + If you are importing config changes from a submodule and you want to catch cases where you are both updating the same config item, you can add a check in your ``update`` method, such as: + + .. code:: python + + if clustering_config != ClusteringConfig: + raise ValueError( + "You are trying to update the clustering config item after it has already been updated by another config updater." + " This could have unexpected consequences." + ) + +.. autoclass:: lib.validation.config._base::ConfigUpdater + :members: name, update, _apply_updates \ No newline at end of file diff --git a/envs/default_linux-64.pin.txt b/envs/default_linux-64.pin.txt index 39b360bb1b..83837e0165 100644 --- a/envs/default_linux-64.pin.txt +++ b/envs/default_linux-64.pin.txt @@ -2,41 +2,39 @@ # platform: linux-64 @EXPLICIT https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda#ad659d0a2b3e47e38d829aa8cad2d610 -https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_16.conda#26c46f90d0e727e95c6c9498a33a09f3 -https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 -https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2#73aaf86a425cc6e73fcf236a5a46396d -https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_16.conda#6d0363467e6ed84f11435eb309f2ff06 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda#239c5e9546c38a1e884d69effcf4c882 +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda#a9f577daf3de00bca7c3c76c0ecbd1de +https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda#0aa00f03f9e39fb9876085dee11a85d4 https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda#edb0dca6bc32e4f4789199455a1dbeb8 -https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda#86bc20552bf46075e3d92b67f089172d +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda#cffd3bdd58090148f4cfcd831f4b26ab https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda#47e340acb35de30501a76c7c799c41d7 https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda#d7d95fc8287ea7bf33e0e7116d2b95ec https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda#94305520c52a4aa3f6c2b1ff6008d9f8 https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda#bddacf101bb4dd0e51811cb69c7790e2 -https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda#9ee58d5c534af06558933af3c845a780 +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda#f61eb8cd60ff9057122a3d338b99c00f https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda#db409b7c1720428638e7c0d509d3e1b5 -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_16.conda#68f68355000ec3f1d6f26ea13e8f525f +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda#1b08cd684f34175e4514474793d44bcb https://conda.anaconda.org/conda-forge/linux-64/icu-78.2-h33c6efd_0.conda#186a18e3ba246eccfc7cff00cd19a870 https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.2-hf4e2dac_0.conda#da5be73701eecd0e8454423fd6ffcf30 -https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda#c7e925f37e3b40d893459e625f6a53f1 +https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda#2c21e66f50753a083cbe6b80f38268fa https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda#c7c83eecbb72d88b940c249af56c8b17 -https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda#35f29eec58405aaf55e01cb470d8c26a -https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.3-hecca717_0.conda#8b09ae86839581147ef2e5c5e229d164 +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda#a360c33a5abe61c07959e449fa1453eb +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda#e7f7ce06ec24cfcfb9e36d28cf82ba57 https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda#4a13eeac0b5c8e5b8ab496e6c4ddd829 -https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_105.conda#3ec0aa5037d39b06554109a01e6fb0c6 -https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda#51a19bba1b8ebfb60df25cde030b7ebc -https://conda.anaconda.org/conda-forge/linux-64/python-3.13.11-hc97d973_100_cp313.conda#0cbb0010f1d8ecb64a428a8d4214609e -https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 -https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda#9efbfdc37242619130ea42b1cc4ed861 +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda#12bd9a3f089ee6c9266a37dab82afabd +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda#d2ffd7602c02f2b316fd921d39876885 +https://conda.anaconda.org/conda-forge/linux-64/python-3.13.12-hc97d973_100_cp313.conda#4c875ed0e78c2d407ec55eadffb8cf3d +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda#e5ce43272193b38c2e9037446c1d9206 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda#9d64911b31d57ca443e9f1e36b04385f -https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_16.conda#39183d4e0c05609fd65f130633194e37 -https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_16.conda#40d9b534410403c821ff64f00d0adc22 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda#646855f357199a12f02a87382d429b75 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda#9063115da5bc35fdc3e1002e69b9ef6e https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.30-pthreads_h94d23a6_4.conda#be43915efc66345cccb3c310b6ed0374 https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda#c160954f7418d7b6e87eaf05a8913fa9 https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda#b38076eb5c8e40d0106beda6f95d7609 https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda#6636a2b6f1a87572df2970d3ebc87cc0 -https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.1-py313hf6604e3_0.conda#7d51e3bef1a4b00bde1861d85ba2f874 +https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.2-py313hf6604e3_1.conda#ca9c6ba4beac38cb3d0a85afde27f94c https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.0-py313h4b8bb8b_1.conda#2b18fe5b4b2d1611ddf8c2f080a46563 -https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda#cb72cedd94dd923c6a9405a3d3b1c018 +https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda#1d00d46c634177fc8ede8b99d6089239 https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda#615de2a4d97af50c350e5cf160149e77 https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.8.0-np2py313h16d504d_1.conda#d43a148434f123b3e060780d84a05ddc https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda#fd5062942bfa1b0bd5e0d2a4397b099e @@ -47,14 +45,13 @@ https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda#3339 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda#5b8d21249ff20967101ffa321cab24e8 https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.3-py313h08cd8bf_2.conda#8a69ea71fdd37bfe42a28f0967dbb75a https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda#a2c1eeadae7a309daed9d62c96012a2b -https://conda.anaconda.org/conda-forge/linux-64/highspy-1.12.0-np2py313h73dcb5b_0.conda#95abab2403527c4199e6daa94671d46a +https://conda.anaconda.org/conda-forge/linux-64/highspy-1.13.1-np2py313h73dcb5b_0.conda#df8affd8e4be7451214b4e5e8c7071a8 https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.1-pyhd8ed1ab_0.conda#ed5f5e0cbc50f05631813b0d48021de1 -https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda#5d99943f2ae3cc69e1ada12ce9d4d701 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda#12c566707c80111f9799308d9e265aef https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py313hf46b229_1.conda#d0616e7935acab407d1543b28c446f6f https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py313h54dd161_1.conda#710d4663806d0f72b2fb414e936223b5 https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda#0caa1af407ecff61170c9437a808404d -https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.2-pyhd8ed1ab_0.conda#bdb8608d3b834159b1b684dc6df3ac44 +https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.3-pyhd8ed1ab_0.conda#c97b99b1f4f76708edbe7b5811d95da9 https://conda.anaconda.org/conda-forge/linux-64/wrapt-1.17.3-py313h07c4f96_1.conda#c2662497e9a9ff2153753682f53989c9 https://conda.anaconda.org/conda-forge/noarch/throttler-1.2.2-pyhd8ed1ab_0.conda#6fc48bef3b400c82abaee323a9d4e290 https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda#58335b26c38bf4a20f399384c33cbcf9 @@ -74,22 +71,22 @@ https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda#53abe https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda#a22d1fd9bf98827e280a02875d9a007a https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda#eacc711330cd46939f66cd401ff9c44b https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda#c65df89a0b2e321045a9e01d1337b182 -https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda#84c5c40ea7c5bbc6243556e5daed20e7 -https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.3-py313heb322e3_1.conda#4e6278c519f2766ea707361f81b33364 +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda#f9517d2fe1501919d7a236aba73409bb +https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.5-py313heb322e3_0.conda#964f25e322b16cae073da8f5b7adf123 https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda#42834439227a4551b939beeeb8a4b085 https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.3.1-pyhd8ed1ab_0.conda#d4f3f31ee39db3efecb96c0728d4bdbf https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda#a55b220de8970208f583e38639cfbecc https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-http-0.3.0-pyhdfd78af_0.tar.bz2#269943ac6637718947763b4f989710fc -https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda#1bd2e65c8c7ef24f4639ae6e850dacc2 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda#4fefefb892ce9cc1539405bec2f1a6cd https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda#03fe290994c5e4ec17293cfb6bdce520 https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.conda#b8993c19b0c32a2f7b66cbb58ca27069 https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda#8e662bd460bda79b1ea39194e3c4c9ab https://conda.anaconda.org/conda-forge/noarch/anyio-4.12.1-pyhcf101f3_0.conda#11a2b8c732d215d977998ccd69a9d5e8 https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda#4f14640d58e2cc0aa0819d9d8ba125bb https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda#d6989ead454181f4f9bc987d3dc4e285 -https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.2.1-pyhdfd78af_0.conda#f50f82ac51409fd0dc75a20a9f6930ea +https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.3-pyhdfd78af_0.conda#15fe83cb157467c0c85c375f56abf199 https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda#a77f85f77be52ff59391544bfe73390a -https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_0.conda#4794ea0adaebd9f844414e594b142cb2 +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_1.conda#f256753e840c3cd3766488c9437a8f8b https://conda.anaconda.org/conda-forge/noarch/dpath-2.2.0-pyha770c72_1.conda#7b2af124684a994217e62c641bca2e48 https://conda.anaconda.org/conda-forge/noarch/yte-1.9.4-pyhd8ed1ab_0.conda#89d5edf5d52d3bc1ed4d7d3feef508ba https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhcf101f3_3.conda#de98449f11d48d4b52eefb354e2bfe35 @@ -108,7 +105,7 @@ https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda#d6bd3cd217e62bbd7efe67ff224cd667 https://conda.anaconda.org/conda-forge/noarch/amply-0.1.6-pyhd8ed1ab_1.conda#5a81866192811f3a0827f5f93e589f02 https://conda.anaconda.org/conda-forge/linux-64/pulp-2.8.0-py313hf1034c9_3.conda#78f128f3808ce5fc44f901b87d479764 -https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.1-py313h54dd161_0.conda#d362949a1ed1ad4693b3928ad1d32c93 +https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313h54dd161_0.conda#25fe6e02c2083497b3239e21b49d8093 https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda#019a7385be9af33791c989871317e1ed https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda#23029aae904a2ba587daba708208012f https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda#b38fe4e78ee75def7e599843ef4c1ab0 @@ -128,14 +125,12 @@ https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.cond https://conda.anaconda.org/conda-forge/noarch/connection_pool-0.0.3-pyhd3deb0d_0.tar.bz2#e270fff08907db8691c02a0eda8d38ae https://conda.anaconda.org/conda-forge/noarch/conda-inject-1.3.2-pyhd8ed1ab_0.conda#e52c2a160d6bd0649c9fafdf0c813357 https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda#f4e90937bbfc3a4a92539545a37bb448 -https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.15.0-pyhdfd78af_0.conda#71856e8d31fc4396cb4b3b57c9e7fb83 +https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.16.3-pyhdfd78af_0.conda#d5ff394122607ae4b0ee8362f6225959 https://conda.anaconda.org/bioconda/noarch/snakemake-logger-plugin-pypsa-0.1.0-pyhdfd78af_0.conda#1a318ca1376d0cd58aa85e3857b08520 https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.4.0-pyhdfd78af_0.conda#7d4f2bf739967798eb4d8c02d59cf36c -https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.1.0-pyhdfd78af_0.conda#01e79189d86f278322d0807f7d1dbada +https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.2.0-pyhdfd78af_0.conda#4ed1b626504a1b8e9460ccc930d1310e https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-cluster-generic-1.0.9-pyhdfd78af_0.tar.bz2#9b1db7127119f513696d620eefe7bf67 -https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.14-h4196e79_0.conda#830a347c5a4bb01b72c6e5b23ba35515 -https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py313h54dd161_1.conda#ef8c7c9f4ea478806d9056bbc9c9c093 -https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda#06ad944772941d5dae1e0d09848d8e49 +https://conda.anaconda.org/conda-forge/linux-64/ruff-0.15.1-h40fa522_0.conda#474808b6894605b04bae59ced8210123 https://conda.anaconda.org/conda-forge/noarch/xarray-2025.6.1-pyhd8ed1ab_1.conda#145c6f2ac90174d9ad1a2a51b9d7c1dd https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda#9aa358575bbd4be126eaa5e0039f835c https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.51.2-h04a0ce9_0.conda#bb88d9335d09e54c7e6b5529d1856917 @@ -145,16 +140,16 @@ https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda#9344155d33912347b37f0ae6c410a835 https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda#cd5a90476766d53e901500df9215e927 https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda#eecce068c7e4eddeb169591baac20ac4 -https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_16.conda#5a68259fac2da8f2ee6f7bfe49c9eb8b +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda#d5e96b1ed75ca01906b3d2469b4ce493 https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172bf1cd1ff8629f2b1179945ed45055 https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda#920bb03579f15389b9e512095ad995b7 https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda#b499ce4b026493a13774bcf0f4c33849 -https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_16.conda#1b3152694d236cf233b76b8c56bf0eae +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_18.conda#6235adb93d064ecdf3d44faee6f468de https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda#c277e0a4d549b03ac1e9d6cbbe3d017b https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda#b38117a3c920364aff79f870c984b4a3 https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-h4e3cde8_0.conda#0a5563efed19ca4461cf927419b6eb73 -https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_2.conda#beb1885cfdb793193bba83c9720d53b1 +https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_3.conda#031e33ae075b336c0ce92b14efa886c5 https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda#d864d34357c3b65a4b731f78c0801dc4 https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-hd9031aa_1.conda#66a1db55ecdb7377d2b91f54cd56eafa https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda#7a3bff861a6583f1889021facefc08b1 @@ -170,28 +165,32 @@ https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h46dd2a8_20.cond https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.10-h05a5f5f_0.conda#da01bb40572e689bd1535a5cee6b1d68 https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h9dce30a_2.conda#ecb5d11305b8ba1801543002e69d2f2f https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-gpl_h2abfd87_119.conda#887245164c408c289d0cb45bd508ce5f -https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.54-h421ea60_0.conda#d361fa2a59e53b61c2675bfa073e5b7e +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda#5f13ffc7d30ffec87864e678df9957b4 https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.8-hac33072_0.conda#d71d3a66528853c0a1ac2c02d79a0284 https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-haa4a5bd_1022.conda#00f0f4a9d2eb174015931b1a234d61ca https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.3.0-h4c17acf_1.conda#c2a0c1d0120520e979685034e0b79859 https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda#72c8fd1af66bd67bf580645b426513ed https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda#4ffbb341c8b616aa2494b6afb26a0c5f https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda#366b40a69f0ad6072561c1d09301c886 -https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.1-ha09017c_8.conda#6e9bf4ce797d0216bd2a58298b6290b5 +https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-ha09017c_0.conda#1df8c1b1d6665642107883685db6cf37 https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda#45161d96307e3a447cc3eb5896cf6f8c https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.5-gpl_hc2c16d8_100.conda#5fdaa8b856683a5598459dead3976578 https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda#38f5dbc9ac808e31c00650f7be1db93f https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda#3bf7b9fd5a7136126e0234db4b87c8b6 https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda#98b6c9dc80eb87b2519b97bcf7e578dd https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda#2c2fae981fd2afd00812c92ac47d023d -https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.1-hf05ffb4_0.conda#6ce4ad29c3ae0b74df813409433457ff +https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.2-hc2c0581_1.conda#c8ca404aeab8e32c9d6d82a82aeb6511 https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda#f22f4d4970e09d68a10b922cbb0408d3 https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_2.conda#55c7804f428719241a90b152016085a1 https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda#e9b05deb91c013e5224672a4ba9cf8d1 https://conda.anaconda.org/conda-forge/noarch/affine-2.4.0-pyhd8ed1ab_1.conda#8c4061f499edec6b8ac7000f6d586829 https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.5.0-py313h2005660_0.conda#d551bd1d2fcfac36674dbe2be4b0a410 https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.7.2-py313h77f6078_2.conda#42d11c7d1ac21ae2085f58353641e71c -https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_1.conda#e7e37bf890147fa5d7892812a6dd3888 +https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.21.0-pyhcf101f3_1.conda#a0811eb1142b4da29162d1931922a1ec +https://conda.anaconda.org/conda-forge/linux-64/simplejson-3.20.2-py313h07c4f96_1.conda#1cc1de04373b633177f4d367b8b75270 +https://conda.anaconda.org/conda-forge/linux-64/shapely-2.1.2-py313had47c43_2.conda#6e550dd748e9ac9b2925411684e076a1 +https://conda.anaconda.org/conda-forge/linux-64/fiona-1.10.1-py313hae45665_6.conda#5817b2e9b067dca0dc2dced6e941bbee +https://conda.anaconda.org/conda-forge/noarch/rasterstats-0.20.0-pyhd8ed1ab_2.conda#a6762dbfc4cf7084adf09f0accdf0f8a https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2#0c14e44bc93a99cdc11398311c3c0dcf https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda#083725d6cd3dc007f06d04bcf1e613a2 https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.12.1-default_hafda6a7_1003.conda#4fe840c6d6b3719b4231ed89d389bb17 @@ -204,21 +203,19 @@ https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.2-hb03c661_0.conda# https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.2-ha02ee65_0.conda#a159fe1e8200dd67fa88ddea9169d25a https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.2-hb03c661_0.conda#de60549ba9d8921dff3afa4b179e2a4b https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.2-ha02ee65_0.conda#d34b831f6d6a9b014eb7cf65f6329bba -https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_16.conda#e5eb2ddedabd0063e442f230755d2062 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_18.conda#26d7b228de99d6fb032ba4d5c1679040 https://conda.anaconda.org/conda-forge/linux-64/libscotch-7.0.4-h2fe6a88_5.conda#dd1e1c54432494476d66c679014c675c https://conda.anaconda.org/conda-forge/linux-64/mumps-seq-5.7.3-h27a6a8b_0.conda#d524b41c7757ea147337039fa4158fbb https://conda.anaconda.org/conda-forge/linux-64/libspral-2025.05.20-hfabd9d1_1.conda#9f54808199531c466b437215d8dd5c29 https://conda.anaconda.org/conda-forge/linux-64/ampl-asl-1.0.0-h5888daf_2.conda#ef757816a8f0fee2650b6c7e19980b6b https://conda.anaconda.org/conda-forge/linux-64/ipopt-3.14.19-h0804adb_0.conda#0a2ef4d1be0625a06d74b08829d4ef1f -https://conda.anaconda.org/conda-forge/linux-64/cppad-20250000.2-h5888daf_0.conda#dc7dcf7e7f81c82a6254a25b9600fe78 -https://conda.anaconda.org/conda-forge/linux-64/scip-9.2.4-hd8b5c82_2.conda#b9d1dc838aee1ded7b34cbc65e6a260c -https://conda.anaconda.org/conda-forge/linux-64/pyscipopt-5.6.0-py313h7033f15_1.conda#d2e8b402c691b8dd1233b1f7fb53c9ad +https://conda.anaconda.org/conda-forge/linux-64/scip-10.0.1-hd8b5c82_0.conda#094a988812a7a5ab41324116d5e9a33a +https://conda.anaconda.org/conda-forge/linux-64/pyscipopt-6.1.0-np2py313h73dcb5b_0.conda#ddb2f8a6e10340cbab3606896c69d537 https://conda.anaconda.org/conda-forge/noarch/validators-0.35.0-pyhd8ed1ab_0.conda#3449ef730c7d483adde81993994092b9 -https://conda.anaconda.org/conda-forge/linux-64/shapely-2.1.2-py313had47c43_2.conda#6e550dd748e9ac9b2925411684e076a1 https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda#8678577a52161cc4e1c93fcc18e8a646 https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.6-py313h29aa505_0.conda#13a3e9edeef521461cb8d47fa855e353 https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda#353823361b1d27eb3960efb076dfcaf6 -https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.2-hceb46e0_1.conda#40feea2979654ed579f1cda7c63ccb94 +https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda#2aadb0d17215603a82a2a6b0afd9a4cb https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda#11b3379b191f63139e29c0d19dee24cd https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda#1dafce8548e38671bea82e3f5c6ce22f https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda#b2895afaf55bf96a8c8282a2e47a5de0 @@ -227,7 +224,7 @@ https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda#9 https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda#8e7251989bca326a28f4a5ffbd74557a https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.1-ha770c72_0.conda#f4084e4e6577797150f9b04a4560ceb0 https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda#6f2e2c8f58160147c4d1c6f4c14cbac4 -https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.0-py313h80991f8_0.conda#183fe6b9e99e5c2b464c1573ec78eac8 +https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py313h80991f8_0.conda#2d5ee4938cdde91a8967f3eea686c546 https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.9-py313hc8edb43_2.conda#3e0e65595330e26515e31b7fc6d933c7 https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.1-ha770c72_0.conda#4afc585cd97ba8a23809406cd8a9eda8 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda#37293a85a0f4f77bbd9cf7aaefc62609 @@ -244,27 +241,26 @@ https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_1.cond https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2#9a66894dfd07c4510beb6b3f9672ccc0 https://conda.anaconda.org/conda-forge/linux-64/numexpr-2.14.1-py313h24ae7f9_101.conda#b7e46fb2704458afc67fb95773528967 https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda#86f7414544ae606282352fa1e116b41f -https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h1b119a7_105.conda#d58cd79121dd51128f2a5dab44edf1ea -https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.22.0-hc31b594_1.conda#52019609422a72ec80c32bbc16a889d8 -https://conda.anaconda.org/conda-forge/linux-64/pytables-3.10.2-py313h0546747_10.conda#fda299ac2474303b7327a8399d541a9f +https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_106.conda#c223ee1429ba538f3e48cfb4a0b97357 +https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.23.0-hc31b594_0.conda#f3ac2d8b1b3ac0ba4e42050279ef6ce8 +https://conda.anaconda.org/conda-forge/linux-64/pytables-3.10.2-py313h0546747_11.conda#0bf244b620dcf9278c813105e2d42284 https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda#4b13d1d2d5cba37be9fa3c0922bbf995 -https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda#37926bb0db8b04b8b99945076e1442d0 +https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda#648a62e4e4cf1605abf73e7f48b87d5e https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda#7702bcd70891dd0154d765a69e1afa94 https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda#a7b27c075c9b7f459f1c022090697cba https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda#bd77f8da987968ec3927990495dc22e4 https://conda.anaconda.org/conda-forge/linux-64/attr-2.5.2-h39aace5_0.conda#791365c5f65975051e4e017b5da3abf5 -https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_h11f7409_103.conda#3ccff1066c05a1e6c221356eecc40581 +https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_hbf2fc22_104.conda#a2956b63b1851e9d5eb9f882d02fa3a9 https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.5-py313h29aa505_1.conda#c63d5f9d63fe2f48b0ad75005fcae7ba https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.3-nompi_py313hfae5b86_100.conda#d5247c4087289475a8c324bbe03a71ce https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda#c07a6153f8306e45794774cf9b13bd32 -https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda#5bf347916a543bcb290c780fa449bf73 -https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.conda#d1461b2e63b1909f4f5b41c823bd90ae +https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda#9a4b8a37303b933b847c14a310f0557b +https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.12-h4df99d1_100.conda#3d92938d5b83c49162ade038aab58a59 https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda#aaa2a381ccc56eac91d63b6c1240312f -https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.37.1-py310hffdcd12_0.conda#732a536c6ce768f096f5340121e10cc5 -https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda#1894d4373da653406c91e20ef89f05c8 +https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.38.1-py310hffdcd12_0.conda#b659a59ec7b67623dcaec02388e06fb9 +https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda#b20de145c676cbae6138ac478cdb137b https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda#83b160d4da3e1e847bf044997621ed63 https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.31.1-py313h8c92afc_2.conda#afed78c744cc34474140bb4415937fde -https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyh742d864_0.conda#9d2a54ab80a5cc8138b8adb1e146ac20 https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2#c965a5aa0d5c1c37ffc62dff36e28400 https://conda.anaconda.org/conda-forge/linux-64/google-crc32c-1.8.0-py313h74173ec_1.conda#d358850e37a98739224fdc265d7d8eb7 https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda#ba7f04ba62be69f9c9fef0c4487c210b @@ -287,21 +283,21 @@ https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.7.0-py313h6b9daa2_0 https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda#421a865222cd0c9d83ff08bc78bf3a61 https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda#18fd895e0e775622906cdabfc3cf0fb4 https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.13.3-py313hd6074c6_0.conda#684fb9c78db5024b939a1ed0a107f464 -https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda#fa0d1dbb4ae73ca3636fe64ed0632a42 -https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda#1099a038989e7f4037d3ce21e8ee9f2c +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda#6e643ba74997c8dddbaa98fc2fc3481b +https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda#c9b8e02d974817913ab94dae12c7340b https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda#7fd8158ff94ccf28a2ac1f534989d698 https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda#48fcccc0b579087018df0afc332b8bd6 -https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda#d05f7e8724ceb2a77edf3e39cc7760bb +https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda#71aa090f8647c9b9efa63994eaa0dc18 https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar.bz2#7b6747d7cc2076341029cff659669e8b https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda#30cd29cb87d819caead4d55184c1d115 https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda#63ccfdc3a3ce25b027b8767eb722fca8 -https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda#1daaf94a304a27ba3446a306235a37ea +https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda#496c6c9411a6284addf55c898d6ed8d7 https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda#61b8078a0905b12529abc622406cb62c -https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.1-pyhcf101f3_1.conda#91e3b2a0d014ac032c066a2e18051686 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.2-pyhcf101f3_0.conda#b20e7ce9afd59036ab194f3d1e27edf5 https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.6.0-np2py313hc18bace_3.conda#5ce830ed3ab4a6f9deaf40bc02690e88 -https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.1-pyhcf101f3_0.conda#8f46def45efc90f7462e476e3fdb3de0 +https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.3-pyhcf101f3_1.conda#98fd08c0fc8a9c55c463533c8cface53 https://conda.anaconda.org/conda-forge/linux-64/rapidfuzz-3.14.3-py313h7033f15_1.conda#87ec3a86d3c910b1d64ec7116e156d40 https://conda.anaconda.org/conda-forge/linux-64/levenshtein-0.27.3-py313h7033f15_0.conda#29bf23365392f0d2be302687c66979d8 https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda#16933322051fa260285f1a44aae91dd6 @@ -311,57 +307,145 @@ https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.2-pyha770c72_0. https://conda.anaconda.org/conda-forge/noarch/branca-0.8.2-pyhd8ed1ab_0.conda#1fcdf88e7a8c296d3df8409bf0690db4 https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda#a6997a7dcd6673c0692c61dfeaea14ab https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda#3b9d40bef27d094e48bb1a821e86a252 -https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.7-pyhd8ed1ab_0.conda#e451a3c0ab3ad6fbe7bf83c59f0e2f9b +https://conda.anaconda.org/conda-forge/noarch/pypsa-1.1.0-pyhd8ed1ab_0.conda#d5c919eb3a7124b47dff09883443aed2 https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.14.0-pyha770c72_0.conda#385dca77a8b0ec6fa9b92cb62d09b43b https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda#72e780e9aa2d0a3295f59b1874e3768b https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda#827064ddfe0de2917fb29f1da4f8f533 https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda#55a61979242077b2cc377c74326ea9f0 https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda#080a808fce955026bf82107d955d32da -https://conda.anaconda.org/conda-forge/linux-64/astroid-4.0.3-py313h78bf25f_0.conda#b643fa1962890fe34a1e811644edbb22 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 +https://conda.anaconda.org/conda-forge/linux-64/astroid-4.0.4-py313h78bf25f_0.conda#b9a5074b980b555420188db0ccf3cc20 https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.4-pyhcf101f3_0.conda#3a830511a81b99b67a1206a9d29b44b3 -https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda#2cfaaccf085c133a477f0a7a8657afe9 +https://conda.anaconda.org/conda-forge/noarch/wbgapi-1.0.12-pyhd8ed1ab_0.tar.bz2#a2e1ba950c0ec23e3ea0b915743a37e0 +https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda#1247168fe4a0b8912e3336bccdbf98a5 +https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.2-h19cb568_0.conda#a98b8d7cfdd20004f1bdd1a51cb22c58 +https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda#a83f6a2fdc079e643237887a37460668 +https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda#16c2a0e9c4a166e53632cfca4f68d020 +https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_1.conda#9e298d76f543deb06eb0f3413675e13a +https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda#1c0320794855f457dea27d35c4c71e23 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda#a2e30ccd49f753fd30de0d30b1569789 +https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.39.0-hdbdcf42_0.conda#bd21962ff8a9d1ce4720d42a35a4af40 +https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda#d411fc29e338efb48c5fd4576d71d881 +https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca +https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.2-h206d751_0.conda#5492abf806c45298ae642831c670bba0 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-ha7a2c86_1.conda#6400f73fe5ebe19fe7aca3616f1f1de7 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-hdd73cc9_1.conda#939d9ce324e51961c7c4c0046733dbb7 +https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-h52c5a47_1.conda#6d10339800840562b7dad7775f5d2c16 +https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-hed0cdb0_1.conda#68bfb556bdf56d56e9f38da696e752ca +https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.6-hb03c661_0.conda#e36ad70a7e0b48f091ed6902f04c23b8 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda#c7e3e08b7b1b285524ab9d74162ce40b +https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.7-h8b1a151_5.conda#68da5b56dde41e172b7b24f071c4b392 +https://conda.anaconda.org/conda-forge/linux-64/s2n-1.6.2-he8a4886_1.conda#bade189a194e66b93c03021bd36c337b +https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda#3c3d02681058c3d206b562b2e3bc337f +https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.23.3-hdaf4b65_5.conda#132e8f8f40f0ffc0bbde12bb4e8dd1a1 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h8b1a151_9.conda#f7ec84186dfe7a9e3a9f9e5a4d023e75 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.7-ha8fc4e3_5.conda#3028f20dacafc00b22b88b324c8956cc +https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.3-hef928c7_0.conda#bdd464b33f6540ed70845b946c11a7b8 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.3-h06ab39a_1.conda#3689a4290319587e3b54a4f9e68f70c8 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.13.3-hc63082f_11.conda#6a653aefdc5d83a4f959869d1759e6e3 +https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.7-h28f887f_1.conda#7b8e3f846353b75db163ad93248e5f9d +https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.35.4-h8824e59_0.conda#113b9d9913280474c0868b0e290c0326 +https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-h20b40b1_10.conda#937d1d4c233adc6eeb2ac3d6e9a73e53 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.0-h258748b_2_cuda.conda#c364f39d8a924797157da59d8cdd6b97 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.0-h8c2c5c3_2_cuda.conda#7846ea1f43ef6beb04749b5dffd6e4da +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.0-py313hfe0801a_0_cuda.conda#c9ab081186dd0163e75bebaa77fde5ae +https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda#a1cfcc585f0c42bf8d5546bb1dfb668d +https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda#8ed82d90e6b1686f5e98f8b7825a15ef +https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.0-h7376487_2_cuda.conda#1e2a463be2b1248c214b246fa14b72f6 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.0-h635bf11_2_cuda.conda#b1f327dae633933118765c113fd3ecd0 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.0-h635bf11_2_cuda.conda#fa0aa202043167a22dd7638c08004cb2 +https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.0-h3f74fd7_2_cuda.conda#cf0b0682dadc05c597b11ff24ae6c0b7 +https://conda.anaconda.org/conda-forge/linux-64/pyarrow-23.0.0-py313h78bf25f_0.conda#a6e89cb214f318db9548b791ba27f862 +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda#e9c622e0d00fa24a6292279af3ab6d06 +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda#fa31df4d4193aabccaf09ce78a187faf +https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.0-pyhd8ed1ab_0.conda#b514a7bd078dcb4520a1aea4d14c5a3a +https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda#a0a4a3035667fc34f29bfbd5c190baa6 +https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py313h843e2db_1.conda#f27c39a1906771bbe56cd26a76bf0b8b +https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c +https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda#c3946ed24acdb28db1b5d63321dbca7d +https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.29.0-pyhd8ed1ab_0.conda#36208e1c5c12f2aab4a312eff144713c +https://conda.anaconda.org/conda-forge/noarch/pandera-0.29.0-hd8ed1ab_0.conda#11a5b7d9a1d1759dedfc6cf05c37d66a +https://conda.anaconda.org/conda-forge/noarch/url-normalize-2.2.1-pyhd8ed1ab_0.conda#5db19244300bf33e9471a0b13f9b94cb +https://conda.anaconda.org/conda-forge/linux-64/ujson-5.11.0-py313h5d5ffb9_1.conda#3d6453bc28f78bfa0841b18dec45353e +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda#7ac5f795c15f288984e32add616cdc59 +https://conda.anaconda.org/conda-forge/noarch/cattrs-25.3.0-pyhd8ed1ab_0.conda#e78e411a2d5a999f2b1536f6c9481801 +https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.3.0-pyhd8ed1ab_0.conda#c992772513a6f9d329aaedca8736c173 +https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda#71bf9646cbfabf3022c8da4b6b4da737 +https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313ha4be090_3.conda#993d27015ca7aa1de3f4a471a9b5309e +https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.2-pyhd8ed1ab_0.conda#4c222e160d3ef895d83a1b813310dbce +https://conda.anaconda.org/conda-forge/noarch/oda-reader-1.4.2-pyhcf101f3_0.conda#994a73ab77f617dee032b6a94bad6bf2 +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda#1c33d47dcfb2f90c80c6d2213f9d65d7 +https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda#56bfd153e523d9b9d05e4cf3c1cfe01c +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda#18de09b20462742fe093ba39185d9bac +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda#5267bef8efea4127aacd1f4e1f149b6e +https://conda.anaconda.org/conda-forge/noarch/imf-reader-1.4.1-pyhcf101f3_0.conda#13049ef4ba48cc9a8919ab6bf5eb4afe +https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda#043f0599dc8aa023369deacdb5ac24eb +https://conda.anaconda.org/conda-forge/noarch/xlwt-1.3.0-py_1.tar.bz2#deb0fb0c5977e3aa33050a9c405842a4 +https://conda.anaconda.org/conda-forge/noarch/xlsx2csv-0.8.6-pyhd8ed1ab_0.conda#87d8cdffe25acbcc4c9a974c821b5cb8 +https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda#91f5637b706492b9e418da1872fd61ce +https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.2.9-pyhd8ed1ab_0.conda#fa127b9f29f64174437524d0d61432f4 +https://conda.anaconda.org/conda-forge/noarch/tableschema-to-template-0.0.13-pyhd8ed1ab_1.conda#44bbc578da0d9d6b2f511a9280984fa1 +https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py313h54dd161_1.conda#ef8c7c9f4ea478806d9056bbc9c9c093 +https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda#06ad944772941d5dae1e0d09848d8e49 +https://conda.anaconda.org/conda-forge/noarch/requests-file-3.0.1-pyhd8ed1ab_0.conda#e4dd2b09dc41cc3546a311531ca5d0e8 +https://conda.anaconda.org/conda-forge/noarch/ratelimit-2.2.1-pyhd8ed1ab_0.tar.bz2#3e8565b8c77205fc638ee40f5d2a2dba +https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda#53cb4b14ab0841e104e2bd11ee64b840 +https://conda.anaconda.org/conda-forge/noarch/pyphonetics-0.5.3-pyhd8ed1ab_1.conda#0f690c1b906722bf6652bf532e3ee8a5 +https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda#49647ac1de4d1e4b49124aedf3934e02 +https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda#df32eb56c2a48a5ca9465aef29dd46bc +https://conda.anaconda.org/conda-forge/noarch/ijson-3.4.0.post0-pyhd8ed1ab_0.conda#38823b779f206a231a6e6c6870bc2829 +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d +https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyhd8ed1ab_2.conda#cf25bfddbd3bc275f3d3f9936cee1dd3 +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda#83ea3a2ddb7a75c1b09cea582aa4f106 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda#6b6ece66ebcae2d5f326c77ef2c5a066 +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda#592132998493b3ff25fd7479396e8351 +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda#5b5203189eb668f042ac2b0826244964 +https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda#33950a076fd589a7655c6888cc3d2b34 +https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda#52be5139047efadaeeb19c6a5103f92a +https://conda.anaconda.org/conda-forge/noarch/typer-0.23.1-pyhcf101f3_0.conda#bac7249fa4302ee17e1ae0aa17991732 +https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-pyhd8ed1ab_2.conda#6c17c5b9a3f8cf44137bfca12e2574d7 +https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda#00cdd2e3ec6d3be6bc2b7d46470a10a1 +https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda#43e14f832d7551e5a8910672bfc3d8c6 +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda#23b4ba5619c4752976eb7ba1f5acb7e8 +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda#a4059bc12930bddeb41aef71537ffaed +https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda#4c2498dcda0d58cf25466e82f7287b32 +https://conda.anaconda.org/conda-forge/noarch/marko-2.2.2-pyhd8ed1ab_0.conda#3c3e9339e46fffba5920be28d9233860 +https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda#14c42a6334f38c412449f5a5e4043a5a +https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda#daddf757c3ecd6067b9af1df1f25d89e +https://conda.anaconda.org/conda-forge/noarch/frictionless-5.18.1-pyhd8ed1ab_1.conda#4b2cae54d84f734c32837175d8ed2459 +https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda#d73fdc05f10693b518f52c994d748c19 +https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda#3bc0ac31178387e8ed34094d9481bfe8 +https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda#2452e434747a6b742adc5045f2182a8e +https://conda.anaconda.org/conda-forge/noarch/hdx-python-utilities-4.0.6-pyh332efcf_0.conda#6736b5ff2394169e011a7bf926172d5c +https://conda.anaconda.org/conda-forge/noarch/hdx-python-country-4.1.1-pyh332efcf_0.conda#241ca19104e3d7e7d985a06c025c879d +https://conda.anaconda.org/conda-forge/noarch/pydeflate-2.3.4-pyhcf101f3_1.conda#02e7ccf24972a1637c0de86e08a169b3 https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda#003b8ba0a94e2f1e117d0bd46aebc901 -https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda#6b0259cea8ffa6b66b35bae0ca01c447 +https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.37.0-pyhcf101f3_1.conda#c4c4f99faba7174b3d99b79baf60697d https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda#eb52d14a901e23c39e9e7b4a1a5c015f -https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h7037e92_6.conda#1fa8d662361896873a165b051322073e +https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py313h7037e92_0.conda#cb423e0853b3dde2b3738db4dedf5ba2 https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda#8bc5851c415865334882157127e75799 https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda#381bd45fb7aa032691f3063aff47e3a1 https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda#7f3ac694319c7eaf81a0325d6405e974 -https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda#91f5637b706492b9e418da1872fd61ce -https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda#53cb4b14ab0841e104e2bd11ee64b840 https://conda.anaconda.org/conda-forge/noarch/pycountry-24.6.1-pyhd8ed1ab_0.conda#62ed8c560f1b5b8d74ed11e68e9ae223 -https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda#71bf9646cbfabf3022c8da4b6b4da737 -https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313ha4be090_3.conda#993d27015ca7aa1de3f4a471a9b5309e https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda#43dd16b113cc7b244d923b630026ff4f https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda#40182a8d62a61d147ec7d3e4c5c36ac2 -https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda#18de09b20462742fe093ba39185d9bac -https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda#5267bef8efea4127aacd1f4e1f149b6e -https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda#6e2b8dfbfd1b4e91f49fd13218db08d7 +https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda#1ada850380c9857f4e9f670775ec550a https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda#193a9e54636d8d70781a3e56370f5502 -https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.0-pyhd8ed1ab_0.conda#3c806a133fb9e59dca249c5a00c2ab3e -https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda#e9c622e0d00fa24a6292279af3ab6d06 -https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda#fa31df4d4193aabccaf09ce78a187faf -https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda#8b2613dbfd4e2bc9080b2779b53fc210 -https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda#a0a4a3035667fc34f29bfbd5c190baa6 -https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py313h843e2db_1.conda#f27c39a1906771bbe56cd26a76bf0b8b -https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c -https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda#c3946ed24acdb28db1b5d63321dbca7d -https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.28.1-pyhd8ed1ab_0.conda#917e71a753611d7b7bb79baf46273c5a -https://conda.anaconda.org/conda-forge/noarch/pandera-0.28.1-hd8ed1ab_0.conda#3236ebaa938b455d086f747f3541b57a -https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda#0aa03903d33997f3886be58abc890aef +https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.1-pyhd8ed1ab_0.conda#3770774486c8b9e822c6bf996da18a25 +https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda#e941e85e273121222580723010bd4fa2 https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhcf101f3_1.conda#e1bccffd88819e75729412799824e270 https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.3-py313h07c4f96_0.conda#82da2dcf1ea3e298f2557b50459809e0 -https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda#db038ce880f100acc74dba10302b5630 -https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda#febbab7d15033c913d53c7a2c102309d +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda#861fb6ccbc677bb9a9fb2468430b9c6a +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda#34e54f03dfea3e7a2dcf1453a85f1085 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda#665d152b9c6e78da404086088077c844 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda#ba231da7fccf9ea1e768caf5c7099b84 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda#17dcc85db3c7886650b8908b183d6876 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda#7bbe9a0cc0df0ac5f5a8ad6d6a11af2f https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda#96d57aba173e878a2089d5638016dc5e -https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda#2de7f99d6581a4a7adbff607b5c278ca +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda#e192019153591938acf7322b6459d36e https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda#b5fcc7172d22516e1f965490e65e33a4 https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda#2ccd714aa2242315acaf0a67faea780b -https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda#d3c295b50f092ab525ffe3c2aa4b7413 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda#f2ba4192d38b6cef2bb2c25029071d90 https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda#fb901ff28063514abb6046c9ec2c4a45 https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda#1c74ff8c35dcadf952a16f752ca5aa49 https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda#608e0ef8256b81d04456e8d211eee3e8 @@ -373,14 +457,14 @@ https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.6-hb03c661_0 https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-hd6090a7_1.conda#035da2e4f5770f036ff704fa17aace24 https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.46-hb03c661_0.conda#71ae752a748962161b4740eaff510258 https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.13.1-hca5e8e5_0.conda#2bca1fbb221d9c3c8e3a155784bbc2e9 -https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.328.1-h5279c79_0.conda#372a62464d47d9e966b630ffae3abe73 +https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda#31ad065eda3c2d88f8215b1289df9c89 https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda#5aa797f8787fe7a17d1b0821485b5adc https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda#7c7927b404672409d9917d49bff5f2d6 https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hd9c7081_0.conda#cae723309a49399d2949362f4ab5c9e4 https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.10-he970967_0.conda#2e5bf4f1da39c0b32778561c3c4e5878 -https://conda.anaconda.org/conda-forge/linux-64/libpq-18.1-hb80d175_3.conda#c39da2ad0e7dd600d1eb3146783b057d +https://conda.anaconda.org/conda-forge/linux-64/libpq-18.2-hb80d175_0.conda#fa63c385ddb50957d93bdb394e355be8 https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda#1a2708a460884d6861425b7f9a7bef99 -https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.3-h6548e54_0.conda#034bea55a4feef51c98e8449938e9cee +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_0.conda#b7113551db5a3e2403cdd052c66e9999 https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda#434ca7e50e40f4918ab701e3facd59a0 https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda#c8013e438185f33b13814c5c488acd5c https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda#928b8be80851f5d8ffb016f9c81dae7a @@ -388,8 +472,8 @@ https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda#c1 https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hb9d3cd8_0.conda#70e3400cbbfa03e96dcde7fc13e38c7b https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.125-hb03c661_1.conda#9314bc5a1fe7d1044dc9dfd3ef400535 https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda#d4a250da4737ee127fb1fa6452a9002e -https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.8-default_h746c552_2.conda#0ad9019bb10eda915fb0ce5f78fef13b -https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_2.conda#3c71daed530c0c26671a1b1b7010e746 +https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.8-default_h746c552_3.conda#b4277f5a09d458a0306db3147bd0171c +https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_3.conda#24a2802074d26aecfdbc9b3f1d8168d1 https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda#2cd94587f3a401ae05e03a6caf09539d https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda#c01af13bdc553d1a8fbfff6e8db075f0 https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda#49023d73832ef61042f6a237cb2687e7 @@ -398,43 +482,41 @@ https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed3 https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda#a7970cd949a077b7cb9696379d338681 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab -https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda#8f5b0b297b59e1ac160ad4beec99dbee +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda#867127763fbe935bab59815b6e0b7b5c https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda#bb6c4808bfa69d6f7f6b07e5846ced37 -https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-12.3.0-h6083320_0.conda#1ea5ed29aea252072b975a232b195146 +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-12.3.2-h6083320_0.conda#d170a70fc1d5c605fcebdf16851bd54a https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda#dbe3ec0f120af456b3477743ffd99b74 https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda#ce96f2f470d39bd96ce03945af92e280 https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.15.3-hb03c661_0.conda#dcdc58c15961dbf17a0621312b01f5cb -https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.10.1-hb82b983_4.conda#f4dfd61ec958d420bebdcefeb805d658 +https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.10.2-hb82b983_4.conda#9861c7820fdb45bc50a2ea60f4ff7952 https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda#87e6096ec6d542d1c1f8b33245fe8300 https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda#7df50d44d4a14d6c31a2c54f2cd92157 -https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.10.1-py313h85046ba_0.conda#2c5d21d466ef1ff0c0a98cfdbaf5c64b +https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.10.2-py313h85046ba_0.conda#f6161781ceb86e9f5da1b532e4c4453c https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.8-py313h78bf25f_0.conda#85bce686dd57910d533807562204e16b https://conda.anaconda.org/conda-forge/linux-64/lxml-6.0.2-py313h4a16004_2.conda#eb93cf5d79939716bc82434eb7e1af30 -https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf5-3.12.1-h966a9c2_0.conda#c7b8e4edbc3674c4b54c9daee0a8345b -https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf4-3.12.1-ha810028_0.conda#3e8adce1a37012c233a68789594e29cf -https://conda.anaconda.org/conda-forge/linux-64/libgdal-netcdf-3.12.1-ha526aae_0.conda#7985a2b9b8434e9a20f2edecc326bb1a +https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf5-3.12.2-hcaab353_1.conda#ebc9b2164b2e599d5375361e230a1540 +https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf4-3.12.2-hf70aa56_1.conda#ecf7b755370673d8d116ce45f7c8bbaa +https://conda.anaconda.org/conda-forge/linux-64/libgdal-netcdf-3.12.2-h03ef1cf_1.conda#ed2754a12c4fcc929bb39d6b6cc8729c https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.9.0-pyhd8ed1ab_0.conda#2f1ed718fcd829c184a6d4f0f2e07409 https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda#7d9daffbb8d8e0af0f769dbbcd173a54 https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda#17b43cee5cc84969529d5d0b0309b2cb -https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_0.conda#645026465469ecd4989188e1c4e24953 +https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_1.conda#28eb91468df04f655a57bcfbb35fc5c5 https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda#a587892d3c13b6621a6091be690dbca2 https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h387f397_9.conda#8035e5b54c08429354d5d64027041cad https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.1.0-py312hfb55c3c_0.conda#3399d43f564c905250c1aea268ebb935 https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda#7526d20621b53440b0aae45d4797847e https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda#f6d7aa696c67756a650e91e15e88223c https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda#e51f1e4089cad105b6cac64bd8166587 -https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda#6b6ece66ebcae2d5f326c77ef2c5a066 https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda#8a3d6d0523f66cf004e563a50d9392b3 https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda#00f5b8dafa842e0c27c1cd7296aa4875 https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda#b11e360fc4de2b0035fc8aaa74f17fd6 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda#fd312693df06da3578383232528c468d https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 -https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d -https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda#c0d0b883e97906f7524e2aac94be0e0d -https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_0.conda#b1a27250d70881943cca0dd6b4ba0956 -https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-h5f6438b_0.conda#08a03378bc5293c6f97637323802f480 -https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyhcf101f3_1.conda#cfc86ccc3b1de35d36ccaae4c50391f5 +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda#f1acf5fdefa8300de697982bcb1761c9 +https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda#7c5ebdc286220e8021bf55e6384acd67 +https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda#f11a319b9700b203aa14c295858782b6 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.0-pyhcf101f3_0.conda#b14079a39ae60ac7ad2ec3d9eab075ca https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda#7b8bace4943e0dc345fc45938826f2b8 https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda#36de09a8d3e5d5e6f4ee63af49e59706 @@ -450,13 +532,13 @@ https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1 https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551 https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda#d3549fd50d450b6d9e7dddff25dd2110 https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda#8368d58342d0825f0843dc6acdd0c483 -https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda#f56000b36f09ab7533877e695e4e8cb0 +https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyhe01879c_0.conda#31e11c30bbee1682a55627f953c6725a https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-25.1.0-py313h07c4f96_2.conda#27bbec9f2f3a15d32b60ec5734f5b41c https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda#8ac12aff0860280ee0cff7fa2cf63f3b https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda#d79a87dcfa726bcea8e61275feed6f83 https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda#e7f89ea5f7ea9401642758ff50a2d9c1 https://conda.anaconda.org/conda-forge/noarch/json5-0.13.0-pyhd8ed1ab_0.conda#8d5f66ebf832c4ce28d5c37a0e76605c -https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda#0a01c169f0ab0f91b26e77a3301fbfe4 +https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda#ea5be9abc2939c8431893b4e123a2065 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.28.0-pyhcf101f3_0.conda#a63877cb23de826b1620d3adfccc4014 https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda#62b7c96c6cd77f8173cc5cada6a9acaa https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda#598fd7d4d0de2455fb74f56063969a97 @@ -465,19 +547,19 @@ https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda#ff9efb7f7469aed3c4a8106ffa29593c https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda#9673a61a297b00016442e022d689faa6 https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda#b1b505328da7a6b246787df4b5a49fbc -https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.4.0-pyhd8ed1ab_0.conda#cba8aff819d6eec578c9994f6eb58934 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda#c3197f8c0d5b955c904616b716aca093 https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda#edb16f14d920fb3faf17f5ce582942d6 https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda#d0d408b1f18883a944376da5cf8101ea -https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda#a110716cdb11cf51482ff4000dc253d7 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.6-pyhcf101f3_0.conda#97c1ce2fffa1209e7afb432810ec6e12 https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda#a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda#bd80ba060603cc228d9d81c257093119 https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda#9ce473d1d1be1cc3810856a48b3fab32 -https://conda.anaconda.org/conda-forge/noarch/ipython-9.9.0-pyh53cf698_0.conda#8481978caa2f108e6ddbf8008a345546 -https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.18-py313h5d5ffb9_0.conda#80fd7ff9877570d12cabb5c5037dac89 +https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyh53cf698_0.conda#441ca4e203a62f7db2f29f190c02b9cf +https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.20-py313h5d5ffb9_0.conda#e94dbbec2589f3b1d821f43a4bf2ab45 https://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda#2da13f2b299d8e1995bafbbe9689a2f7 -https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.1.0-pyha191276_0.conda#c6f63cfe66adaa5650788e3106b6683a +https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyha191276_1.conda#8b267f517b81c13594ed68d646fd5dcb https://conda.anaconda.org/conda-forge/noarch/async-lru-2.1.0-pyhcf101f3_0.conda#04d2e5fba67e5a1ecec8e25d6c769004 -https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.3-pyhd8ed1ab_0.conda#106f4e36e14797b9c2abfc3849d9e92f +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.4-pyhd8ed1ab_0.conda#b555f252a0796e00ce9d8ec318196da7 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda#c85c76dc67d75619a92f51dfbce06992 https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.3-pyhcf101f3_0.conda#94a5f0cee51b6b0ffdcad0af6db0af18 https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.52-hd8ed1ab_0.conda#6d034d3a6093adbba7b24cb69c8c621e @@ -491,13 +573,13 @@ https://conda.anaconda.org/conda-forge/linux-64/jpype1-1.6.0-py313h7037e92_1.con https://conda.anaconda.org/gurobi/linux-64/gurobi-13.0.1-py313_0.conda#f0578fa832a660f5b01ec07f87fadab1 https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda#f9f81ea472684d75b9dd8d0b328cf655 https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda#79f71230c069a287efe3a8614069ddf1 -https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.4-h2b0a6b4_0.conda#c379d67c686fb83475c1a6ed41cc41ff -https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.60.0-h61e6d4b_0.conda#91e6d4d684e237fba31b9815c4b40edf +https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.5-h2b0a6b4_0.conda#e3bcef76c3ecb25823c503ce11783d85 +https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.60.2-h61e6d4b_0.conda#d62da3d560992bfa2feb611d7be813b8 https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda#88c1c66987cd52a712eea89c27104be6 https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda#4d8df0b0db060d33c9a702ada998a8fe https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.6-hecca717_0.conda#93f5d4b5c17c8540479ad65f206fea51 https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2#bbf6f174dcd3254e19a2f5d2295ce808 -https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.86.3-hf516916_0.conda#fd6acbf37b40cbe919450fa58309fbe1 +https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.86.4-hf516916_0.conda#70a09b6817c7ad694ef4543204c59c25 https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2025.1-hb03c661_0.conda#aa8d21be4b461ce612d8f5fb791decae https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_2.conda#27ac5ae872a21375d980bd4a6f99edf3 https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_2.conda#53e7cbb2beb03d69a478631e23e340e9 @@ -511,7 +593,6 @@ https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.con https://conda.anaconda.org/conda-forge/linux-64/graphviz-14.1.2-h8b86629_0.conda#341fc61cfe8efa5c72d24db56c776f44 https://conda.anaconda.org/conda-forge/linux-64/glpk-5.0-h445213a_0.tar.bz2#efc4b0c33bdf47312ad5a8a0587fa653 https://conda.anaconda.org/conda-forge/noarch/geojson-3.2.0-pyhd8ed1ab_0.conda#9f9840fb1c2e009fb0009a2f9461e64a -https://conda.anaconda.org/conda-forge/linux-64/fiona-1.10.1-py313hae45665_6.conda#5817b2e9b067dca0dc2dced6e941bbee https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-pyhd8ed1ab_5.conda#4a25cae637029c5589135903aa15b3b6 https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.2-py313h7037e92_1.conda#cd1cfde0ea3bca6c805c73ffa988b12a https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda#5498feb783ab29db6ca8845f68fa0f03 @@ -523,48 +604,9 @@ https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda#7 https://conda.anaconda.org/conda-forge/linux-64/h5py-3.15.1-nompi_py313h253c126_101.conda#5d90c98527ecc832287115d57c121062 https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda#ca7f9ba8762d3e360e47917a10e23760 https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda#cc73a9bd315659dc5307a5270f44786f -https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.34-pyhd8ed1ab_0.conda#54bcb8039fe8f63c9990afe552df4fdc +https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.51-pyhd8ed1ab_0.conda#f2350b60476eeafb5d044603a9bb0018 https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.16.0-pyhd8ed1ab_0.conda#061b5affcffeef245d60ec3007d1effd -https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.34-pyhd8ed1ab_0.conda#8461fcbfd947f60cabe4719fb3a55189 -https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda#1247168fe4a0b8912e3336bccdbf98a5 -https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.2-h19cb568_0.conda#a98b8d7cfdd20004f1bdd1a51cb22c58 -https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda#a83f6a2fdc079e643237887a37460668 -https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.12.0-h54a6638_1.conda#16c2a0e9c4a166e53632cfca4f68d020 -https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_1.conda#9e298d76f543deb06eb0f3413675e13a -https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda#1c0320794855f457dea27d35c4c71e23 -https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda#a2e30ccd49f753fd30de0d30b1569789 -https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.39.0-hdbdcf42_0.conda#bd21962ff8a9d1ce4720d42a35a4af40 -https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda#d411fc29e338efb48c5fd4576d71d881 -https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda#ff862eebdfeb2fd048ae9dc92510baca -https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.1-h3a458e0_0.conda#1d4e0d37da5f3c22ecd44033f673feba -https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-h3d7a050_0.conda#e6f12de3a9b016cea81a87db04d85ff3 -https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-h75daedc_0.conda#e88f8e816ae46c12cbe912c8f4d9d3bc -https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-hd454692_0.conda#55986e49b7aafe9aa09d7f4c70a56a18 -https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.2-h3a5f585_1.conda#4e921d9c85e6559c60215497978b3cdb -https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.12.6-hb03c661_0.conda#e36ad70a7e0b48f091ed6902f04c23b8 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.4-h8b1a151_4.conda#c7e3e08b7b1b285524ab9d74162ce40b -https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.7-h8b1a151_5.conda#68da5b56dde41e172b7b24f071c4b392 -https://conda.anaconda.org/conda-forge/linux-64/s2n-1.6.2-he8a4886_1.conda#bade189a194e66b93c03021bd36c337b -https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.9.13-h2c9d079_1.conda#3c3d02681058c3d206b562b2e3bc337f -https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.23.3-hdaf4b65_5.conda#132e8f8f40f0ffc0bbde12bb4e8dd1a1 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.1-h8b1a151_9.conda#f7ec84186dfe7a9e3a9f9e5a4d023e75 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.10.7-ha8fc4e3_5.conda#3028f20dacafc00b22b88b324c8956cc -https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.9.3-hef928c7_0.conda#bdd464b33f6540ed70845b946c11a7b8 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.11.3-h06ab39a_1.conda#3689a4290319587e3b54a4f9e68f70c8 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.13.3-hc63082f_11.conda#6a653aefdc5d83a4f959869d1759e6e3 -https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.7-h28f887f_1.conda#7b8e3f846353b75db163ad93248e5f9d -https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.35.4-h8824e59_0.conda#113b9d9913280474c0868b0e290c0326 -https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-h20b40b1_10.conda#937d1d4c233adc6eeb2ac3d6e9a73e53 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.0-h2c50142_0_cpu.conda#ef47efe8884347ab96f0d26399e83229 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.0-h8c2c5c3_0_cpu.conda#fa2c484e95ba37950f926bd797c51dc4 -https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.0-py313he109ebe_0_cpu.conda#9120bf253ebbdb0015069b9a25cf4d36 -https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda#a1cfcc585f0c42bf8d5546bb1dfb668d -https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda#8ed82d90e6b1686f5e98f8b7825a15ef -https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.0-h7376487_0_cpu.conda#be2161a27537cb288a5634daf768af00 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.0-h635bf11_0_cpu.conda#0e1d44a4759116c17c77cdead68bb2d6 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.0-h635bf11_0_cpu.conda#a373b33a7a1c9f57ef6273e886e91fe1 -https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.0-h3f74fd7_0_cpu.conda#618c4d7d323f9b3ec4fdb0b3a5e5df1d -https://conda.anaconda.org/conda-forge/linux-64/pyarrow-23.0.0-py313h78bf25f_0.conda#a6e89cb214f318db9548b791ba27f862 +https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.50-pyhd8ed1ab_0.conda#65465c189c38fc262c009faa98825cea https://conda.anaconda.org/conda-forge/noarch/arcosparse-0.4.2-pyhd8ed1ab_0.conda#9a005ba5f540619a1343587b4ee3d95e https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.3.0-pyhd8ed1ab_0.conda#9e18b048c69d2d72bc69d120a435d731 https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda#c138c7aaa6a10b5762dcd92247864aff @@ -579,9 +621,9 @@ https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda#e52c https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda#f88bb644823094f436792f80fba3207e https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda#0401a17ae845fa72c7210e206ec5647d https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py313h07c4f96_1.conda#bcca9afd203fe05d9582249ac12762da -https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.1-pyhcf101f3_1.conda#c15e359a982395be86a7576a91f9c5f5 +https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_0.conda#1eac93a6257796dd348d366a85f7f283 https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda#0b830ba4947de6d60dd9d96827a1cacb -https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.1-pyhcf101f3_0.conda#a86541105aa7920d2147d48bf370dc08 +https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_0.conda#f438bd6e7ce6b4d442789f77d3fc7818 https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda#fa9e9ec7bf26619a8edd3e11155f15d6 https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda#8422fcc9e5e172c91e99aef703b3ce65 https://conda.anaconda.org/conda-forge/linux-64/freeglut-3.2.2-ha6d2627_3.conda#84ec3f5b46f3076be49f2cf3f1cfbf02 diff --git a/envs/default_osx-64.pin.txt b/envs/default_osx-64.pin.txt index bcabdff157..04c5afde5e 100644 --- a/envs/default_osx-64.pin.txt +++ b/envs/default_osx-64.pin.txt @@ -1,41 +1,36 @@ # Generated by `pixi workspace export` # platform: osx-64 @EXPLICIT -https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.2-h11316ed_0.conda#688a0c3d57fa118b9c97bf7e471ab46c -https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.2-h11316ed_0.conda#8c55281fadb998fba0bc4fd9268b6479 -https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.2-h8df612c_0.conda#dc48d35878e8be3fc20616673955752b -https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.2-h11316ed_0.conda#21ec03957f30412305e639a93b343915 -https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.2-h8df612c_0.conda#6aceb22c49cb9c690fa7a9b700163c28 https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda#ad659d0a2b3e47e38d829aa8cad2d610 https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda#003a54a4e32b02f7355b50a837e699da -https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_3.conda#bd9f1de651dbd80b51281c694827f78f +https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.conda#6e6efb7463f8cef69dbcb4c2205bf60e https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda#ced34dd9929f491ca6dab6a2927aff25 https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda#eefd65452dfe7cce476a519bece46704 https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda#94305520c52a4aa3f6c2b1ff6008d9f8 https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda#bddacf101bb4dd0e51811cb69c7790e2 -https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.0-h230baf5_0.conda#3f50cdf9a97d0280655758b735781096 +https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.1-hb6871ef_1.conda#30bb8d08b99b9a7600d39efb3559fff0 https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.2-hb99441e_0.conda#d910105ce2b14dfb2b32e92ec7653420 -https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda#18b81186a6adb43f000ad19ed7b70381 -https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-h750e83c_0.conda#d214916b24c625bcc459b245d509f22e -https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.3-heffb93a_0.conda#222e0732a1d0780a622926265bee14ef -https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda#97c4b3bd8a90722104798175a1bdddbf -https://conda.anaconda.org/conda-forge/osx-64/python-3.13.0-h3a8ca6c_101_cp313.conda#0acea4c3eee2454fd642d1a4eafa2943 -https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 -https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda#9efbfdc37242619130ea42b1cc4ed861 +https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hf3981d6_1.conda#ec88ba8a245855935b871a7324373105 +https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.2-h11316ed_0.conda#688a0c3d57fa118b9c97bf7e471ab46c +https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda#66a0dc7464927d0853b590b6f53ba3ea +https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.4-h991f03e_0.conda#a684eb8a19b2aa68fde0267df172a1e3 +https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda#4173ac3b19ec0a4f400b4f782910368b +https://conda.anaconda.org/conda-forge/osx-64/python-3.13.12-h894a449_100_cp313.conda#99b1fa1fe8a8ab58224969f4568aadca +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda#e5ce43272193b38c2e9037446c1d9206 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda#9d64911b31d57ca443e9f1e36b04385f https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-21.1.8-h472b3d1_0.conda#e2d811e9f464dd67398b4ce1f9c7c872 https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.conda#eaac87c21aff3ed21ad9656697bb8326 -https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_15.conda#c816665789d1e47cdfd6da8a81e1af64 -https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_15.conda#c2a6149bf7f82774a0118b9efef966dd -https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_15.conda#a089323fefeeaba2ae60e1ccebf86ddc +https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_18.conda#9a5cb96e43f5c2296690186e15b3296f +https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_18.conda#ca52daf58cea766656266c8771d8be81 +https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_18.conda#34a9f67498721abcfef00178bcf4b190 https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_h6006d49_4.conda#9241a65e6e9605e4581a2a8005d7f789 https://conda.anaconda.org/conda-forge/osx-64/libblas-3.11.0-5_he492b99_openblas.conda#36d2e68a156692cbae776b75d6ca6eae https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.11.0-5_h859234e_openblas.conda#eb5b1c25d4ac30813a6ca950a58710d6 -https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h3d58e20_0.conda#9f8a60a77ecafb7966ca961c94f33bd1 +https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h4fb565c_2.conda#1ac756454e65fb3fd7bc7de599526e43 https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.11.0-5_h9b27e0a_openblas.conda#b31d771cbccff686e01a687708a7ca41 -https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.1-py313hf1665ba_0.conda#6d4a926728247bb9c32ecc788c211309 +https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.2-py313hf1665ba_1.conda#cff600662a8355987c574be24d68998b https://conda.anaconda.org/conda-forge/osx-64/scipy-1.17.0-py313h2bd7e7a_1.conda#076afc646e5b800ab4adece0310795db -https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda#cb72cedd94dd923c6a9405a3d3b1c018 +https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda#1d00d46c634177fc8ede8b99d6089239 https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda#615de2a4d97af50c350e5cf160149e77 https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.8.0-np2py313he2891f2_1.conda#f650ee53b81fcb9ab2d9433f071c6682 https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda#fd5062942bfa1b0bd5e0d2a4397b099e @@ -46,15 +41,14 @@ https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda#3339 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda#5b8d21249ff20967101ffa321cab24e8 https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.3-py313h2f264a9_1.conda#edd7a9cfba45ab3073b594ec999a24fe https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda#a2c1eeadae7a309daed9d62c96012a2b -https://conda.anaconda.org/conda-forge/osx-64/highspy-1.12.0-np2py313h77a8fbf_0.conda#ece793b4a6623b379969ac2277b7824f -https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.9-pyhd8ed1ab_0.conda#2b661fd7a718757b2e91bbcac81deb48 -https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda#5d99943f2ae3cc69e1ada12ce9d4d701 +https://conda.anaconda.org/conda-forge/osx-64/highspy-1.13.1-np2py313h1160f3e_0.conda#3be5b5663b508472633564403c8d5f6a +https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.1-pyhd8ed1ab_0.conda#ed5f5e0cbc50f05631813b0d48021de1 https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda#727109b184d680772e3122f40136d5ca https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda#12c566707c80111f9799308d9e265aef https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py313hf57695f_1.conda#b10f64f2e725afc9bf2d9b30eff6d0ea https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.25.0-py313hcb05632_1.conda#da657125cfc67fe18e4499cf88dbe512 https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda#0caa1af407ecff61170c9437a808404d -https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.2-pyhd8ed1ab_0.conda#bdb8608d3b834159b1b684dc6df3ac44 +https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.3-pyhd8ed1ab_0.conda#c97b99b1f4f76708edbe7b5811d95da9 https://conda.anaconda.org/conda-forge/osx-64/wrapt-1.17.3-py313h585f44e_1.conda#765dc9b39fc2d62e1351c3a26e316607 https://conda.anaconda.org/conda-forge/noarch/throttler-1.2.2-pyhd8ed1ab_0.conda#6fc48bef3b400c82abaee323a9d4e290 https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda#58335b26c38bf4a20f399384c33cbcf9 @@ -74,22 +68,22 @@ https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda#53abe https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda#a22d1fd9bf98827e280a02875d9a007a https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda#eacc711330cd46939f66cd401ff9c44b https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda#c65df89a0b2e321045a9e01d1337b182 -https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda#84c5c40ea7c5bbc6243556e5daed20e7 -https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.3-py313h36c3d76_1.conda#b168b30831ed35aeedf36adc4c148c1c +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda#f9517d2fe1501919d7a236aba73409bb +https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.5-py313h6e3882f_0.conda#071bcb7607cc391596db9b193a1f5014 https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda#42834439227a4551b939beeeb8a4b085 https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.3.1-pyhd8ed1ab_0.conda#d4f3f31ee39db3efecb96c0728d4bdbf https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda#a55b220de8970208f583e38639cfbecc https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-http-0.3.0-pyhdfd78af_0.tar.bz2#269943ac6637718947763b4f989710fc -https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda#1bd2e65c8c7ef24f4639ae6e850dacc2 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda#4fefefb892ce9cc1539405bec2f1a6cd https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda#03fe290994c5e4ec17293cfb6bdce520 https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.conda#b8993c19b0c32a2f7b66cbb58ca27069 https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda#8e662bd460bda79b1ea39194e3c4c9ab https://conda.anaconda.org/conda-forge/noarch/anyio-4.12.1-pyhcf101f3_0.conda#11a2b8c732d215d977998ccd69a9d5e8 https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda#4f14640d58e2cc0aa0819d9d8ba125bb https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda#d6989ead454181f4f9bc987d3dc4e285 -https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.2.1-pyhdfd78af_0.conda#f50f82ac51409fd0dc75a20a9f6930ea +https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.3-pyhdfd78af_0.conda#15fe83cb157467c0c85c375f56abf199 https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda#a645bb90997d3fc2aea0adf6517059bd -https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h0f4d31d_0.conda#e0c9e257970870212c449106964a5ace +https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h7c6a591_1.conda#0eaf6cf9939bb465ee62b17d04254f9e https://conda.anaconda.org/conda-forge/noarch/dpath-2.2.0-pyha770c72_1.conda#7b2af124684a994217e62c641bca2e48 https://conda.anaconda.org/conda-forge/noarch/yte-1.9.4-pyhd8ed1ab_0.conda#89d5edf5d52d3bc1ed4d7d3feef508ba https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhcf101f3_3.conda#de98449f11d48d4b52eefb354e2bfe35 @@ -108,7 +102,7 @@ https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda#d6bd3cd217e62bbd7efe67ff224cd667 https://conda.anaconda.org/conda-forge/noarch/amply-0.1.6-pyhd8ed1ab_1.conda#5a81866192811f3a0827f5f93e589f02 https://conda.anaconda.org/conda-forge/osx-64/pulp-2.8.0-py313hf4b1061_3.conda#bb6ed2f0cb9f2053b9364ced73491e5d -https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.1-py313h16366db_0.conda#f68fdb0d312980f39abaf084b6747b67 +https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.2-py313h16366db_0.conda#c8185e1891ace76e565b4c28dd50ed5d https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda#019a7385be9af33791c989871317e1ed https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda#23029aae904a2ba587daba708208012f https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda#b38fe4e78ee75def7e599843ef4c1ab0 @@ -128,14 +122,12 @@ https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.cond https://conda.anaconda.org/conda-forge/noarch/connection_pool-0.0.3-pyhd3deb0d_0.tar.bz2#e270fff08907db8691c02a0eda8d38ae https://conda.anaconda.org/conda-forge/noarch/conda-inject-1.3.2-pyhd8ed1ab_0.conda#e52c2a160d6bd0649c9fafdf0c813357 https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda#f4e90937bbfc3a4a92539545a37bb448 -https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.15.0-pyhdfd78af_0.conda#71856e8d31fc4396cb4b3b57c9e7fb83 +https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.16.3-pyhdfd78af_0.conda#d5ff394122607ae4b0ee8362f6225959 https://conda.anaconda.org/bioconda/noarch/snakemake-logger-plugin-pypsa-0.1.0-pyhdfd78af_0.conda#1a318ca1376d0cd58aa85e3857b08520 https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.4.0-pyhdfd78af_0.conda#7d4f2bf739967798eb4d8c02d59cf36c -https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.1.0-pyhdfd78af_0.conda#01e79189d86f278322d0807f7d1dbada +https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.2.0-pyhdfd78af_0.conda#4ed1b626504a1b8e9460ccc930d1310e https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-cluster-generic-1.0.9-pyhdfd78af_0.tar.bz2#9b1db7127119f513696d620eefe7bf67 -https://conda.anaconda.org/conda-forge/osx-64/ruff-0.14.14-hb17bafe_0.conda#6b6dc1740a886262528179674fa132d8 -https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.15-py313h16366db_1.conda#846c1dd713142a49a08e917a92343f51 -https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda#06ad944772941d5dae1e0d09848d8e49 +https://conda.anaconda.org/conda-forge/osx-64/ruff-0.15.1-h5930b28_0.conda#112d2a215c854f637ace6b313a078e14 https://conda.anaconda.org/conda-forge/noarch/xarray-2025.6.1-pyhd8ed1ab_1.conda#145c6f2ac90174d9ad1a2a51b9d7c1dd https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda#9aa358575bbd4be126eaa5e0039f835c https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.51.2-h5af3ad2_0.conda#9eef7504045dd9eb1be950b2f934d542 @@ -149,9 +141,9 @@ https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda#899db7 https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.6-hb5e19a0_0.conda#fc9a153c57c9f070bebaa7eef30a8f17 https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.67.0-h3338091_0.conda#e7630cef881b1174d40f3e69a883e55f https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda#1f4ed31220402fcddc083b4bff406868 -https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda#d4765c524b1d91567886bde656fb514b -https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.18.0-h9348e2b_0.conda#de1910529f64ba4a9ac9005e0be78601 -https://conda.anaconda.org/conda-forge/osx-64/proj-9.7.1-h4aacef1_2.conda#2deeb48139ea69c6000e5f26296195fc +https://conda.anaconda.org/conda-forge/osx-64/krb5-1.22.2-h207b36a_0.conda#e66e2c52d2fdddcf314ad750fb4ebb4a +https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.18.0-h9a2545f_1.conda#a6c0494188638d4bfe767f195619bb93 +https://conda.anaconda.org/conda-forge/osx-64/proj-9.7.1-h4aacef1_3.conda#86a72148f2ace31569279a41c903f1be https://conda.anaconda.org/conda-forge/osx-64/icu-78.2-h14c5de8_0.conda#30334add4de016489b731c6662511684 https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.3.0-ha8d0d41_1.conda#21338f14e1226ca108452b770e770455 https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.47-h13923f0_0.conda#08f970fb2b75f5be27678e077ebedd46 @@ -167,49 +159,51 @@ https://conda.anaconda.org/conda-forge/osx-64/librttopo-1.1.0-h16cd5d8_20.conda# https://conda.anaconda.org/conda-forge/osx-64/minizip-4.0.10-hfb7a1ec_0.conda#412fd08e5bf0e03fdce24dea0560fa26 https://conda.anaconda.org/conda-forge/osx-64/freexl-2.0.0-h3183152_2.conda#5cb34c1d2ed89fd36f4e3759c966daf0 https://conda.anaconda.org/conda-forge/osx-64/libspatialite-5.1.0-gpl_hb921464_119.conda#14067124e9dd23b72cd78d68d78fac03 -https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.54-h07817ec_0.conda#3d43dcdfcc3971939c80f855cf2df235 +https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.55-h07817ec_0.conda#4fc7ed44d55aaf1d72b8fbc18774b90c https://conda.anaconda.org/conda-forge/osx-64/uriparser-0.9.8-h6aefe2f_0.conda#649890a63cc818b24fbbf0572db221a5 https://conda.anaconda.org/conda-forge/osx-64/libkml-1.3.0-h450b6c2_1022.conda#ec47f97e9a3cdfb729e1b1173d80ed0f https://conda.anaconda.org/conda-forge/osx-64/libhwy-1.3.0-hab838a1_1.conda#bb8ff4fec8150927a54139af07ef8069 https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.2.0-h8616949_1.conda#f157c098841474579569c85a60ece586 https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.2.0-h8616949_1.conda#12a58fd3fc285ce20cf20edf21a0ff8f https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.2.0-h8616949_1.conda#63186ac7a8a24b3528b4b14f21c03f54 -https://conda.anaconda.org/conda-forge/osx-64/libjxl-0.11.1-hde0fb83_8.conda#5e478d37b1027d73872f7c8d579dc314 +https://conda.anaconda.org/conda-forge/osx-64/libjxl-0.11.2-hde0fb83_0.conda#fb86ff643e4f58119644c0c8d0b1d785 https://conda.anaconda.org/conda-forge/osx-64/lzo-2.10-h4132b18_1002.conda#5a047b9aa4be1dcdb62bd561d9eb6ceb https://conda.anaconda.org/conda-forge/osx-64/libarchive-3.8.5-gpl_h264331f_100.conda#bfb9152520db0958801b3c87846c942b https://conda.anaconda.org/conda-forge/osx-64/json-c-0.18-hc62ec3d_0.conda#2c5a3c42de607dda0cfa0edd541fd279 https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.2-h10d778d_0.conda#03e8c9b4d3da5f3d6eabdd020c2d63ac https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.2-h01f5ddf_1.conda#2e993292ec18af5cd480932d448598cf https://conda.anaconda.org/conda-forge/osx-64/blosc-1.21.6-hd145fbb_1.conda#717852102c68a082992ce13a53403f9d -https://conda.anaconda.org/conda-forge/osx-64/libgdal-core-3.12.1-hc010f1d_0.conda#5fedeef42dca8c3bba696092097d3d73 +https://conda.anaconda.org/conda-forge/osx-64/libgdal-core-3.12.2-hbf8631d_1.conda#c0f41c8a932df0fcdb8f2bfe0bb124db https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda#f22f4d4970e09d68a10b922cbb0408d3 https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_2.conda#55c7804f428719241a90b152016085a1 https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda#e9b05deb91c013e5224672a4ba9cf8d1 https://conda.anaconda.org/conda-forge/noarch/affine-2.4.0-pyhd8ed1ab_1.conda#8c4061f499edec6b8ac7000f6d586829 https://conda.anaconda.org/conda-forge/osx-64/rasterio-1.5.0-py313hab02871_0.conda#96f545a73a43939c31c9540b89d3bdee https://conda.anaconda.org/conda-forge/osx-64/pyproj-3.7.2-py313hc0f1baa_2.conda#c575fef0091ba29a58fc600e52fa675d -https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_1.conda#e7e37bf890147fa5d7892812a6dd3888 +https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.21.0-pyhcf101f3_1.conda#a0811eb1142b4da29162d1931922a1ec +https://conda.anaconda.org/conda-forge/osx-64/simplejson-3.20.2-py313hf050af9_1.conda#099e12ab59f12207a460dbb029f46a8b +https://conda.anaconda.org/conda-forge/osx-64/shapely-2.1.2-py313h210a477_2.conda#1aa318a8d24b42383ceb2ac8f5ea7d5a +https://conda.anaconda.org/conda-forge/osx-64/fiona-1.10.1-py313ha55c4c1_6.conda#b7268b3d9fcfd219f88e8db709a0e4d8 +https://conda.anaconda.org/conda-forge/noarch/rasterstats-0.20.0-pyhd8ed1ab_2.conda#a6762dbfc4cf7084adf09f0accdf0f8a https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2#0c14e44bc93a99cdc11398311c3c0dcf https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda#083725d6cd3dc007f06d04bcf1e613a2 https://conda.anaconda.org/conda-forge/osx-64/libhwloc-2.12.2-default_h273dbb7_1000.conda#56aaf4b7cc4c24e30cecc185bb08668d https://conda.anaconda.org/conda-forge/osx-64/tbb-2022.3.0-h06b67a2_2.conda#e048347a60763f60ada3c5fac23dfb60 https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda#427101d13f19c4974552a4e5b072eef1 https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda#d511e58aaaabfc23136880d9956fa7a6 -https://conda.anaconda.org/conda-forge/osx-64/mumps-include-5.8.1-hc797fd9_4.conda#b90d807d81535f092a947c3ff5cbe1c7 +https://conda.anaconda.org/conda-forge/osx-64/mumps-include-5.8.2-h6a5cfba_1.conda#9ac39cac626d18c6c170680d98b4a15b https://conda.anaconda.org/conda-forge/osx-64/metis-5.1.0-h3023b02_1007.conda#4e4566c484361d6a92478f57db53fb08 -https://conda.anaconda.org/conda-forge/osx-64/libscotch-7.0.10-int64_h5eb5a6d_2.conda#0488564246090e18a1b4a03d4aef4ef1 -https://conda.anaconda.org/conda-forge/osx-64/mumps-seq-5.8.1-h28c60b8_4.conda#850ce119e9a44014e6c515d871b92573 +https://conda.anaconda.org/conda-forge/osx-64/libscotch-7.0.11-int64_h80fc1e8_0.conda#dc72637c55980d4cd9dc6365f8a04666 +https://conda.anaconda.org/conda-forge/osx-64/mumps-seq-5.8.2-h45e9145_1.conda#3f7f632b2793f714c670116ac50dc7a6 https://conda.anaconda.org/conda-forge/osx-64/ampl-asl-1.0.0-h240833e_2.conda#6b685000856e0cfdb468b8d87b51f6f0 -https://conda.anaconda.org/conda-forge/osx-64/ipopt-3.14.19-h69634d0_1.conda#ff8e5c98773bb34d5e2d8852833b66d5 -https://conda.anaconda.org/conda-forge/osx-64/cppad-20250000.2-h240833e_0.conda#1fe56be138b3589057477e7afafa9790 -https://conda.anaconda.org/conda-forge/osx-64/scip-9.2.4-h078ad67_2.conda#97098345065e603c92930e0656bf65b8 -https://conda.anaconda.org/conda-forge/osx-64/pyscipopt-5.6.0-py313h253db18_1.conda#2d044979b5df448a30062150672d7c0b +https://conda.anaconda.org/conda-forge/osx-64/ipopt-3.14.19-h97b3f9f_2.conda#89cad9af206d489b89a08b16648882b8 +https://conda.anaconda.org/conda-forge/osx-64/scip-10.0.1-h025d0e4_0.conda#7f75df249536462ad3a52fbcf0595267 +https://conda.anaconda.org/conda-forge/osx-64/pyscipopt-6.1.0-np2py313h1160f3e_0.conda#accf71d44206ba6c599b120730a79c77 https://conda.anaconda.org/conda-forge/noarch/validators-0.35.0-pyhd8ed1ab_0.conda#3449ef730c7d483adde81993994092b9 -https://conda.anaconda.org/conda-forge/osx-64/shapely-2.1.2-py313h210a477_2.conda#1aa318a8d24b42383ceb2ac8f5ea7d5a https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda#8678577a52161cc4e1c93fcc18e8a646 https://conda.anaconda.org/conda-forge/osx-64/statsmodels-0.14.6-py313h0f4b8c3_0.conda#c4a63959628293c523d6c4276049e1e9 https://conda.anaconda.org/conda-forge/osx-64/qhull-2020.2-h3c5361c_5.conda#dd1ea9ff27c93db7c01a7b7656bd4ad4 -https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.2-h8bce59a_1.conda#cdd69480d52f2b871fad1a91324d9942 +https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.3-h8bce59a_1.conda#b3ecb6480fd46194e3f7dd0ff4445dff https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.4-h87e8dc5_0.conda#a67d3517ebbf615b91ef9fdc99934e0c https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h8616949_1.conda#435446d9d7db8e094d2c989766cfb146 https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h8616949_1.conda#47f1b8b4a76ebd0cd22bd7153e54a4dc @@ -218,7 +212,7 @@ https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda#bbe https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.1-h6912278_0.conda#dfbdc8fd781dc3111541e4234c19fdbd https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.14.1-h694c41f_0.conda#e0e2edaf5e0c71b843e25a7ecc451cc9 https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.18-h90db99b_0.conda#753acc10c7277f953f168890e5397c80 -https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.0-py313h16bb925_0.conda#bc8c5b5215ba393b44040e5cdb4b4a58 +https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.1-py313h16bb925_0.conda#48512b2603412e99b702dd177f991ffd https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.9-py313ha1c5e85_2.conda#cadc416f7c960ce1436bb6cc8a0f75e4 https://conda.anaconda.org/conda-forge/osx-64/freetype-2.14.1-h694c41f_0.conda#ca641fdf8b7803f4b7212b6d66375930 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda#37293a85a0f4f77bbd9cf7aaefc62609 @@ -234,26 +228,25 @@ https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_ https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_1.conda#46830ee16925d5ed250850503b5dc3a8 https://conda.anaconda.org/conda-forge/osx-64/numexpr-2.14.1-py313h821d116_1.conda#a727872d1a11ac14dae71862b09ac6c6 https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.5-he7c3a48_0.conda#975f98248cde8d54884c6d1eb5184e13 -https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.6-nompi_h4b07496_105.conda#bb19aadbe30c465c18c77678ac2eae09 -https://conda.anaconda.org/conda-forge/osx-64/c-blosc2-2.22.0-hedb7e5f_1.conda#13038523111830630683530ea54eb503 -https://conda.anaconda.org/conda-forge/osx-64/pytables-3.10.2-py313hbe64c67_10.conda#4e9b9b6890d2f971b043975b82b9b15f +https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.6-nompi_hf563b80_106.conda#b74e900265ad3808337cd542cfad6733 +https://conda.anaconda.org/conda-forge/osx-64/c-blosc2-2.23.0-h548f922_0.conda#6c3e0b3532d30e1c80d2dc9901eff55f +https://conda.anaconda.org/conda-forge/osx-64/pytables-3.10.2-py313h7d7b887_11.conda#1a71b440166584a1ff43a8d9d9914403 https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda#4b13d1d2d5cba37be9fa3c0922bbf995 -https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda#37926bb0db8b04b8b99945076e1442d0 +https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda#648a62e4e4cf1605abf73e7f48b87d5e https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda#7702bcd70891dd0154d765a69e1afa94 https://conda.anaconda.org/conda-forge/osx-64/libzip-1.11.2-h31df5bb_0.conda#3cf12c97a18312c9243a895580bf5be6 https://conda.anaconda.org/conda-forge/osx-64/hdf4-4.2.15-h8138101_7.conda#7ce543bf38dbfae0de9af112ee178af2 -https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.3-nompi_habf9e57_103.conda#0c48ab0a8d7c3af9f592d33c3d99f7d6 +https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.3-nompi_h29b767a_104.conda#6515420f8cc50150e846b779ad1b3f8b https://conda.anaconda.org/conda-forge/osx-64/cftime-1.6.5-py313hceb611b_1.conda#089a4c77defcfd3f240391864da647c9 https://conda.anaconda.org/conda-forge/osx-64/netcdf4-1.7.3-nompi_py313hc346fa9_100.conda#b90b19c0e4c9395006e4cde35ea3104a https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda#c07a6153f8306e45794774cf9b13bd32 -https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda#5bf347916a543bcb290c780fa449bf73 -https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.conda#d1461b2e63b1909f4f5b41c823bd90ae +https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda#9a4b8a37303b933b847c14a310f0557b +https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.12-h4df99d1_100.conda#3d92938d5b83c49162ade038aab58a59 https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda#aaa2a381ccc56eac91d63b6c1240312f -https://conda.anaconda.org/conda-forge/osx-64/polars-runtime-32-1.37.1-py310had17480_0.conda#75e808381cab0c33008317fd25ba8157 -https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda#1894d4373da653406c91e20ef89f05c8 +https://conda.anaconda.org/conda-forge/osx-64/polars-runtime-32-1.38.1-py310had17480_0.conda#b6c51fadf12a1ca2835f131982b5db14 +https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda#b20de145c676cbae6138ac478cdb137b https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250512.1-cxx17_hfc00f1c_0.conda#ddf1acaed2276c7eb9d3c76b49699a11 https://conda.anaconda.org/conda-forge/osx-64/protobuf-6.31.1-py313hc85ccdc_2.conda#be212a91c302314032626a0efaeec1fb -https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyh742d864_0.conda#9d2a54ab80a5cc8138b8adb1e146ac20 https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2#23d6d5a69918a438355d7cbc4c3d54c9 https://conda.anaconda.org/conda-forge/osx-64/google-crc32c-1.8.0-py313h49a2f01_1.conda#623c30b99d3d699f052ee20bd5ba4ec2 https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda#ba7f04ba62be69f9c9fef0c4487c210b @@ -276,21 +269,21 @@ https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.7.0-py313haf29b43_0.c https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda#421a865222cd0c9d83ff08bc78bf3a61 https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda#18fd895e0e775622906cdabfc3cf0fb4 https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.13.3-py313h537e735_0.conda#0f682d864876fd75783e384e923cb4fc -https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda#fa0d1dbb4ae73ca3636fe64ed0632a42 -https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda#1099a038989e7f4037d3ce21e8ee9f2c +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda#6e643ba74997c8dddbaa98fc2fc3481b +https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda#c9b8e02d974817913ab94dae12c7340b https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda#7fd8158ff94ccf28a2ac1f534989d698 https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda#48fcccc0b579087018df0afc332b8bd6 -https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda#d05f7e8724ceb2a77edf3e39cc7760bb +https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda#71aa090f8647c9b9efa63994eaa0dc18 https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar.bz2#7b6747d7cc2076341029cff659669e8b https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda#30cd29cb87d819caead4d55184c1d115 https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda#63ccfdc3a3ce25b027b8767eb722fca8 -https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda#1daaf94a304a27ba3446a306235a37ea +https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda#496c6c9411a6284addf55c898d6ed8d7 https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda#61b8078a0905b12529abc622406cb62c -https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.1-pyhcf101f3_1.conda#91e3b2a0d014ac032c066a2e18051686 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.2-pyhcf101f3_0.conda#b20e7ce9afd59036ab194f3d1e27edf5 https://conda.anaconda.org/conda-forge/osx-64/bottleneck-1.6.0-np2py313h4e95564_3.conda#52faf3059c06b78a940058456c5f09f9 -https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.1-pyhcf101f3_0.conda#8f46def45efc90f7462e476e3fdb3de0 +https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.3-pyhcf101f3_1.conda#98fd08c0fc8a9c55c463533c8cface53 https://conda.anaconda.org/conda-forge/osx-64/rapidfuzz-3.14.3-py313hc4a83b5_1.conda#a040860b2ea97a692802271520f07865 https://conda.anaconda.org/conda-forge/osx-64/levenshtein-0.27.3-py313hc4a83b5_0.conda#75a7b2bc9fcc308493f0ce8d7f1249bf https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda#16933322051fa260285f1a44aae91dd6 @@ -300,76 +293,161 @@ https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.2-pyha770c72_0. https://conda.anaconda.org/conda-forge/noarch/branca-0.8.2-pyhd8ed1ab_0.conda#1fcdf88e7a8c296d3df8409bf0690db4 https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda#a6997a7dcd6673c0692c61dfeaea14ab https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda#3b9d40bef27d094e48bb1a821e86a252 -https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.7-pyhd8ed1ab_0.conda#e451a3c0ab3ad6fbe7bf83c59f0e2f9b +https://conda.anaconda.org/conda-forge/noarch/pypsa-1.1.0-pyhd8ed1ab_0.conda#d5c919eb3a7124b47dff09883443aed2 https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.14.0-pyha770c72_0.conda#385dca77a8b0ec6fa9b92cb62d09b43b https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda#72e780e9aa2d0a3295f59b1874e3768b https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda#827064ddfe0de2917fb29f1da4f8f533 https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda#55a61979242077b2cc377c74326ea9f0 https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda#080a808fce955026bf82107d955d32da -https://conda.anaconda.org/conda-forge/osx-64/astroid-4.0.3-py313habf4b1d_0.conda#26663e9d0c9b80a69ab380b0918c3940 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 +https://conda.anaconda.org/conda-forge/osx-64/astroid-4.0.4-py313habf4b1d_0.conda#f381d9a8e5ff1d26e8914e8b41ca311c https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.4-pyhcf101f3_0.conda#3a830511a81b99b67a1206a9d29b44b3 -https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda#2cfaaccf085c133a477f0a7a8657afe9 +https://conda.anaconda.org/conda-forge/noarch/wbgapi-1.0.12-pyhd8ed1ab_0.tar.bz2#a2e1ba950c0ec23e3ea0b915743a37e0 +https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.3-hc282952_0.conda#2c49b6f6ec9a510bbb75ecbd2a572697 +https://conda.anaconda.org/conda-forge/osx-64/prometheus-cpp-1.3.0-h7802330_0.conda#f36107fa2557e63421a46676371c4226 +https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.12.0-h06076ce_1.conda#97d7a1cda5546cb0bbdefa3777cb9897 +https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-headers-1.21.0-h694c41f_1.conda#62636543478d53b28c1fc5efce346622 +https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-1.21.0-h7d3f41d_1.conda#952dd64cff4a72cadf5e81572a7a81c8 +https://conda.anaconda.org/conda-forge/osx-64/orc-2.2.2-h3073fbf_0.conda#7323bc020618321c05afaf23f78460c0 +https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.39.0-hed66dea_0.conda#06564befaabd2760dfa742e47074bad2 +https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.39.0-h8ac052b_0.conda#7600fb1377c8eb5a161e4a2520933daa +https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hac325c4_1005.conda#a26de8814083a6971f14f9c8c3cb36c2 +https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.conda#06cf91665775b0da395229cd4331b27d +https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.2-h87f1c7e_0.conda#24997c4c96d1875956abd9ce37f262eb +https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.12.0-h7373072_1.conda#743d031253118e250b26f32809910191 +https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.16.0-h9b4319f_1.conda#2d5fe7cce366e8b01d4b45985c131fb8 +https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.14.0-he1781d6_1.conda#cd3513aad4fac4078622d18538244fdc +https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.13.3-h1135191_1.conda#14d2491d2dfcbb127fa0ff6219704ab5 +https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.12.6-h8616949_0.conda#c7f2d588a6d50d170b343f3ae0b72e62 +https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.2.4-h901532c_4.conda#b384fb05730f549a55cdb13c484861eb +https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.2.7-h901532c_5.conda#cccf553ce36da9ae739206b69c1a4d28 +https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.9.13-hea39f9f_1.conda#cbf7be9e03e8b5e38ec60b6dbdf3a649 +https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.23.3-hf559bb5_5.conda#d9cc056da3a1ee0a2da750d10a5496f3 +https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.3.1-h901532c_9.conda#abb79371a321d47da8f7ddca128533de +https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.10.7-h924c446_5.conda#acff093ebb711857fb78fae3b656631c +https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.9.3-hdff831d_0.conda#a04fb222805ce5697065036ae1676436 +https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.11.3-he30762a_1.conda#33c653401dc7b016b0011cb4d16de458 +https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.13.3-ha72ff4e_11.conda#96f22c912f1cf3493d9113b9fd04c912 +https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.5.7-ha05da6a_1.conda#e0d71662f35b21fb993484238b4861d9 +https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.35.4-h7484968_0.conda#31db311b3005b16ff340796e424a6b3c +https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.606-h386ebac_10.conda#768c6b78e331a2938af208e062fd6702 +https://conda.anaconda.org/conda-forge/osx-64/libarrow-23.0.0-h72f758e_2_cpu.conda#0ca5462ee03e2b8e7a506b1b4a0926ce +https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-23.0.0-hc26cc94_2_cpu.conda#278d25b7f2903d53483b0a11dc26dec0 +https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-23.0.0-py313h83f9c1b_0_cpu.conda#79cb6380e69848540ca3f42460900880 +https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda#e38e467e577bd193a7d5de7c2c540b04 +https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.22.0-h687e942_1.conda#69251ed374b31a5664bf5ba58626f3b7 +https://conda.anaconda.org/conda-forge/osx-64/libparquet-23.0.0-ha0d2768_2_cpu.conda#174b6059fc1102dbe2a784d732e919b4 +https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-23.0.0-h9737151_2_cpu.conda#df07a0e8ed601a2f272ab0f17f0c25b5 +https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-23.0.0-h9737151_2_cpu.conda#49a5fb4fbf3e0aa6e234ca9c4ee03594 +https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-23.0.0-h7f2e36e_2_cpu.conda#8196497a3bc332336078391692ede27b +https://conda.anaconda.org/conda-forge/osx-64/pyarrow-23.0.0-py313habf4b1d_0.conda#5a1b0ff8d04d3343edda66e26425523a +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda#e9c622e0d00fa24a6292279af3ab6d06 +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda#fa31df4d4193aabccaf09ce78a187faf +https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.0-pyhd8ed1ab_0.conda#b514a7bd078dcb4520a1aea4d14c5a3a +https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda#a0a4a3035667fc34f29bfbd5c190baa6 +https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.5-py313hcc225dc_1.conda#e12491c39d2ea259771ce4d80a91817f +https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c +https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda#c3946ed24acdb28db1b5d63321dbca7d +https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.29.0-pyhd8ed1ab_0.conda#36208e1c5c12f2aab4a312eff144713c +https://conda.anaconda.org/conda-forge/noarch/pandera-0.29.0-hd8ed1ab_0.conda#11a5b7d9a1d1759dedfc6cf05c37d66a +https://conda.anaconda.org/conda-forge/noarch/url-normalize-2.2.1-pyhd8ed1ab_0.conda#5db19244300bf33e9471a0b13f9b94cb +https://conda.anaconda.org/conda-forge/osx-64/ujson-5.11.0-py313h03db916_1.conda#9e01b71fd0f9308e5a079076659528c6 +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda#7ac5f795c15f288984e32add616cdc59 +https://conda.anaconda.org/conda-forge/noarch/cattrs-25.3.0-pyhd8ed1ab_0.conda#e78e411a2d5a999f2b1536f6c9481801 +https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.3.0-pyhd8ed1ab_0.conda#c992772513a6f9d329aaedca8736c173 +https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda#71bf9646cbfabf3022c8da4b6b4da737 +https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hc34da29_3.conda#a0ee9f9b49a5bb1bae9513db7bb86595 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.2-pyhd8ed1ab_0.conda#4c222e160d3ef895d83a1b813310dbce +https://conda.anaconda.org/conda-forge/noarch/oda-reader-1.4.2-pyhcf101f3_0.conda#994a73ab77f617dee032b6a94bad6bf2 +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda#1c33d47dcfb2f90c80c6d2213f9d65d7 +https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda#56bfd153e523d9b9d05e4cf3c1cfe01c +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda#18de09b20462742fe093ba39185d9bac +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda#5267bef8efea4127aacd1f4e1f149b6e +https://conda.anaconda.org/conda-forge/noarch/imf-reader-1.4.1-pyhcf101f3_0.conda#13049ef4ba48cc9a8919ab6bf5eb4afe +https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda#043f0599dc8aa023369deacdb5ac24eb +https://conda.anaconda.org/conda-forge/noarch/xlwt-1.3.0-py_1.tar.bz2#deb0fb0c5977e3aa33050a9c405842a4 +https://conda.anaconda.org/conda-forge/noarch/xlsx2csv-0.8.6-pyhd8ed1ab_0.conda#87d8cdffe25acbcc4c9a974c821b5cb8 +https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda#91f5637b706492b9e418da1872fd61ce +https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.2.9-pyhd8ed1ab_0.conda#fa127b9f29f64174437524d0d61432f4 +https://conda.anaconda.org/conda-forge/noarch/tableschema-to-template-0.0.13-pyhd8ed1ab_1.conda#44bbc578da0d9d6b2f511a9280984fa1 +https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.15-py313h16366db_1.conda#846c1dd713142a49a08e917a92343f51 +https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda#06ad944772941d5dae1e0d09848d8e49 +https://conda.anaconda.org/conda-forge/noarch/requests-file-3.0.1-pyhd8ed1ab_0.conda#e4dd2b09dc41cc3546a311531ca5d0e8 +https://conda.anaconda.org/conda-forge/noarch/ratelimit-2.2.1-pyhd8ed1ab_0.tar.bz2#3e8565b8c77205fc638ee40f5d2a2dba +https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda#53cb4b14ab0841e104e2bd11ee64b840 +https://conda.anaconda.org/conda-forge/noarch/pyphonetics-0.5.3-pyhd8ed1ab_1.conda#0f690c1b906722bf6652bf532e3ee8a5 +https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda#49647ac1de4d1e4b49124aedf3934e02 +https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda#df32eb56c2a48a5ca9465aef29dd46bc +https://conda.anaconda.org/conda-forge/noarch/ijson-3.4.0.post0-pyhd8ed1ab_0.conda#38823b779f206a231a6e6c6870bc2829 +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d +https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyhd8ed1ab_2.conda#cf25bfddbd3bc275f3d3f9936cee1dd3 +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda#83ea3a2ddb7a75c1b09cea582aa4f106 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda#6b6ece66ebcae2d5f326c77ef2c5a066 +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda#592132998493b3ff25fd7479396e8351 +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda#5b5203189eb668f042ac2b0826244964 +https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda#33950a076fd589a7655c6888cc3d2b34 +https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda#52be5139047efadaeeb19c6a5103f92a +https://conda.anaconda.org/conda-forge/noarch/typer-0.23.1-pyhcf101f3_0.conda#bac7249fa4302ee17e1ae0aa17991732 +https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-pyhd8ed1ab_2.conda#6c17c5b9a3f8cf44137bfca12e2574d7 +https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda#00cdd2e3ec6d3be6bc2b7d46470a10a1 +https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda#43e14f832d7551e5a8910672bfc3d8c6 +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda#23b4ba5619c4752976eb7ba1f5acb7e8 +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda#a4059bc12930bddeb41aef71537ffaed +https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda#4c2498dcda0d58cf25466e82f7287b32 +https://conda.anaconda.org/conda-forge/noarch/marko-2.2.2-pyhd8ed1ab_0.conda#3c3e9339e46fffba5920be28d9233860 +https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda#14c42a6334f38c412449f5a5e4043a5a +https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda#daddf757c3ecd6067b9af1df1f25d89e +https://conda.anaconda.org/conda-forge/noarch/frictionless-5.18.1-pyhd8ed1ab_1.conda#4b2cae54d84f734c32837175d8ed2459 +https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda#d73fdc05f10693b518f52c994d748c19 +https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda#3bc0ac31178387e8ed34094d9481bfe8 +https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda#2452e434747a6b742adc5045f2182a8e +https://conda.anaconda.org/conda-forge/noarch/hdx-python-utilities-4.0.6-pyh332efcf_0.conda#6736b5ff2394169e011a7bf926172d5c +https://conda.anaconda.org/conda-forge/noarch/hdx-python-country-4.1.1-pyh332efcf_0.conda#241ca19104e3d7e7d985a06c025c879d +https://conda.anaconda.org/conda-forge/noarch/pydeflate-2.3.4-pyhcf101f3_1.conda#02e7ccf24972a1637c0de86e08a169b3 https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda#003b8ba0a94e2f1e117d0bd46aebc901 -https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda#6b0259cea8ffa6b66b35bae0ca01c447 +https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.37.0-pyhcf101f3_1.conda#c4c4f99faba7174b3d99b79baf60697d https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda#eb52d14a901e23c39e9e7b4a1a5c015f -https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313hc551f4f_6.conda#296e02bdc5cd5799f3b022f67d8ecd52 +https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.1.0-py313h252b9d7_0.conda#e6ab56e180655e23353afea13caebc44 https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda#8bc5851c415865334882157127e75799 https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda#381bd45fb7aa032691f3063aff47e3a1 https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda#7f3ac694319c7eaf81a0325d6405e974 -https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda#91f5637b706492b9e418da1872fd61ce -https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda#53cb4b14ab0841e104e2bd11ee64b840 https://conda.anaconda.org/conda-forge/noarch/pycountry-24.6.1-pyhd8ed1ab_0.conda#62ed8c560f1b5b8d74ed11e68e9ae223 -https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda#71bf9646cbfabf3022c8da4b6b4da737 -https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hc34da29_3.conda#a0ee9f9b49a5bb1bae9513db7bb86595 https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda#43dd16b113cc7b244d923b630026ff4f https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda#40182a8d62a61d147ec7d3e4c5c36ac2 -https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda#18de09b20462742fe093ba39185d9bac -https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda#5267bef8efea4127aacd1f4e1f149b6e -https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda#6e2b8dfbfd1b4e91f49fd13218db08d7 +https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda#1ada850380c9857f4e9f670775ec550a https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda#193a9e54636d8d70781a3e56370f5502 -https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.0-pyhd8ed1ab_0.conda#3c806a133fb9e59dca249c5a00c2ab3e -https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda#e9c622e0d00fa24a6292279af3ab6d06 -https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda#fa31df4d4193aabccaf09ce78a187faf -https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda#8b2613dbfd4e2bc9080b2779b53fc210 -https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda#a0a4a3035667fc34f29bfbd5c190baa6 -https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.5-py313hcc225dc_1.conda#e12491c39d2ea259771ce4d80a91817f -https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c -https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda#c3946ed24acdb28db1b5d63321dbca7d -https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.28.1-pyhd8ed1ab_0.conda#917e71a753611d7b7bb79baf46273c5a -https://conda.anaconda.org/conda-forge/noarch/pandera-0.28.1-hd8ed1ab_0.conda#3236ebaa938b455d086f747f3541b57a -https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda#0aa03903d33997f3886be58abc890aef +https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.1-pyhd8ed1ab_0.conda#3770774486c8b9e822c6bf996da18a25 +https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda#e941e85e273121222580723010bd4fa2 https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhcf101f3_1.conda#e1bccffd88819e75729412799824e270 https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.4-py313h16c19ce_0.conda#d8976bd40232eea804fa55c429774c0d https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.8-py313habf4b1d_0.conda#37dffad2937d7c8b7fc47003ddd31eac https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.43-h486b42e_1.conda#367b8029352f3899fb76cc20f4d144b9 https://conda.anaconda.org/conda-forge/osx-64/lxml-6.0.2-py313h00bd3da_2.conda#4158c697b90cba2db2ca8d58bd4461fb -https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf5-3.12.1-ha756dc0_0.conda#e9dcff4b3ae49b64325fcadd39d0d9fb -https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf4-3.12.1-h303b8bb_0.conda#4ad7576c163cafe85f1444c7f42668de -https://conda.anaconda.org/conda-forge/osx-64/libgdal-netcdf-3.12.1-h73de3a7_0.conda#d65b4b768eb89c3d5f97027a8723f237 +https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf5-3.12.2-hd721b9a_1.conda#157c42a38b3a6c6cd8816babe2376c09 +https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf4-3.12.2-h2f08c0b_1.conda#2f3c40860f85bf02205e5b782b5be0bd +https://conda.anaconda.org/conda-forge/osx-64/libgdal-netcdf-3.12.2-ha19e286_1.conda#17ed908c9fe48af590929b9959adfd75 https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.9.0-pyhd8ed1ab_0.conda#2f1ed718fcd829c184a6d4f0f2e07409 https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda#7d9daffbb8d8e0af0f769dbbcd173a54 https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda#17b43cee5cc84969529d5d0b0309b2cb https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-12.1-py313h07bcf3a_0.conda#6a2c3a617a70f97ca53b7b88461b1c27 https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-12.1-py313hf669bc3_0.conda#628b5ad83d6140fe4bfa937e2f357ed7 -https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_0.conda#297e2901b530c5d321c563e66a65db99 -https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda#6af4b059e26492da6013e79cbcb4d069 -https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h6c33b1e_9.conda#d940d809c42fbf85b05814c3290660f5 +https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_1.conda#b70e2d44e6aa2beb69ba64206a16e4c6 +https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.18-hbcb3906_1.tar.bz2#24632c09ed931af617fe6d5292919cab +https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h93d8f39_0.conda#4c055e46b394be36681fe476c1e2ee6e https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.1.0-py312hb7d603e_0.conda#81511d0be03be793c622c408c909d6f9 https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda#7526d20621b53440b0aae45d4797847e https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda#f6d7aa696c67756a650e91e15e88223c https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda#e51f1e4089cad105b6cac64bd8166587 -https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda#6b6ece66ebcae2d5f326c77ef2c5a066 https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda#8a3d6d0523f66cf004e563a50d9392b3 https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda#00f5b8dafa842e0c27c1cd7296aa4875 https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda#b11e360fc4de2b0035fc8aaa74f17fd6 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda#fd312693df06da3578383232528c468d https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 -https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d -https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda#c0d0b883e97906f7524e2aac94be0e0d -https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_0.conda#b1a27250d70881943cca0dd6b4ba0956 -https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-h5f6438b_0.conda#08a03378bc5293c6f97637323802f480 -https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyhcf101f3_1.conda#cfc86ccc3b1de35d36ccaae4c50391f5 +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda#f1acf5fdefa8300de697982bcb1761c9 +https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda#7c5ebdc286220e8021bf55e6384acd67 +https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda#f11a319b9700b203aa14c295858782b6 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.0-pyhcf101f3_0.conda#b14079a39ae60ac7ad2ec3d9eab075ca https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda#7b8bace4943e0dc345fc45938826f2b8 https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda#36de09a8d3e5d5e6f4ee63af49e59706 @@ -385,13 +463,13 @@ https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1 https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551 https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda#d3549fd50d450b6d9e7dddff25dd2110 https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda#8368d58342d0825f0843dc6acdd0c483 -https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda#f56000b36f09ab7533877e695e4e8cb0 +https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyhe01879c_0.conda#31e11c30bbee1682a55627f953c6725a https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-25.1.0-py313hf050af9_2.conda#1fedb53ffc72b7d1162daa934ad7996b https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda#8ac12aff0860280ee0cff7fa2cf63f3b https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda#d79a87dcfa726bcea8e61275feed6f83 https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda#e7f89ea5f7ea9401642758ff50a2d9c1 https://conda.anaconda.org/conda-forge/noarch/json5-0.13.0-pyhd8ed1ab_0.conda#8d5f66ebf832c4ce28d5c37a0e76605c -https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda#0a01c169f0ab0f91b26e77a3301fbfe4 +https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda#ea5be9abc2939c8431893b4e123a2065 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.28.0-pyhcf101f3_0.conda#a63877cb23de826b1620d3adfccc4014 https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda#62b7c96c6cd77f8173cc5cada6a9acaa https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda#598fd7d4d0de2455fb74f56063969a97 @@ -400,20 +478,20 @@ https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda#ff9efb7f7469aed3c4a8106ffa29593c https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda#9673a61a297b00016442e022d689faa6 https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda#b1b505328da7a6b246787df4b5a49fbc -https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.4.0-pyhd8ed1ab_0.conda#cba8aff819d6eec578c9994f6eb58934 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda#c3197f8c0d5b955c904616b716aca093 https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda#edb16f14d920fb3faf17f5ce582942d6 https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda#d0d408b1f18883a944376da5cf8101ea -https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda#a110716cdb11cf51482ff4000dc253d7 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.6-pyhcf101f3_0.conda#97c1ce2fffa1209e7afb432810ec6e12 https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda#a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda#bd80ba060603cc228d9d81c257093119 https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda#9ce473d1d1be1cc3810856a48b3fab32 -https://conda.anaconda.org/conda-forge/noarch/ipython-9.9.0-pyh53cf698_0.conda#8481978caa2f108e6ddbf8008a345546 -https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.19-py313ha9a7918_0.conda#b2efa6af0cfd5c8f584715c37e5d58f6 +https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyh53cf698_0.conda#441ca4e203a62f7db2f29f190c02b9cf +https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.20-py313h8b5a893_0.conda#d97267b6016ad4bfb48874defeab29ea https://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda#2da13f2b299d8e1995bafbbe9689a2f7 https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda#54898d0f524c9dee622d44bbb081a8ab -https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.1.0-pyh5552912_0.conda#1849eec35b60082d2bd66b4e36dec2b6 +https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyh5552912_1.conda#4b53d436f3fbc02ce3eeaf8ae9bebe01 https://conda.anaconda.org/conda-forge/noarch/async-lru-2.1.0-pyhcf101f3_0.conda#04d2e5fba67e5a1ecec8e25d6c769004 -https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.3-pyhd8ed1ab_0.conda#106f4e36e14797b9c2abfc3849d9e92f +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.4-pyhd8ed1ab_0.conda#b555f252a0796e00ce9d8ec318196da7 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda#c85c76dc67d75619a92f51dfbce06992 https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.3-pyhcf101f3_0.conda#94a5f0cee51b6b0ffdcad0af6db0af18 https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.52-hd8ed1ab_0.conda#6d034d3a6093adbba7b24cb69c8c621e @@ -426,7 +504,7 @@ https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda#9 https://conda.anaconda.org/conda-forge/osx-64/jpype1-1.6.0-py313hc551f4f_1.conda#e9bdfb889cddb31b159d68405c007640 https://conda.anaconda.org/gurobi/osx-64/gurobi-13.0.1-py313_0.conda#a8920bd13812ab4be497ec643c31db13 https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda#a8e54eefc65645193c46e8b180f62d22 -https://conda.anaconda.org/conda-forge/osx-64/libglib-2.86.3-hf241ffe_0.conda#584ce14b08050d3f1a25ab429b9360bc +https://conda.anaconda.org/conda-forge/osx-64/libglib-2.86.4-hec30fc1_0.conda#138aefa25f4d5efec2ac224745ee82f6 https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.14-h21dd04a_2.conda#ba63822087afc37e01bf44edcc2479f3 https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-ha059160_1.conda#742a8552e51029585a32b6024e9f57b4 https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda#49023d73832ef61042f6a237cb2687e7 @@ -435,17 +513,17 @@ https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed3 https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda#a7970cd949a077b7cb9696379d338681 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab -https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda#84ccec5ee37eb03dd352db0a3f89ada3 +https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.17.1-h7a4440b_0.conda#4646a20e8bbb54903d6b8e631ceb550d https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h7656bdc_1.conda#9917add2ab43df894b9bb6f5bf485975 -https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-12.3.0-h8b84c26_0.conda#a1abc59ee893b609e7df4e6df29a6743 +https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-12.3.2-h8b84c26_0.conda#8f6cf0a04e0de00a0df87dd452a512ce https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.16-h8616949_0.conda#4422491d30462506b9f2d554ab55e33d https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda#8c6316c058884ffda0af1f1272910f94 -https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.44.4-h07555a4_0.conda#bb9e17e69566ded88342156e58de3f87 -https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.60.0-h2da6fc3_0.conda#0e5609c0f8e5421e43301bcc3c5e1985 +https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.44.5-h49d54ea_0.conda#75a6257426d97e17cc5af9ce96a60143 +https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.60.0-h99749c4_1.conda#6477841b81291fb8573d0244816bde19 https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-hb2c11ec_12.conda#e12673b408d1eb708adb3ecc2f621d78 https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda#848cc963fcfbd063c7a023024aa3bec0 https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2#f64218f19d9a441e80343cea13be1afb -https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.86.3-h8650975_0.conda#16ce4f8eddf8ad9233631f79404a4267 +https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.86.4-h8501676_0.conda#0f1383d5427e74ff79d89b2d6bf8a979 https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h8616949_2.conda#efe7fa6c60b20cb0a3a22e8c3e7b721e https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda#d9684247c943d492d9aac8687bc5db77 https://conda.anaconda.org/conda-forge/osx-64/gtk3-3.24.43-h5e629aa_6.conda#dbd0346e44fcbda7fe4f6eaf42597ef9 @@ -453,7 +531,6 @@ https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.con https://conda.anaconda.org/conda-forge/osx-64/graphviz-14.1.2-h44fc223_0.conda#4c1c78d65d867d032c07303cf38117ba https://conda.anaconda.org/conda-forge/osx-64/glpk-5.0-h3cb5acd_0.tar.bz2#323537f09c8044f0352a8af30a6fc650 https://conda.anaconda.org/conda-forge/noarch/geojson-3.2.0-pyhd8ed1ab_0.conda#9f9840fb1c2e009fb0009a2f9461e64a -https://conda.anaconda.org/conda-forge/osx-64/fiona-1.10.1-py313ha55c4c1_6.conda#b7268b3d9fcfd219f88e8db709a0e4d8 https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-pyhd8ed1ab_5.conda#4a25cae637029c5589135903aa15b3b6 https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.1.2-py313h5eff275_1.conda#44f1e465412acc4aeb8290acd756fb58 https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda#5498feb783ab29db6ca8845f68fa0f03 @@ -465,47 +542,9 @@ https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda#7 https://conda.anaconda.org/conda-forge/osx-64/h5py-3.15.1-nompi_py313h2a429bc_101.conda#de9fd6ce4bb0957d1909069fad48aafb https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda#ca7f9ba8762d3e360e47917a10e23760 https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda#cc73a9bd315659dc5307a5270f44786f -https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.34-pyhd8ed1ab_0.conda#54bcb8039fe8f63c9990afe552df4fdc +https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.51-pyhd8ed1ab_0.conda#f2350b60476eeafb5d044603a9bb0018 https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.16.0-pyhd8ed1ab_0.conda#061b5affcffeef245d60ec3007d1effd -https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.34-pyhd8ed1ab_0.conda#8461fcbfd947f60cabe4719fb3a55189 -https://conda.anaconda.org/conda-forge/osx-64/libutf8proc-2.11.3-hc282952_0.conda#2c49b6f6ec9a510bbb75ecbd2a572697 -https://conda.anaconda.org/conda-forge/osx-64/prometheus-cpp-1.3.0-h7802330_0.conda#f36107fa2557e63421a46676371c4226 -https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.12.0-h06076ce_1.conda#97d7a1cda5546cb0bbdefa3777cb9897 -https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-headers-1.21.0-h694c41f_1.conda#62636543478d53b28c1fc5efce346622 -https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-1.21.0-h7d3f41d_1.conda#952dd64cff4a72cadf5e81572a7a81c8 -https://conda.anaconda.org/conda-forge/osx-64/orc-2.2.2-h3073fbf_0.conda#7323bc020618321c05afaf23f78460c0 -https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.39.0-hed66dea_0.conda#06564befaabd2760dfa742e47074bad2 -https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.39.0-h8ac052b_0.conda#7600fb1377c8eb5a161e4a2520933daa -https://conda.anaconda.org/conda-forge/osx-64/gflags-2.2.2-hac325c4_1005.conda#a26de8814083a6971f14f9c8c3cb36c2 -https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.conda#06cf91665775b0da395229cd4331b27d -https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.1-he2a98a9_0.conda#9f39c22aad61e76bfb73bb7d4114efac -https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.12.0-h2a5eb39_0.conda#53d1b2dc90315c3b8e4ecc86966ab7bd -https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.16.0-ha4e89a6_0.conda#5f76a3745c0eb7021845161c9a1bfee3 -https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.14.0-h7f37a48_0.conda#30ca75c03ba3166f44852b33f07f077c -https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.13.2-h0e8e1c8_1.conda#32eb613f88ae1530ca78481bdce41cdd -https://conda.anaconda.org/conda-forge/osx-64/aws-c-common-0.12.6-h8616949_0.conda#c7f2d588a6d50d170b343f3ae0b72e62 -https://conda.anaconda.org/conda-forge/osx-64/aws-c-sdkutils-0.2.4-h901532c_4.conda#b384fb05730f549a55cdb13c484861eb -https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.2.7-h901532c_5.conda#cccf553ce36da9ae739206b69c1a4d28 -https://conda.anaconda.org/conda-forge/osx-64/aws-c-cal-0.9.13-hea39f9f_1.conda#cbf7be9e03e8b5e38ec60b6dbdf3a649 -https://conda.anaconda.org/conda-forge/osx-64/aws-c-io-0.23.3-hf559bb5_5.conda#d9cc056da3a1ee0a2da750d10a5496f3 -https://conda.anaconda.org/conda-forge/osx-64/aws-c-compression-0.3.1-h901532c_9.conda#abb79371a321d47da8f7ddca128533de -https://conda.anaconda.org/conda-forge/osx-64/aws-c-http-0.10.7-h924c446_5.conda#acff093ebb711857fb78fae3b656631c -https://conda.anaconda.org/conda-forge/osx-64/aws-c-auth-0.9.3-hdff831d_0.conda#a04fb222805ce5697065036ae1676436 -https://conda.anaconda.org/conda-forge/osx-64/aws-c-s3-0.11.3-he30762a_1.conda#33c653401dc7b016b0011cb4d16de458 -https://conda.anaconda.org/conda-forge/osx-64/aws-c-mqtt-0.13.3-ha72ff4e_11.conda#96f22c912f1cf3493d9113b9fd04c912 -https://conda.anaconda.org/conda-forge/osx-64/aws-c-event-stream-0.5.7-ha05da6a_1.conda#e0d71662f35b21fb993484238b4861d9 -https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.35.4-h7484968_0.conda#31db311b3005b16ff340796e424a6b3c -https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.606-h386ebac_10.conda#768c6b78e331a2938af208e062fd6702 -https://conda.anaconda.org/conda-forge/osx-64/libarrow-23.0.0-h8071b21_0_cpu.conda#65956d60494884c45e3f0952de391e08 -https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-23.0.0-hc26cc94_0_cpu.conda#529e738c9f7641f742e458b5dd903a87 -https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-23.0.0-py313h7c712a9_0_cpu.conda#8c51b7be069b1faa48981caa133f440b -https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda#e38e467e577bd193a7d5de7c2c540b04 -https://conda.anaconda.org/conda-forge/osx-64/libthrift-0.22.0-h687e942_1.conda#69251ed374b31a5664bf5ba58626f3b7 -https://conda.anaconda.org/conda-forge/osx-64/libparquet-23.0.0-ha0d2768_0_cpu.conda#291f3afc764f78ea4a83516585a1e7c3 -https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-23.0.0-h9737151_0_cpu.conda#dcaf0d16d780e9d89f9d9bfd6fc21241 -https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-23.0.0-h9737151_0_cpu.conda#29bcbe4c43773e9c75b9ce72fd93ee34 -https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-23.0.0-h7f2e36e_0_cpu.conda#863dc1e33bafc3288f32098ab5ea9efc -https://conda.anaconda.org/conda-forge/osx-64/pyarrow-23.0.0-py313habf4b1d_0.conda#5a1b0ff8d04d3343edda66e26425523a +https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.50-pyhd8ed1ab_0.conda#65465c189c38fc262c009faa98825cea https://conda.anaconda.org/conda-forge/noarch/arcosparse-0.4.2-pyhd8ed1ab_0.conda#9a005ba5f540619a1343587b4ee3d95e https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.3.0-pyhd8ed1ab_0.conda#9e18b048c69d2d72bc69d120a435d731 https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda#c138c7aaa6a10b5762dcd92247864aff @@ -520,9 +559,9 @@ https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda#e52c https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda#f88bb644823094f436792f80fba3207e https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda#0401a17ae845fa72c7210e206ec5647d https://conda.anaconda.org/conda-forge/osx-64/cytoolz-1.1.0-py313hf050af9_1.conda#9eb5b350c5a60139b32c72bf8695139c -https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.1-pyhcf101f3_1.conda#c15e359a982395be86a7576a91f9c5f5 +https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_0.conda#1eac93a6257796dd348d366a85f7f283 https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda#0b830ba4947de6d60dd9d96827a1cacb -https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.1-pyhcf101f3_0.conda#a86541105aa7920d2147d48bf370dc08 +https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_0.conda#f438bd6e7ce6b4d442789f77d3fc7818 https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda#fa9e9ec7bf26619a8edd3e11155f15d6 https://conda.anaconda.org/conda-forge/osx-64/jasper-4.2.8-h9ce442b_0.conda#155c61380cc98685f4d6237cb19c5f97 https://conda.anaconda.org/conda-forge/osx-64/eccodes-2.45.0-hef68630_0.conda#c2d8f6d37131139dbaeba869b036b9cb diff --git a/envs/default_osx-arm64.pin.txt b/envs/default_osx-arm64.pin.txt index bd3ae41c78..93e5ba836e 100644 --- a/envs/default_osx-arm64.pin.txt +++ b/envs/default_osx-arm64.pin.txt @@ -1,42 +1,37 @@ # Generated by `pixi workspace export` # platform: osx-arm64 @EXPLICIT -https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.2-h8088a28_0.conda#009f0d956d7bfb00de86901d16e486c7 -https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.8.2-h8088a28_0.conda#c2650d5190be15af804ae1d8a76b0cca -https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.8.2-hd0f0c4f_0.conda#3c8f80ff660321d5259ebc3743265566 -https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.8.2-h8088a28_0.conda#ffd253880bfba4a94d048661d57e4f79 -https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.8.2-hd0f0c4f_0.conda#b86b8e8daf1c8ac572bff820e6160473 https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda#ad659d0a2b3e47e38d829aa8cad2d610 https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda#369964e85dc26bfe78f41399b366c435 -https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda#a73d54a5abba6543cb2f0af1bfbd6851 +https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda#a9d86bc62f39b94c4661716624eb21b0 https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda#068d497125e4bf8a66bf707254fff5ae https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda#f8381319127120ce51e081dce4865cf4 https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda#94305520c52a4aa3f6c2b1ff6008d9f8 https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda#bddacf101bb4dd0e51811cb69c7790e2 -https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda#b34dc4172653c13dcf453862f251af2b +https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.1-hd24854e_1.conda#f4f6ad63f98f64191c3e77c5f5f29d76 https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.2-h38cb7af_0.conda#1e93aca311da0210e660d2247812fa02 https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.2-h1ae2325_0.conda#4b0bf313c53c3e89692f020fb55d5f2c -https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda#85ccccb47823dd9f7a99d2c7f530342f -https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda#411ff7cd5d1472bba0f55c0faf04453b -https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda#b79875dbb5b1db9a4a22a4520f918e1a -https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda#58fd217444c2a5701a44244faf518206 -https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.0-hbbac1ca_101_cp313.conda#e972e146a1e0cfb1f26da42cb6f6648c -https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 -https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda#9efbfdc37242619130ea42b1cc4ed861 +https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_1.conda#57c4be259f5e0b99a5983799a228ae55 +https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.2-h8088a28_0.conda#009f0d956d7bfb00de86901d16e486c7 +https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda#43c04d9cb46ef176bb2a4c77e324d599 +https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.4-hf6b4638_0.conda#a92e310ae8dfc206ff449f362fc4217f +https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda#620b85a3f45526a8bc4d23fd78fc22f0 +https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.12-h20e6be0_100_cp313.conda#179c0f5ae4f22bc3be567298ed0b17b9 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda#e5ce43272193b38c2e9037446c1d9206 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda#9d64911b31d57ca443e9f1e36b04385f https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-21.1.8-h4a912ad_0.conda#206ad2df1b5550526e386087bef543c7 https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda#a44032f282e7d2acdeb1c240308052dd -https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_16.conda#8b216bac0de7a9d60f3ddeba2515545c -https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_16.conda#265a9d03461da24884ecc8eb58396d57 -https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_16.conda#11e09edf0dde4c288508501fe621bab4 +https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_18.conda#92df6107310b1fff92c4cc84f0de247b +https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_18.conda#c4a6f7989cffb0544bfd9207b6789971 +https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_18.conda#26981599908ed2205366e8fc91b37fc6 https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_ha158390_4.conda#a6f6d3a31bb29e48d37ce65de54e2df0 https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-5_h51639a9_openblas.conda#bcc025e2bbaf8a92982d20863fe1fb69 https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-5_hd9741b5_openblas.conda#ca9d752201b7fa1225bca036ee300f2b -https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-hf598326_0.conda#780f0251b757564e062187044232c2b7 +https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-h55c6f16_2.conda#4cb5878bdb9ebfa65b7cdff5445087c5 https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-5_hb0561ab_openblas.conda#efd8bd15ca56e9d01748a3beab8404eb -https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.1-py313h16eae64_0.conda#527abeb3c3f65345d9c337fb49e32d51 +https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.2-py313h16eae64_1.conda#e34e9c58a0ee3eca3def3bb477797621 https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.17.0-py313hc753a45_1.conda#5b73b1e6d191aac48960c50d65372f19 -https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda#cb72cedd94dd923c6a9405a3d3b1c018 +https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda#1d00d46c634177fc8ede8b99d6089239 https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda#615de2a4d97af50c350e5cf160149e77 https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.8.0-np2py313h3b23316_1.conda#4434adab69e6300db1e98aff4c3565f3 https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda#fd5062942bfa1b0bd5e0d2a4397b099e @@ -47,15 +42,14 @@ https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda#3339 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda#5b8d21249ff20967101ffa321cab24e8 https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.3-py313h7d16b84_2.conda#03771a1c710d15974372ae791811bcde https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda#a2c1eeadae7a309daed9d62c96012a2b -https://conda.anaconda.org/conda-forge/osx-arm64/highspy-1.12.0-np2py313h9ce8dcc_0.conda#db9abb138afc8f175a5f7d6149074882 -https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.9-pyhd8ed1ab_0.conda#2b661fd7a718757b2e91bbcac81deb48 -https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda#5d99943f2ae3cc69e1ada12ce9d4d701 +https://conda.anaconda.org/conda-forge/osx-arm64/highspy-1.13.1-np2py313hdc65ad0_0.conda#e80eae811792198397fdd4e8ec794be1 +https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.1-pyhd8ed1ab_0.conda#ed5f5e0cbc50f05631813b0d48021de1 https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda#ab136e4c34e97f34fb621d2592a393d8 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda#12c566707c80111f9799308d9e265aef https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py313h224173a_1.conda#050374657d1c7a4f2ea443c0d0cbd9a0 https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.25.0-py313h9734d34_1.conda#7ac13a947d4d9f57859993c06faf887b https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda#0caa1af407ecff61170c9437a808404d -https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.2-pyhd8ed1ab_0.conda#bdb8608d3b834159b1b684dc6df3ac44 +https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.3-pyhd8ed1ab_0.conda#c97b99b1f4f76708edbe7b5811d95da9 https://conda.anaconda.org/conda-forge/osx-arm64/wrapt-1.17.3-py313hcdf3177_1.conda#cd6b5084444b0b4ed22dde20355d4c4b https://conda.anaconda.org/conda-forge/noarch/throttler-1.2.2-pyhd8ed1ab_0.conda#6fc48bef3b400c82abaee323a9d4e290 https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda#58335b26c38bf4a20f399384c33cbcf9 @@ -75,22 +69,22 @@ https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda#53abe https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda#a22d1fd9bf98827e280a02875d9a007a https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda#eacc711330cd46939f66cd401ff9c44b https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda#c65df89a0b2e321045a9e01d1337b182 -https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda#84c5c40ea7c5bbc6243556e5daed20e7 -https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.3-py313h76c770c_1.conda#f6a4c9667a9994f3a499b4ce23e80959 +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda#f9517d2fe1501919d7a236aba73409bb +https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.5-py313he3f6fad_0.conda#2cca7fe0caca845c02b37d8b465a18fa https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda#42834439227a4551b939beeeb8a4b085 https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.3.1-pyhd8ed1ab_0.conda#d4f3f31ee39db3efecb96c0728d4bdbf https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda#a55b220de8970208f583e38639cfbecc https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-http-0.3.0-pyhdfd78af_0.tar.bz2#269943ac6637718947763b4f989710fc -https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda#1bd2e65c8c7ef24f4639ae6e850dacc2 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda#4fefefb892ce9cc1539405bec2f1a6cd https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda#03fe290994c5e4ec17293cfb6bdce520 https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.conda#b8993c19b0c32a2f7b66cbb58ca27069 https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda#8e662bd460bda79b1ea39194e3c4c9ab https://conda.anaconda.org/conda-forge/noarch/anyio-4.12.1-pyhcf101f3_0.conda#11a2b8c732d215d977998ccd69a9d5e8 https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda#4f14640d58e2cc0aa0819d9d8ba125bb https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda#d6989ead454181f4f9bc987d3dc4e285 -https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.2.1-pyhdfd78af_0.conda#f50f82ac51409fd0dc75a20a9f6930ea +https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.3-pyhdfd78af_0.conda#15fe83cb157467c0c85c375f56abf199 https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda#78a0fe9e9c50d2c381e8ee47e3ea437d -https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h7d74516_0.conda#0e8e3235217b4483a7461b63dca5826b +https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h65a2061_1.conda#5d0c8b92128c93027632ca8f8dc1190f https://conda.anaconda.org/conda-forge/noarch/dpath-2.2.0-pyha770c72_1.conda#7b2af124684a994217e62c641bca2e48 https://conda.anaconda.org/conda-forge/noarch/yte-1.9.4-pyhd8ed1ab_0.conda#89d5edf5d52d3bc1ed4d7d3feef508ba https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhcf101f3_3.conda#de98449f11d48d4b52eefb354e2bfe35 @@ -109,7 +103,7 @@ https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda#d6bd3cd217e62bbd7efe67ff224cd667 https://conda.anaconda.org/conda-forge/noarch/amply-0.1.6-pyhd8ed1ab_1.conda#5a81866192811f3a0827f5f93e589f02 https://conda.anaconda.org/conda-forge/osx-arm64/pulp-2.8.0-py313h02cf4f5_3.conda#a2840bd568edda9880f186a47e94893f -https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.1-py313h6688731_0.conda#c3a1b24571871fec4498a0226a3c22c1 +https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py313h6688731_0.conda#ba2d89e51a855963c767648f44c03871 https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda#019a7385be9af33791c989871317e1ed https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda#23029aae904a2ba587daba708208012f https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda#b38fe4e78ee75def7e599843ef4c1ab0 @@ -129,14 +123,12 @@ https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.cond https://conda.anaconda.org/conda-forge/noarch/connection_pool-0.0.3-pyhd3deb0d_0.tar.bz2#e270fff08907db8691c02a0eda8d38ae https://conda.anaconda.org/conda-forge/noarch/conda-inject-1.3.2-pyhd8ed1ab_0.conda#e52c2a160d6bd0649c9fafdf0c813357 https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda#f4e90937bbfc3a4a92539545a37bb448 -https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.15.0-pyhdfd78af_0.conda#71856e8d31fc4396cb4b3b57c9e7fb83 +https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.16.3-pyhdfd78af_0.conda#d5ff394122607ae4b0ee8362f6225959 https://conda.anaconda.org/bioconda/noarch/snakemake-logger-plugin-pypsa-0.1.0-pyhdfd78af_0.conda#1a318ca1376d0cd58aa85e3857b08520 https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.4.0-pyhdfd78af_0.conda#7d4f2bf739967798eb4d8c02d59cf36c -https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.1.0-pyhdfd78af_0.conda#01e79189d86f278322d0807f7d1dbada +https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.2.0-pyhdfd78af_0.conda#4ed1b626504a1b8e9460ccc930d1310e https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-cluster-generic-1.0.9-pyhdfd78af_0.tar.bz2#9b1db7127119f513696d620eefe7bf67 -https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.14.14-hb0cad00_0.conda#759630a86c844318b9428b22980025c7 -https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.15-py313h6688731_1.conda#ccc49acbc9df82571383070bc4591c45 -https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda#06ad944772941d5dae1e0d09848d8e49 +https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.15.1-h279115b_0.conda#c11e2249e0c4b2de13906fe34684f4f0 https://conda.anaconda.org/conda-forge/noarch/xarray-2025.6.1-pyhd8ed1ab_1.conda#145c6f2ac90174d9ad1a2a51b9d7c1dd https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda#9aa358575bbd4be126eaa5e0039f835c https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.51.2-h77b7338_0.conda#93796186d49d0b09243fb5a8f83e53b6 @@ -150,9 +142,9 @@ https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda#36d https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda#bcb3cba70cf1eec964a03b4ba7775f01 https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.67.0-hc438710_0.conda#a4b4dd73c67df470d091312ab87bf6ae https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda#44083d2d2c2025afca315c7a172eab2b -https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda#c6dc8a0fdec13a0565936655c33069a1 -https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.18.0-he38603e_0.conda#36190179a799f3aee3c2d20a8a2b970d -https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.7.1-hfb14a63_2.conda#7515b2df0846e534a2096dff3ae6f11e +https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-h385eeb1_0.conda#e446e1822f4da8e5080a9de93474184d +https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.18.0-hd5a2499_1.conda#2742a933ef07e91f38e3d33ad6fe937c +https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.7.1-hfb14a63_3.conda#8f33a4a2b856de0e8f006c489beca62a https://conda.anaconda.org/conda-forge/osx-arm64/xerces-c-3.3.0-h25f632f_1.conda#0b886d06130b774f086d3b2ce0b7277a https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda#9b4190c4055435ca3502070186eba53a https://conda.anaconda.org/conda-forge/osx-arm64/muparser-2.3.5-h11e0b38_0.conda#1cdbe54881794ee356d3cba7e3ed6668 @@ -167,49 +159,51 @@ https://conda.anaconda.org/conda-forge/osx-arm64/librttopo-1.1.0-ha909e78_20.con https://conda.anaconda.org/conda-forge/osx-arm64/minizip-4.0.10-hff1a8ea_0.conda#93def148863d840e500490d6d78722f9 https://conda.anaconda.org/conda-forge/osx-arm64/freexl-2.0.0-h3ab3353_2.conda#dd655a29b40fe0d1bf95c64cf3cb348d https://conda.anaconda.org/conda-forge/osx-arm64/libspatialite-5.1.0-gpl_ha239c29_119.conda#babf54eb886241155434878f728ea099 -https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.54-h132b30e_0.conda#1b80fd1eecb98f1cb7de4239f5d7dc15 +https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.55-h132b30e_0.conda#871dc88b0192ac49b6a5509932c31377 https://conda.anaconda.org/conda-forge/osx-arm64/uriparser-0.9.8-h00cdb27_0.conda#e8ff9e11babbc8cd77af5a4258dc2802 https://conda.anaconda.org/conda-forge/osx-arm64/libkml-1.3.0-hc33e383_1022.conda#a91a7afac6eec20a07d9435bf1372bc1 https://conda.anaconda.org/conda-forge/osx-arm64/libhwy-1.3.0-h48b13b8_1.conda#6375717f5fcd756de929a06d0e40fab0 https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda#006e7ddd8a110771134fcc4e1e3a6ffa https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hc919400_1.conda#b2b7c8288ca1a2d71ff97a8e6a1e8883 https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-hc919400_1.conda#079e88933963f3f149054eec2c487bc2 -https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.1-h913acd8_8.conda#c41ad4bd5cb936fd7662426753ff1784 +https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.2-h913acd8_0.conda#bec365333f77af833f8e46f6de96e2a2 https://conda.anaconda.org/conda-forge/osx-arm64/lzo-2.10-h925e9cb_1002.conda#e56eaa1beab0e7fed559ae9c0264dd88 https://conda.anaconda.org/conda-forge/osx-arm64/libarchive-3.8.5-gpl_h6fbacd7_100.conda#cea06a42883e807bcca32abdd122d1e7 https://conda.anaconda.org/conda-forge/osx-arm64/json-c-0.18-he4178ee_0.conda#94f14ef6157687c30feb44e1abecd577 https://conda.anaconda.org/conda-forge/osx-arm64/giflib-5.2.2-h93a5062_0.conda#95fa1486c77505330c20f7202492b913 https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.2-hada39a4_1.conda#fca4a2222994acd7f691e57f94b750c5 https://conda.anaconda.org/conda-forge/osx-arm64/blosc-1.21.6-h7dd00d9_1.conda#925acfb50a750aa178f7a0aced77f351 -https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-core-3.12.1-ha937536_0.conda#46f2059e34c6a6142ecbe2c5e4c8cf5c +https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-core-3.12.2-h779b996_1.conda#7b1495aaf715847f1483b13712d2ca2b https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda#f22f4d4970e09d68a10b922cbb0408d3 https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_2.conda#55c7804f428719241a90b152016085a1 https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda#e9b05deb91c013e5224672a4ba9cf8d1 https://conda.anaconda.org/conda-forge/noarch/affine-2.4.0-pyhd8ed1ab_1.conda#8c4061f499edec6b8ac7000f6d586829 https://conda.anaconda.org/conda-forge/osx-arm64/rasterio-1.5.0-py313h8ab8132_0.conda#900d1d837d7ed61e0e8bda33746cc2d4 https://conda.anaconda.org/conda-forge/osx-arm64/pyproj-3.7.2-py313h698103d_2.conda#65f22ed9bf92ab532ee61b14779f3c9f -https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_1.conda#e7e37bf890147fa5d7892812a6dd3888 +https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.21.0-pyhcf101f3_1.conda#a0811eb1142b4da29162d1931922a1ec +https://conda.anaconda.org/conda-forge/osx-arm64/simplejson-3.20.2-py313h6535dbc_1.conda#27a8bc65b5f0aecb87a01568e573e6ae +https://conda.anaconda.org/conda-forge/osx-arm64/shapely-2.1.2-py313h10b2fc2_2.conda#7dc5b3a207a5c0af5fb7dacca24587a7 +https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.10.1-py313h7df67bf_6.conda#dc81b108af52deb655ea85f9b745f7e2 +https://conda.anaconda.org/conda-forge/noarch/rasterstats-0.20.0-pyhd8ed1ab_2.conda#a6762dbfc4cf7084adf09f0accdf0f8a https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2#0c14e44bc93a99cdc11398311c3c0dcf https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda#083725d6cd3dc007f06d04bcf1e613a2 https://conda.anaconda.org/conda-forge/osx-arm64/libhwloc-2.12.2-default_ha3cc4f2_1000.conda#38b8aa4ea25d313ad951bcb7d3cd0ad3 https://conda.anaconda.org/conda-forge/osx-arm64/tbb-2022.3.0-h4ddebb9_2.conda#82395152e3ba2dea9ea6a3dc17553136 https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda#eed7278dfbab727b56f2c0b64330814b https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda#4e4ea852d54cc2b869842de5044662fb -https://conda.anaconda.org/conda-forge/osx-arm64/mumps-include-5.8.1-h2ca763e_4.conda#8db931c3eac5b951783b1e69dd2f4736 +https://conda.anaconda.org/conda-forge/osx-arm64/mumps-include-5.8.2-h2ca763e_1.conda#7d0e3d3d875c7474dfbab34d5e6a9698 https://conda.anaconda.org/conda-forge/osx-arm64/metis-5.1.0-h15f6cfe_1007.conda#7687ec5796288536947bf616179726d8 -https://conda.anaconda.org/conda-forge/osx-arm64/libscotch-7.0.10-int64_ha305a69_2.conda#3df6158b6cddf8e444f08e280fc8573d -https://conda.anaconda.org/conda-forge/osx-arm64/mumps-seq-5.8.1-he6ca4b8_4.conda#feffdbb33d2bcc29a6a820dcbdf777cc +https://conda.anaconda.org/conda-forge/osx-arm64/libscotch-7.0.11-int64_hd8baee2_0.conda#1f2167640af4b8e61c5333963071d047 +https://conda.anaconda.org/conda-forge/osx-arm64/mumps-seq-5.8.2-he5473ce_1.conda#49cf0e34b48e5404dc63ae7bee00a1b9 https://conda.anaconda.org/conda-forge/osx-arm64/ampl-asl-1.0.0-h286801f_2.conda#bb25b8fa2b28474412dda4e1a95853b4 -https://conda.anaconda.org/conda-forge/osx-arm64/ipopt-3.14.19-hd6b6db2_1.conda#c9034bfd68d92e728233449e1bbfefc3 -https://conda.anaconda.org/conda-forge/osx-arm64/cppad-20250000.2-h286801f_0.conda#a7272504ef8b57fe12b6dd08fa07f1ab -https://conda.anaconda.org/conda-forge/osx-arm64/scip-9.2.4-ha1e27ce_2.conda#d34fdc9d97e33a7a0148a327d763e016 -https://conda.anaconda.org/conda-forge/osx-arm64/pyscipopt-5.6.0-py313hb4b7877_1.conda#ce430bc6087b31303de07f3f22e7ef27 +https://conda.anaconda.org/conda-forge/osx-arm64/ipopt-3.14.19-h9191b9b_2.conda#d7ce0fa8a1d1840691a12bbf409f29c6 +https://conda.anaconda.org/conda-forge/osx-arm64/scip-10.0.1-h1003740_0.conda#7d94bf9d07662bae4a4c0ccdd10928c3 +https://conda.anaconda.org/conda-forge/osx-arm64/pyscipopt-6.1.0-np2py313hdc65ad0_0.conda#e4524c71b2284dd010f27b3e2e001e7a https://conda.anaconda.org/conda-forge/noarch/validators-0.35.0-pyhd8ed1ab_0.conda#3449ef730c7d483adde81993994092b9 -https://conda.anaconda.org/conda-forge/osx-arm64/shapely-2.1.2-py313h10b2fc2_2.conda#7dc5b3a207a5c0af5fb7dacca24587a7 https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda#8678577a52161cc4e1c93fcc18e8a646 https://conda.anaconda.org/conda-forge/osx-arm64/statsmodels-0.14.6-py313hc577518_0.conda#b547594a22e18442099ffa9fb76521b9 https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda#6483b1f59526e05d7d894e466b5b6924 -https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.2-hed4e4f5_1.conda#75f39a44c08cb5dc4ea847698de34ba3 +https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.3-hed4e4f5_1.conda#d99c2a23a31b0172e90f456f580b695e https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.4-hbfb3c88_0.conda#6bf3d24692c157a41c01ce0bd17daeea https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hc919400_1.conda#9d1299ace1924aa8f4e0bc8e71dd0cf7 https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-hc919400_1.conda#78b548eed8227a689f93775d5d23ae09 @@ -218,7 +212,7 @@ https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda# https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.1-h6da58f4_0.conda#6d4ede03e2a8e20eb51f7f681d2a2550 https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.14.1-hce30654_0.conda#f35fb38e89e2776994131fbf961fa44b https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.18-hdfa7624_0.conda#6631a7bd2335bb9699b1dbc234b19784 -https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.0-py313h45e5a15_0.conda#78a39731fd50dbd511de305934fe7e62 +https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.1-py313h45e5a15_0.conda#a261959853e116b05a6c59e5944bf689 https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.9-py313h7add70c_2.conda#9583687276aaa393e723f3b7970be69f https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.14.1-hce30654_0.conda#1ec9a1ee7a2c9339774ad9bb6fe6caec https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda#37293a85a0f4f77bbd9cf7aaefc62609 @@ -234,26 +228,25 @@ https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_ https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_1.conda#46830ee16925d5ed250850503b5dc3a8 https://conda.anaconda.org/conda-forge/osx-arm64/numexpr-2.14.1-py313h73ed539_1.conda#a323c1c03577617e96323f848127fb07 https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.5-h8664d51_0.conda#13e6d9ae0efbc9d2e9a01a91f4372b41 -https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_h51e7c0a_105.conda#5630e3f53d61d87caff83e0e1c6eaf33 -https://conda.anaconda.org/conda-forge/osx-arm64/c-blosc2-2.22.0-hb83781b_1.conda#5e4bdded23f6d61d8351223db98bc8f3 -https://conda.anaconda.org/conda-forge/osx-arm64/pytables-3.10.2-py313h5ba8fac_10.conda#13a8641249ae375fa5f1e4a197091035 +https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_had3affe_106.conda#2d1270d283403c542680e969bea70355 +https://conda.anaconda.org/conda-forge/osx-arm64/c-blosc2-2.23.0-hf9886e1_0.conda#d834074f69cd126ef3a86100480c21e2 +https://conda.anaconda.org/conda-forge/osx-arm64/pytables-3.10.2-py313hffa1668_11.conda#49b14d6438db20b4f1276b0182285d2f https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda#4b13d1d2d5cba37be9fa3c0922bbf995 -https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda#37926bb0db8b04b8b99945076e1442d0 +https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda#648a62e4e4cf1605abf73e7f48b87d5e https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda#7702bcd70891dd0154d765a69e1afa94 https://conda.anaconda.org/conda-forge/osx-arm64/libzip-1.11.2-h1336266_0.conda#7177414f275db66735a17d316b0a81d6 https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda#ff5d749fd711dc7759e127db38005924 -https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.3-nompi_h80c4520_103.conda#926f5ea75a8e4ad5e8c026c07eab75ba +https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.3-nompi_h7a8d41e_104.conda#82a39939eb22d375750b85ed42cdbaba https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.5-py313hf5115c3_1.conda#1e6565956ac1d659613807c28e103350 https://conda.anaconda.org/conda-forge/osx-arm64/netcdf4-1.7.3-nompi_py313hb28a5cb_100.conda#0f1eeb5bd53d65bb1d49121d681d40b4 https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda#c07a6153f8306e45794774cf9b13bd32 -https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda#5bf347916a543bcb290c780fa449bf73 -https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.conda#d1461b2e63b1909f4f5b41c823bd90ae +https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda#9a4b8a37303b933b847c14a310f0557b +https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.12-h4df99d1_100.conda#3d92938d5b83c49162ade038aab58a59 https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda#aaa2a381ccc56eac91d63b6c1240312f -https://conda.anaconda.org/conda-forge/osx-arm64/polars-runtime-32-1.37.1-py310haaaf75b_0.conda#bb3c5484e1c5376846e1b406fd63a3c4 -https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda#1894d4373da653406c91e20ef89f05c8 +https://conda.anaconda.org/conda-forge/osx-arm64/polars-runtime-32-1.38.1-py310haaaf75b_0.conda#91967c125f9649be40a973c1c4b1888c +https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda#b20de145c676cbae6138ac478cdb137b https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250512.1-cxx17_hd41c47c_0.conda#360dbb413ee2c170a0a684a33c4fc6b8 https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-6.31.1-py313he4076bf_2.conda#cc34b123ea742c7102de998af889a357 -https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyh742d864_0.conda#9d2a54ab80a5cc8138b8adb1e146ac20 https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2#32bd82a6a625ea6ce090a81c3d34edeb https://conda.anaconda.org/conda-forge/osx-arm64/google-crc32c-1.8.0-py313h11ab6f4_1.conda#08e5ab1798fd9a890447baa09bb31e8f https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda#ba7f04ba62be69f9c9fef0c4487c210b @@ -276,21 +269,21 @@ https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.7.0-py313hf28abc0_ https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda#421a865222cd0c9d83ff08bc78bf3a61 https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda#18fd895e0e775622906cdabfc3cf0fb4 https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.13.3-py313h53c0e3e_0.conda#3360ba585f70b33d4976766b84bb47e7 -https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda#fa0d1dbb4ae73ca3636fe64ed0632a42 -https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda#1099a038989e7f4037d3ce21e8ee9f2c +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda#6e643ba74997c8dddbaa98fc2fc3481b +https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda#c9b8e02d974817913ab94dae12c7340b https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda#7fd8158ff94ccf28a2ac1f534989d698 https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda#48fcccc0b579087018df0afc332b8bd6 -https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda#d05f7e8724ceb2a77edf3e39cc7760bb +https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda#71aa090f8647c9b9efa63994eaa0dc18 https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar.bz2#7b6747d7cc2076341029cff659669e8b https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda#30cd29cb87d819caead4d55184c1d115 https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda#63ccfdc3a3ce25b027b8767eb722fca8 -https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda#1daaf94a304a27ba3446a306235a37ea +https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda#496c6c9411a6284addf55c898d6ed8d7 https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda#61b8078a0905b12529abc622406cb62c -https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.1-pyhcf101f3_1.conda#91e3b2a0d014ac032c066a2e18051686 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.2-pyhcf101f3_0.conda#b20e7ce9afd59036ab194f3d1e27edf5 https://conda.anaconda.org/conda-forge/osx-arm64/bottleneck-1.6.0-np2py313hc22c943_3.conda#723ed198c435622db8f57a528b9debfe -https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.1-pyhcf101f3_0.conda#8f46def45efc90f7462e476e3fdb3de0 +https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.3-pyhcf101f3_1.conda#98fd08c0fc8a9c55c463533c8cface53 https://conda.anaconda.org/conda-forge/osx-arm64/rapidfuzz-3.14.3-py313h0e822ff_1.conda#36d9057a4c1d842410e97653dbba3d68 https://conda.anaconda.org/conda-forge/osx-arm64/levenshtein-0.27.3-py313h0e822ff_0.conda#36caee8b568c12e972ffcdaf36bcc03e https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda#16933322051fa260285f1a44aae91dd6 @@ -300,76 +293,161 @@ https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.2-pyha770c72_0. https://conda.anaconda.org/conda-forge/noarch/branca-0.8.2-pyhd8ed1ab_0.conda#1fcdf88e7a8c296d3df8409bf0690db4 https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda#a6997a7dcd6673c0692c61dfeaea14ab https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda#3b9d40bef27d094e48bb1a821e86a252 -https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.7-pyhd8ed1ab_0.conda#e451a3c0ab3ad6fbe7bf83c59f0e2f9b +https://conda.anaconda.org/conda-forge/noarch/pypsa-1.1.0-pyhd8ed1ab_0.conda#d5c919eb3a7124b47dff09883443aed2 https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.14.0-pyha770c72_0.conda#385dca77a8b0ec6fa9b92cb62d09b43b https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda#72e780e9aa2d0a3295f59b1874e3768b https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda#827064ddfe0de2917fb29f1da4f8f533 https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda#55a61979242077b2cc377c74326ea9f0 https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda#080a808fce955026bf82107d955d32da -https://conda.anaconda.org/conda-forge/osx-arm64/astroid-4.0.3-py313h8f79df9_0.conda#ed65e66c8dba8992d4ae6c5c8dcc7a21 +https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 +https://conda.anaconda.org/conda-forge/osx-arm64/astroid-4.0.4-py313h8f79df9_0.conda#777c3321814ae85a2e2ee2be5fd9b4a4 https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.4-pyhcf101f3_0.conda#3a830511a81b99b67a1206a9d29b44b3 -https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda#2cfaaccf085c133a477f0a7a8657afe9 +https://conda.anaconda.org/conda-forge/noarch/wbgapi-1.0.12-pyhd8ed1ab_0.tar.bz2#a2e1ba950c0ec23e3ea0b915743a37e0 +https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.3-h2431656_0.conda#2255add2f6ae77d0a96624a5cbde6d45 +https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda#7172339b49c94275ba42fec3eaeda34f +https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h784d473_1.conda#755cfa6c08ed7b7acbee20ccbf15a47c +https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.21.0-hce30654_1.conda#c7df4b2d612208f3a27486c113b6aefc +https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.21.0-he15edb5_1.conda#cbcea547d6d831863ab0a4e164099062 +https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.2.2-hac85105_0.conda#1c52effb297c8287cc79c383428e43c4 +https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.39.0-head0a95_0.conda#ad7272a081abe0966d0297691154eda5 +https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.39.0-hfa3a374_0.conda#147a468b9b6c3ced1fccd69b864ae289 +https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda#57a511a5905caa37540eb914dfcbf1fb +https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda#fef68d0a95aa5b84b5c1a4f6f3bf40e1 +https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.2-he5ae378_0.conda#7efe92d28599c224a24de11bb14d395e +https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.12.0-he467506_1.conda#b658a3fb0fc412b2a4d30da3fcec036f +https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.16.0-hc57151b_1.conda#f08b3b9d7333dc427b79897e6e3e7f29 +https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.14.0-hf8a9d22_1.conda#601ac4f945ba078955557edf743f1f78 +https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.13.3-h810541e_1.conda#ca46cc84466b5e05f15a4c4f263b6e80 +https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.12.6-hc919400_0.conda#b759f02a7fa946ea9fd9fb035422c848 +https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.4-h16f91aa_4.conda#658a8236f3f1ebecaaa937b5ccd5d730 +https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.7-h16f91aa_5.conda#ee9ebfd7b6fdf61dd632e4fea6287c47 +https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.9.13-h6ee9776_1.conda#8baab664c541d6f059e83423d9fc5e30 +https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.23.3-hbe03c90_5.conda#c249aa1a151e319d7acd05a2e1f165d2 +https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.1-h16f91aa_9.conda#8dc111381c4c73deb8b9a529b3abee4a +https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.10.7-h5928ca5_5.conda#f12bd6066c693efba2e5886e2c70d7ba +https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.9.3-h1ddaa69_0.conda#f0cc47ecd2058f2dd65fde1a5f6528ec +https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.11.3-h8da9771_1.conda#06417cb45f131cf503d3483446cedbc3 +https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.13.3-haf5c5c8_11.conda#3fcd02361ce1427ae5968fcd532a85b4 +https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.7-h9ae9c55_1.conda#53c59e7f68bbd3754de6c8dcd4c27f86 +https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.35.4-h74951b9_0.conda#87351fb3a08425237b701c582773be1a +https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.606-h4e1b0f7_10.conda#a392fe9e9a3c6e0b65161533aca39be9 +https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-23.0.0-h585ae05_2_cpu.conda#8cbb6099377c13f1932c6a04d5da013f +https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-23.0.0-h45df96a_2_cpu.conda#605c1d25d6ea55f0d110a15cb7c95dfe +https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.0-py313h23b330d_0_cpu.conda#d12ac9817b6da9d02fdece0f0170f1fd +https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda#1a109764bff3bdc7bdd84088347d71dc +https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.22.0-h14a376c_1.conda#3161023bb2f8c152e4c9aa59bdd40975 +https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-23.0.0-hcc2992d_2_cpu.conda#7b877b0e610ca5a58a8947eadb1f6191 +https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-23.0.0-h6de58dd_2_cpu.conda#db14af88015df0dbd660a5eb814a1b23 +https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-23.0.0-h6de58dd_2_cpu.conda#3da2f4cd4f855e2bcbd668038a5fcd13 +https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-23.0.0-hb5627e6_2_cpu.conda#6b25f000c0719ee305470f62147bfdc6 +https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-23.0.0-py313h39782a4_0.conda#fc6e7ad12d5282ee9388a77857efb7d9 +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda#e9c622e0d00fa24a6292279af3ab6d06 +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda#fa31df4d4193aabccaf09ce78a187faf +https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.0-pyhd8ed1ab_0.conda#b514a7bd078dcb4520a1aea4d14c5a3a +https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda#a0a4a3035667fc34f29bfbd5c190baa6 +https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.5-py313h2c089d5_1.conda#eaeed566f6d88c0a08d73700b34be4a2 +https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c +https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda#c3946ed24acdb28db1b5d63321dbca7d +https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.29.0-pyhd8ed1ab_0.conda#36208e1c5c12f2aab4a312eff144713c +https://conda.anaconda.org/conda-forge/noarch/pandera-0.29.0-hd8ed1ab_0.conda#11a5b7d9a1d1759dedfc6cf05c37d66a +https://conda.anaconda.org/conda-forge/noarch/url-normalize-2.2.1-pyhd8ed1ab_0.conda#5db19244300bf33e9471a0b13f9b94cb +https://conda.anaconda.org/conda-forge/osx-arm64/ujson-5.11.0-py313hab38a8b_1.conda#20402be2af0775ceca6f9178cf9c3428 +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda#7ac5f795c15f288984e32add616cdc59 +https://conda.anaconda.org/conda-forge/noarch/cattrs-25.3.0-pyhd8ed1ab_0.conda#e78e411a2d5a999f2b1536f6c9481801 +https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.3.0-pyhd8ed1ab_0.conda#c992772513a6f9d329aaedca8736c173 +https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda#71bf9646cbfabf3022c8da4b6b4da737 +https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313he4f8f71_3.conda#efbd4d9fbc03317972be69883bbce470 +https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.2-pyhd8ed1ab_0.conda#4c222e160d3ef895d83a1b813310dbce +https://conda.anaconda.org/conda-forge/noarch/oda-reader-1.4.2-pyhcf101f3_0.conda#994a73ab77f617dee032b6a94bad6bf2 +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda#1c33d47dcfb2f90c80c6d2213f9d65d7 +https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda#56bfd153e523d9b9d05e4cf3c1cfe01c +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda#18de09b20462742fe093ba39185d9bac +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda#5267bef8efea4127aacd1f4e1f149b6e +https://conda.anaconda.org/conda-forge/noarch/imf-reader-1.4.1-pyhcf101f3_0.conda#13049ef4ba48cc9a8919ab6bf5eb4afe +https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda#043f0599dc8aa023369deacdb5ac24eb +https://conda.anaconda.org/conda-forge/noarch/xlwt-1.3.0-py_1.tar.bz2#deb0fb0c5977e3aa33050a9c405842a4 +https://conda.anaconda.org/conda-forge/noarch/xlsx2csv-0.8.6-pyhd8ed1ab_0.conda#87d8cdffe25acbcc4c9a974c821b5cb8 +https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda#91f5637b706492b9e418da1872fd61ce +https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.2.9-pyhd8ed1ab_0.conda#fa127b9f29f64174437524d0d61432f4 +https://conda.anaconda.org/conda-forge/noarch/tableschema-to-template-0.0.13-pyhd8ed1ab_1.conda#44bbc578da0d9d6b2f511a9280984fa1 +https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.15-py313h6688731_1.conda#ccc49acbc9df82571383070bc4591c45 +https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda#06ad944772941d5dae1e0d09848d8e49 +https://conda.anaconda.org/conda-forge/noarch/requests-file-3.0.1-pyhd8ed1ab_0.conda#e4dd2b09dc41cc3546a311531ca5d0e8 +https://conda.anaconda.org/conda-forge/noarch/ratelimit-2.2.1-pyhd8ed1ab_0.tar.bz2#3e8565b8c77205fc638ee40f5d2a2dba +https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda#53cb4b14ab0841e104e2bd11ee64b840 +https://conda.anaconda.org/conda-forge/noarch/pyphonetics-0.5.3-pyhd8ed1ab_1.conda#0f690c1b906722bf6652bf532e3ee8a5 +https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda#49647ac1de4d1e4b49124aedf3934e02 +https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda#df32eb56c2a48a5ca9465aef29dd46bc +https://conda.anaconda.org/conda-forge/noarch/ijson-3.4.0.post0-pyhd8ed1ab_0.conda#38823b779f206a231a6e6c6870bc2829 +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d +https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyhd8ed1ab_2.conda#cf25bfddbd3bc275f3d3f9936cee1dd3 +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda#83ea3a2ddb7a75c1b09cea582aa4f106 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda#6b6ece66ebcae2d5f326c77ef2c5a066 +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda#592132998493b3ff25fd7479396e8351 +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda#5b5203189eb668f042ac2b0826244964 +https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda#33950a076fd589a7655c6888cc3d2b34 +https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda#52be5139047efadaeeb19c6a5103f92a +https://conda.anaconda.org/conda-forge/noarch/typer-0.23.1-pyhcf101f3_0.conda#bac7249fa4302ee17e1ae0aa17991732 +https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-pyhd8ed1ab_2.conda#6c17c5b9a3f8cf44137bfca12e2574d7 +https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda#00cdd2e3ec6d3be6bc2b7d46470a10a1 +https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda#43e14f832d7551e5a8910672bfc3d8c6 +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda#23b4ba5619c4752976eb7ba1f5acb7e8 +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda#a4059bc12930bddeb41aef71537ffaed +https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda#4c2498dcda0d58cf25466e82f7287b32 +https://conda.anaconda.org/conda-forge/noarch/marko-2.2.2-pyhd8ed1ab_0.conda#3c3e9339e46fffba5920be28d9233860 +https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda#14c42a6334f38c412449f5a5e4043a5a +https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda#daddf757c3ecd6067b9af1df1f25d89e +https://conda.anaconda.org/conda-forge/noarch/frictionless-5.18.1-pyhd8ed1ab_1.conda#4b2cae54d84f734c32837175d8ed2459 +https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda#d73fdc05f10693b518f52c994d748c19 +https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda#3bc0ac31178387e8ed34094d9481bfe8 +https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda#2452e434747a6b742adc5045f2182a8e +https://conda.anaconda.org/conda-forge/noarch/hdx-python-utilities-4.0.6-pyh332efcf_0.conda#6736b5ff2394169e011a7bf926172d5c +https://conda.anaconda.org/conda-forge/noarch/hdx-python-country-4.1.1-pyh332efcf_0.conda#241ca19104e3d7e7d985a06c025c879d +https://conda.anaconda.org/conda-forge/noarch/pydeflate-2.3.4-pyhcf101f3_1.conda#02e7ccf24972a1637c0de86e08a169b3 https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda#003b8ba0a94e2f1e117d0bd46aebc901 -https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda#6b0259cea8ffa6b66b35bae0ca01c447 +https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.37.0-pyhcf101f3_1.conda#c4c4f99faba7174b3d99b79baf60697d https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda#eb52d14a901e23c39e9e7b4a1a5c015f -https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hc50a443_6.conda#8e87b6fff522cabf8c02878c24d44312 +https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.1.0-py313h5c29297_0.conda#43b1eb729bd1cd9ea595548eb8100b65 https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda#8bc5851c415865334882157127e75799 https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda#381bd45fb7aa032691f3063aff47e3a1 https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda#7f3ac694319c7eaf81a0325d6405e974 -https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda#91f5637b706492b9e418da1872fd61ce -https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda#53cb4b14ab0841e104e2bd11ee64b840 https://conda.anaconda.org/conda-forge/noarch/pycountry-24.6.1-pyhd8ed1ab_0.conda#62ed8c560f1b5b8d74ed11e68e9ae223 -https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda#71bf9646cbfabf3022c8da4b6b4da737 -https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313he4f8f71_3.conda#efbd4d9fbc03317972be69883bbce470 https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda#43dd16b113cc7b244d923b630026ff4f https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda#40182a8d62a61d147ec7d3e4c5c36ac2 -https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda#18de09b20462742fe093ba39185d9bac -https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda#5267bef8efea4127aacd1f4e1f149b6e -https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda#6e2b8dfbfd1b4e91f49fd13218db08d7 +https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda#1ada850380c9857f4e9f670775ec550a https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda#193a9e54636d8d70781a3e56370f5502 -https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.0-pyhd8ed1ab_0.conda#3c806a133fb9e59dca249c5a00c2ab3e -https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda#e9c622e0d00fa24a6292279af3ab6d06 -https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda#fa31df4d4193aabccaf09ce78a187faf -https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda#8b2613dbfd4e2bc9080b2779b53fc210 -https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda#a0a4a3035667fc34f29bfbd5c190baa6 -https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.5-py313h2c089d5_1.conda#eaeed566f6d88c0a08d73700b34be4a2 -https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c -https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda#c3946ed24acdb28db1b5d63321dbca7d -https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.28.1-pyhd8ed1ab_0.conda#917e71a753611d7b7bb79baf46273c5a -https://conda.anaconda.org/conda-forge/noarch/pandera-0.28.1-hd8ed1ab_0.conda#3236ebaa938b455d086f747f3541b57a -https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda#0aa03903d33997f3886be58abc890aef +https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.1-pyhd8ed1ab_0.conda#3770774486c8b9e822c6bf996da18a25 +https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda#e941e85e273121222580723010bd4fa2 https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhcf101f3_1.conda#e1bccffd88819e75729412799824e270 https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.4-py313h6535dbc_0.conda#67a85c1b5c17124eaf9194206afd5159 https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.8-py313h39782a4_0.conda#bae471007cbebf097a19e851c219d56a https://conda.anaconda.org/conda-forge/osx-arm64/libxslt-1.1.43-hb2570ba_1.conda#90f7ed12bb3c164c758131b3d3c2ab0c https://conda.anaconda.org/conda-forge/osx-arm64/lxml-6.0.2-py313he6cafaa_2.conda#fbeb15565dc7202f9dce40783d0b270d -https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf5-3.12.1-h2d8dc51_0.conda#b356e3d1c3ef181ae558c9615114113c -https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf4-3.12.1-hc515886_0.conda#ae3152198164cce944fb4f4698c9d633 -https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-netcdf-3.12.1-hd244936_0.conda#3285d660e4bbb867ea8083566c3ce080 +https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf5-3.12.2-h48d8a21_1.conda#54fc1bd391970992305aa62e753992f5 +https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf4-3.12.2-h44e20f9_1.conda#47e896a67e8246c6ef98f9dc13181ef1 +https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-netcdf-3.12.2-h4eb6350_1.conda#655acd448c73740abdb3716407a3a650 https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.9.0-pyhd8ed1ab_0.conda#2f1ed718fcd829c184a6d4f0f2e07409 https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda#7d9daffbb8d8e0af0f769dbbcd173a54 https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda#17b43cee5cc84969529d5d0b0309b2cb https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-12.1-py313h40b429f_0.conda#31a0a72f3466682d0ea2ebcbd7d319b8 https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-12.1-py313hcc5defa_0.conda#a6d28c8fc266a3d3c3dae183e25c4d31 -https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_0.conda#297e2901b530c5d321c563e66a65db99 -https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda#a7ce36e284c5faaf93c220dfc39e3abd -https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h888dc83_9.conda#26f39dfe38a2a65437c29d69906a0f68 +https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_1.conda#b70e2d44e6aa2beb69ba64206a16e4c6 +https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.18-h27ca646_1.tar.bz2#90859688dbca4735b74c02af14c4c793 +https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hebf3989_1.conda#19cff1c627ff58429701113bf35300c8 https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.1.0-py312hd65ceae_0.conda#bbd22b0f0454a5972f68a5f200643050 https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda#7526d20621b53440b0aae45d4797847e https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda#f6d7aa696c67756a650e91e15e88223c https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda#e51f1e4089cad105b6cac64bd8166587 -https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda#6b6ece66ebcae2d5f326c77ef2c5a066 https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda#8a3d6d0523f66cf004e563a50d9392b3 https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda#00f5b8dafa842e0c27c1cd7296aa4875 https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda#b11e360fc4de2b0035fc8aaa74f17fd6 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda#fd312693df06da3578383232528c468d https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 -https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d -https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda#c0d0b883e97906f7524e2aac94be0e0d -https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_0.conda#b1a27250d70881943cca0dd6b4ba0956 -https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-h5f6438b_0.conda#08a03378bc5293c6f97637323802f480 -https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyhcf101f3_1.conda#cfc86ccc3b1de35d36ccaae4c50391f5 +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda#f1acf5fdefa8300de697982bcb1761c9 +https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda#7c5ebdc286220e8021bf55e6384acd67 +https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda#f11a319b9700b203aa14c295858782b6 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.0-pyhcf101f3_0.conda#b14079a39ae60ac7ad2ec3d9eab075ca https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda#7b8bace4943e0dc345fc45938826f2b8 https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda#36de09a8d3e5d5e6f4ee63af49e59706 @@ -385,13 +463,13 @@ https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1 https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551 https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda#d3549fd50d450b6d9e7dddff25dd2110 https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda#8368d58342d0825f0843dc6acdd0c483 -https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda#f56000b36f09ab7533877e695e4e8cb0 +https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyhe01879c_0.conda#31e11c30bbee1682a55627f953c6725a https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-25.1.0-py313h6535dbc_2.conda#e23e087109b2096db4cf9a3985bab329 https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda#8ac12aff0860280ee0cff7fa2cf63f3b https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda#d79a87dcfa726bcea8e61275feed6f83 https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda#e7f89ea5f7ea9401642758ff50a2d9c1 https://conda.anaconda.org/conda-forge/noarch/json5-0.13.0-pyhd8ed1ab_0.conda#8d5f66ebf832c4ce28d5c37a0e76605c -https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda#0a01c169f0ab0f91b26e77a3301fbfe4 +https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda#ea5be9abc2939c8431893b4e123a2065 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.28.0-pyhcf101f3_0.conda#a63877cb23de826b1620d3adfccc4014 https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda#62b7c96c6cd77f8173cc5cada6a9acaa https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda#598fd7d4d0de2455fb74f56063969a97 @@ -400,20 +478,20 @@ https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda#ff9efb7f7469aed3c4a8106ffa29593c https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda#9673a61a297b00016442e022d689faa6 https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda#b1b505328da7a6b246787df4b5a49fbc -https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.4.0-pyhd8ed1ab_0.conda#cba8aff819d6eec578c9994f6eb58934 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda#c3197f8c0d5b955c904616b716aca093 https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda#edb16f14d920fb3faf17f5ce582942d6 https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda#d0d408b1f18883a944376da5cf8101ea -https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda#a110716cdb11cf51482ff4000dc253d7 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.6-pyhcf101f3_0.conda#97c1ce2fffa1209e7afb432810ec6e12 https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda#a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda#bd80ba060603cc228d9d81c257093119 https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda#9ce473d1d1be1cc3810856a48b3fab32 -https://conda.anaconda.org/conda-forge/noarch/ipython-9.9.0-pyh53cf698_0.conda#8481978caa2f108e6ddbf8008a345546 -https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.19-py313hc37fe24_0.conda#95287e5abbe8a588d2a8d234f3d591a7 +https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyh53cf698_0.conda#441ca4e203a62f7db2f29f190c02b9cf +https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.20-py313h1188861_0.conda#b3a832c19cfa5dfcce7575750ef693ed https://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda#2da13f2b299d8e1995bafbbe9689a2f7 https://conda.anaconda.org/conda-forge/noarch/appnope-0.1.4-pyhd8ed1ab_1.conda#54898d0f524c9dee622d44bbb081a8ab -https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.1.0-pyh5552912_0.conda#1849eec35b60082d2bd66b4e36dec2b6 +https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyh5552912_1.conda#4b53d436f3fbc02ce3eeaf8ae9bebe01 https://conda.anaconda.org/conda-forge/noarch/async-lru-2.1.0-pyhcf101f3_0.conda#04d2e5fba67e5a1ecec8e25d6c769004 -https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.3-pyhd8ed1ab_0.conda#106f4e36e14797b9c2abfc3849d9e92f +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.4-pyhd8ed1ab_0.conda#b555f252a0796e00ce9d8ec318196da7 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda#c85c76dc67d75619a92f51dfbce06992 https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.3-pyhcf101f3_0.conda#94a5f0cee51b6b0ffdcad0af6db0af18 https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.52-hd8ed1ab_0.conda#6d034d3a6093adbba7b24cb69c8c621e @@ -426,7 +504,7 @@ https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda#9 https://conda.anaconda.org/conda-forge/osx-arm64/jpype1-1.6.0-py313hc50a443_1.conda#c6c8d3609ddbc205c034aef2916bbd38 https://conda.anaconda.org/gurobi/osx-arm64/gurobi-13.0.1-py313_0.conda#3e8d8636f437265c21d54a85a3f39108 https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda#5103f6a6b210a3912faf8d7db516918c -https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.86.3-hfe11c1f_0.conda#057c7247514048ebdaf89373b263ebee +https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.86.4-he378b5c_0.conda#2d02b60ec23066e45c578c1524e9ca12 https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.14-hec049ff_2.conda#0fc46fee39e88bbcf5835f71a9d9a209 https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h81086ad_1.conda#17c3d745db6ea72ae2fce17e7338547f https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda#49023d73832ef61042f6a237cb2687e7 @@ -435,17 +513,17 @@ https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed3 https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda#a7970cd949a077b7cb9696379d338681 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab -https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda#7b29f48742cea5d1ccb5edd839cb5621 +https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.17.1-h2b252f5_0.conda#d06ae1a11b46cc4c74177ecd28de7c7a https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-he0f2337_1.conda#36200ecfbbfbcb82063c87725434161f -https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-12.3.0-h3103d1b_0.conda#37697784e23febce8eecb9c8e2554079 +https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-12.3.2-h3103d1b_0.conda#d0af4858d81c0c7abddc6b71fd8c0340 https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.16-hc919400_0.conda#04bdce8d93a4ed181d1d726163c2d447 https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda#7d57f8b4b7acfc75c777bc231f0d31be -https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.4-h7542897_0.conda#0b349c0400357e701cf2fa69371e5d39 -https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.60.0-h5c55ec3_0.conda#05ad1d6b6fb3b384f7a07128025725cb +https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.5-h5a2fd1c_0.conda#72f87ce242847d6ab9568ef438330e07 +https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.60.0-h9001022_1.conda#b6c81d5b3324b9ff9fe8f39d25d8be66 https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-h05bcc79_12.conda#fa4a92cfaae9570d89700a292a9ca714 https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda#21b4dd3098f63a74cf2aa9159cbef57d https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2#237b05b7eb284d7eebc3c5d93f5e4bca -https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.86.3-hb9d6e3a_0.conda#07cf8a6e2d3f9c25ee3f123bf955b34b +https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.86.4-h60c1bae_0.conda#fbffb85901084131bcc8b0592bbe39e5 https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-hc919400_2.conda#3b87dabebe54c6d66a07b97b53ac5874 https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda#57301986d02d30d6805fdce6c99074ee https://conda.anaconda.org/conda-forge/osx-arm64/gtk3-3.24.43-h5febe37_6.conda#a99f96906158ebae5e3c0904bcd45145 @@ -453,7 +531,6 @@ https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.con https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-14.1.2-hec8c438_0.conda#1f3d859de3ca2bcaa845e92e87d73660 https://conda.anaconda.org/conda-forge/osx-arm64/glpk-5.0-h6d7a090_0.tar.bz2#02b868940101a06a6365c109ab1a94fe https://conda.anaconda.org/conda-forge/noarch/geojson-3.2.0-pyhd8ed1ab_0.conda#9f9840fb1c2e009fb0009a2f9461e64a -https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.10.1-py313h7df67bf_6.conda#dc81b108af52deb655ea85f9b745f7e2 https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-pyhd8ed1ab_5.conda#4a25cae637029c5589135903aa15b3b6 https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.1.2-py313ha61f8ec_1.conda#78bc73f3c5e84b432cdea463ea4e953e https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda#5498feb783ab29db6ca8845f68fa0f03 @@ -465,47 +542,9 @@ https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda#7 https://conda.anaconda.org/conda-forge/osx-arm64/h5py-3.15.1-nompi_py313h7aa1c8b_101.conda#af275e004ef52480fccdde18f4bdcd12 https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda#ca7f9ba8762d3e360e47917a10e23760 https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda#cc73a9bd315659dc5307a5270f44786f -https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.34-pyhd8ed1ab_0.conda#54bcb8039fe8f63c9990afe552df4fdc +https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.51-pyhd8ed1ab_0.conda#f2350b60476eeafb5d044603a9bb0018 https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.16.0-pyhd8ed1ab_0.conda#061b5affcffeef245d60ec3007d1effd -https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.34-pyhd8ed1ab_0.conda#8461fcbfd947f60cabe4719fb3a55189 -https://conda.anaconda.org/conda-forge/osx-arm64/libutf8proc-2.11.3-h2431656_0.conda#2255add2f6ae77d0a96624a5cbde6d45 -https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda#7172339b49c94275ba42fec3eaeda34f -https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.12.0-h784d473_1.conda#755cfa6c08ed7b7acbee20ccbf15a47c -https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.21.0-hce30654_1.conda#c7df4b2d612208f3a27486c113b6aefc -https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.21.0-he15edb5_1.conda#cbcea547d6d831863ab0a4e164099062 -https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.2.2-hac85105_0.conda#1c52effb297c8287cc79c383428e43c4 -https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.39.0-head0a95_0.conda#ad7272a081abe0966d0297691154eda5 -https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.39.0-hfa3a374_0.conda#147a468b9b6c3ced1fccd69b864ae289 -https://conda.anaconda.org/conda-forge/osx-arm64/gflags-2.2.2-hf9b8971_1005.conda#57a511a5905caa37540eb914dfcbf1fb -https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda#fef68d0a95aa5b84b5c1a4f6f3bf40e1 -https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.1-h88fedcc_0.conda#fbe485a39b05090c0b5f8bb4febcd343 -https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.12.0-ha416c23_0.conda#327799f2eb655ddf596b3e0ba2658979 -https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.16.0-h6507aac_0.conda#ebcb072935c1595c39e2c62f0d3e50cc -https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.14.0-hcfc4f22_0.conda#a49804e4c4ad182a8de7b251d77f3b0c -https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.13.2-h853621b_1.conda#fac63edc393d7035ab23fbccdeda34f4 -https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-common-0.12.6-hc919400_0.conda#b759f02a7fa946ea9fd9fb035422c848 -https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-sdkutils-0.2.4-h16f91aa_4.conda#658a8236f3f1ebecaaa937b5ccd5d730 -https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.7-h16f91aa_5.conda#ee9ebfd7b6fdf61dd632e4fea6287c47 -https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-cal-0.9.13-h6ee9776_1.conda#8baab664c541d6f059e83423d9fc5e30 -https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-io-0.23.3-hbe03c90_5.conda#c249aa1a151e319d7acd05a2e1f165d2 -https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-compression-0.3.1-h16f91aa_9.conda#8dc111381c4c73deb8b9a529b3abee4a -https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-http-0.10.7-h5928ca5_5.conda#f12bd6066c693efba2e5886e2c70d7ba -https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-auth-0.9.3-h1ddaa69_0.conda#f0cc47ecd2058f2dd65fde1a5f6528ec -https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-s3-0.11.3-h8da9771_1.conda#06417cb45f131cf503d3483446cedbc3 -https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-mqtt-0.13.3-haf5c5c8_11.conda#3fcd02361ce1427ae5968fcd532a85b4 -https://conda.anaconda.org/conda-forge/osx-arm64/aws-c-event-stream-0.5.7-h9ae9c55_1.conda#53c59e7f68bbd3754de6c8dcd4c27f86 -https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.35.4-h74951b9_0.conda#87351fb3a08425237b701c582773be1a -https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.606-h4e1b0f7_10.conda#a392fe9e9a3c6e0b65161533aca39be9 -https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-23.0.0-h4365f54_0_cpu.conda#4cabd181be9d09c0f89150d8ace35bbe -https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-23.0.0-h45df96a_0_cpu.conda#2e789cb0973deba788f9d349a9d1b494 -https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.0-py313hfb690af_0_cpu.conda#17395366e9516f9663f0c1a9342feb2a -https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda#1a109764bff3bdc7bdd84088347d71dc -https://conda.anaconda.org/conda-forge/osx-arm64/libthrift-0.22.0-h14a376c_1.conda#3161023bb2f8c152e4c9aa59bdd40975 -https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-23.0.0-hcc2992d_0_cpu.conda#fe86c75e6da6eb1b34f7d75935e3767b -https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-23.0.0-h6de58dd_0_cpu.conda#6adb634c0d1fea4834910a76b42388e8 -https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-23.0.0-h6de58dd_0_cpu.conda#d2f5c4e548556c58eff3691eb1e70907 -https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-23.0.0-hb5627e6_0_cpu.conda#16bc8883988ca21cddf7e8efe7479e76 -https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-23.0.0-py313h39782a4_0.conda#fc6e7ad12d5282ee9388a77857efb7d9 +https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.50-pyhd8ed1ab_0.conda#65465c189c38fc262c009faa98825cea https://conda.anaconda.org/conda-forge/noarch/arcosparse-0.4.2-pyhd8ed1ab_0.conda#9a005ba5f540619a1343587b4ee3d95e https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.3.0-pyhd8ed1ab_0.conda#9e18b048c69d2d72bc69d120a435d731 https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda#c138c7aaa6a10b5762dcd92247864aff @@ -520,9 +559,9 @@ https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda#e52c https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda#f88bb644823094f436792f80fba3207e https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda#0401a17ae845fa72c7210e206ec5647d https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-1.1.0-py313h6535dbc_1.conda#cfd9eda010114a19249e394e58704cdb -https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.1-pyhcf101f3_1.conda#c15e359a982395be86a7576a91f9c5f5 +https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_0.conda#1eac93a6257796dd348d366a85f7f283 https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda#0b830ba4947de6d60dd9d96827a1cacb -https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.1-pyhcf101f3_0.conda#a86541105aa7920d2147d48bf370dc08 +https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_0.conda#f438bd6e7ce6b4d442789f77d3fc7818 https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda#fa9e9ec7bf26619a8edd3e11155f15d6 https://conda.anaconda.org/conda-forge/osx-arm64/jasper-4.2.8-hc0e5025_0.conda#54d2328b8db98729ab21f60a4aba9f7c https://conda.anaconda.org/conda-forge/osx-arm64/eccodes-2.45.0-h768f3a7_0.conda#73c9f89679eb90386f2787e7681e95b7 diff --git a/envs/default_win-64.pin.txt b/envs/default_win-64.pin.txt index 2af91d0958..07800879b9 100644 --- a/envs/default_win-64.pin.txt +++ b/envs/default_win-64.pin.txt @@ -5,31 +5,28 @@ https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_34.conda#242d9f25d2ae60c76b38a5e42858e51d https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_34.conda#37eb311485d2d8b2c419449582046a42 https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_34.conda#1e610f2416b6acdd231c5f573d754a0f -https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.2-hfd05255_0.conda#ba0bfd4c3cf73f299ffe46ff0eaeb8e3 -https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.8.2-hfd05255_0.conda#4ceff37d9a69e86daa8b94acfe448186 -https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.8.2-hfd05255_0.conda#8ff636be3b5f0e935649803a2d6eeeff -https://conda.anaconda.org/conda-forge/win-64/xz-5.8.2-hb6c8415_0.conda#5cab33f097ff61c7c8c31146b5b8d35a https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda#ad659d0a2b3e47e38d829aa8cad2d610 -https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_3.conda#7cb36e506a7dba4817970f8adb6396f9 +https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h6ed50ae_3.conda#0481bfd9814bf525bd4b3ee4b51494c4 https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda#94305520c52a4aa3f6c2b1ff6008d9f8 https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-h4c7d964_0.conda#84d389c9eee640dda3d26fc5335c67d8 -https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda#84f8fb4afd1157f59098f618cd2437e4 +https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.1-hf411b9b_1.conda#eb585509b815415bc964b2c7e11c7eb3 https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda#41fbfac52c601159df6c01f875de31b9 https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.51.2-hf5d6505_0.conda#903979414b47d777d548e5f0165e6cd8 -https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda#74860100b2029e2523cf480804c76b9b -https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h52bdfb6_0.conda#ba4ad812d2afc22b9a34ce8327a0930f -https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.3-hac47afa_0.conda#8c9e4f1a0e688eef2e95711178061a0f -https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda#1077e9333c41ff0be8edd1a5ec0ddace -https://conda.anaconda.org/conda-forge/win-64/python-3.13.0-hf5aa216_101_cp313.conda#158d6077a635cf0c0c23bec3955a4833 +https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-hfd05255_1.conda#e4a9fc2bba3b022dad998c78856afe47 +https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.2-hfd05255_0.conda#ba0bfd4c3cf73f299ffe46ff0eaeb8e3 +https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h3d046cb_0.conda#720b39f5ec0610457b725eb3f396219a +https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.4-hac47afa_0.conda#1c1ced969021592407f16ada4573586d +https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_9.conda#4cb8e6b48f67de0b018719cdf1136306 +https://conda.anaconda.org/conda-forge/win-64/python-3.13.12-h09917c8_100_cp313.conda#4440c24966d0aa0c8f1e1d5006dac2d6 https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda#962b9857ee8e7018c22f2776ffa0b2d7 -https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda#9efbfdc37242619130ea42b1cc4ed861 +https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyha7b4d00_0.conda#af77160f8428924c17db94e04aa69409 https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda#9d64911b31d57ca443e9f1e36b04385f https://conda.anaconda.org/conda-forge/win-64/libblas-3.11.0-7_h6c93730_netlib.conda#b6e60216c858abd007ecb07a61d34893 https://conda.anaconda.org/conda-forge/win-64/liblapack-3.11.0-7_h018ca30_netlib.conda#2e2b680a6d0b0b58b94b4ffdf8a76b5b https://conda.anaconda.org/conda-forge/win-64/libcblas-3.11.0-7_hc41557d_netlib.conda#a3201147bbcbbed12d51bacad285e8c4 -https://conda.anaconda.org/conda-forge/win-64/numpy-2.4.1-py313hce7ae62_0.conda#2490cec55c24dbf3d3be2da6b61a6646 +https://conda.anaconda.org/conda-forge/win-64/numpy-2.4.2-py313hce7ae62_1.conda#7db4fcf0a8a985d3f15270ddc7ac0aac https://conda.anaconda.org/conda-forge/win-64/scipy-1.17.0-py313he51e9a2_1.conda#b54fb98c96446df58e04957b6c98520e -https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda#cb72cedd94dd923c6a9405a3d3b1c018 +https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda#1d00d46c634177fc8ede8b99d6089239 https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda#615de2a4d97af50c350e5cf160149e77 https://conda.anaconda.org/conda-forge/win-64/scikit-learn-1.8.0-np2py313h4ce4a18_1.conda#1a636c8e6f5b92fca019972db0ed348e https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda#fd5062942bfa1b0bd5e0d2a4397b099e @@ -40,15 +37,14 @@ https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda#3339 https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda#5b8d21249ff20967101ffa321cab24e8 https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py313hc90dcd4_2.conda#cbac92ffc6114c9660218136c65878b4 https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda#a2c1eeadae7a309daed9d62c96012a2b -https://conda.anaconda.org/conda-forge/win-64/highspy-1.12.0-np2py313h776c0ec_0.conda#285e57df4d9f89d593a534fe528327b8 -https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.9-pyhd8ed1ab_0.conda#2b661fd7a718757b2e91bbcac81deb48 -https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda#5d99943f2ae3cc69e1ada12ce9d4d701 +https://conda.anaconda.org/conda-forge/win-64/highspy-1.13.1-np2py313h776c0ec_0.conda#e55bcb68478bbcb2ac075e67c1041b38 +https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.1-pyhd8ed1ab_0.conda#ed5f5e0cbc50f05631813b0d48021de1 https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda#053b84beec00b71ea8ff7a4f84b55207 https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda#12c566707c80111f9799308d9e265aef https://conda.anaconda.org/conda-forge/win-64/cffi-2.0.0-py313h5ea7bf4_1.conda#55b44664f66a2caf584d72196aa98af9 https://conda.anaconda.org/conda-forge/win-64/zstandard-0.25.0-py313h5fd188c_1.conda#46f6f9bb324a58a9b081bbc56ade37f2 https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda#0caa1af407ecff61170c9437a808404d -https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.2-pyhd8ed1ab_0.conda#bdb8608d3b834159b1b684dc6df3ac44 +https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.3-pyhd8ed1ab_0.conda#c97b99b1f4f76708edbe7b5811d95da9 https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py313h5ea7bf4_1.conda#3e199c8db04833fe628867462aeaca24 https://conda.anaconda.org/conda-forge/noarch/throttler-1.2.2-pyhd8ed1ab_0.conda#6fc48bef3b400c82abaee323a9d4e290 https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda#58335b26c38bf4a20f399384c33cbcf9 @@ -69,22 +65,22 @@ https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda#53abe https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda#a22d1fd9bf98827e280a02875d9a007a https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda#eacc711330cd46939f66cd401ff9c44b https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda#c65df89a0b2e321045a9e01d1337b182 -https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda#84c5c40ea7c5bbc6243556e5daed20e7 -https://conda.anaconda.org/conda-forge/win-64/cryptography-46.0.3-py313hf5c5e30_1.conda#5349b57b1b430a7437345ba1c48ce502 +https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda#f9517d2fe1501919d7a236aba73409bb +https://conda.anaconda.org/conda-forge/win-64/cryptography-46.0.5-py313hf5c5e30_0.conda#198a8d301501a620273ef05250e7213c https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda#42834439227a4551b939beeeb8a4b085 https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.3.1-pyhd8ed1ab_0.conda#d4f3f31ee39db3efecb96c0728d4bdbf https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda#a55b220de8970208f583e38639cfbecc https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-http-0.3.0-pyhdfd78af_0.tar.bz2#269943ac6637718947763b4f989710fc -https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda#1bd2e65c8c7ef24f4639ae6e850dacc2 +https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda#4fefefb892ce9cc1539405bec2f1a6cd https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda#03fe290994c5e4ec17293cfb6bdce520 https://conda.anaconda.org/conda-forge/noarch/h11-0.16.0-pyhcf101f3_1.conda#b8993c19b0c32a2f7b66cbb58ca27069 https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda#8e662bd460bda79b1ea39194e3c4c9ab https://conda.anaconda.org/conda-forge/noarch/anyio-4.12.1-pyhcf101f3_0.conda#11a2b8c732d215d977998ccd69a9d5e8 https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda#4f14640d58e2cc0aa0819d9d8ba125bb https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda#d6989ead454181f4f9bc987d3dc4e285 -https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.2.1-pyhdfd78af_0.conda#f50f82ac51409fd0dc75a20a9f6930ea +https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.3-pyhdfd78af_0.conda#15fe83cb157467c0c85c375f56abf199 https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h6a83c73_3.conda#433699cba6602098ae8957a323da2664 -https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py313hd650c13_0.conda#c067122d76f8dcbe0848822942ba07be +https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py313hd650c13_1.conda#c1bdb8dd255c79fb9c428ad25cc6ee54 https://conda.anaconda.org/conda-forge/noarch/dpath-2.2.0-pyha770c72_1.conda#7b2af124684a994217e62c641bca2e48 https://conda.anaconda.org/conda-forge/noarch/yte-1.9.4-pyhd8ed1ab_0.conda#89d5edf5d52d3bc1ed4d7d3feef508ba https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhcf101f3_3.conda#de98449f11d48d4b52eefb354e2bfe35 @@ -94,9 +90,9 @@ https://conda.anaconda.org/bioconda/noarch/snakemake-interface-logger-plugins-1. https://conda.anaconda.org/bioconda/noarch/snakemake-interface-executor-plugins-9.3.9-pyhdfd78af_0.tar.bz2#e75b9c422bcc3c9b52679dedb84f3b71 https://conda.anaconda.org/conda-forge/noarch/smart_open-7.5.0-pyhcf101f3_0.conda#9d1659c8332e9822e347e115e6bb4d0c https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda#64571d1dd6cdcfa25d0664a5950fdaa2 -https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda#8579b6bb8d18be7c0b27fb08adeeeb40 -https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.1-h06f855e_0.conda#4a5ea6ec2055ab0dfd09fd0c498f834a -https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.1-ha29bfb0_0.conda#87116b9de9c1825c3fd4ef92c984877b +https://conda.anaconda.org/conda-forge/win-64/icu-78.2-h637d24d_0.conda#0ee3bb487600d5e71ab7d28951b2016a +https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.1-h3cfd58e_1.conda#07d73826fde28e7dbaec52a3297d7d26 +https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.1-h779ef1b_1.conda#68dc154b8d415176c07b6995bd3a65d9 https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_10.conda#8a86073cf3b343b87d03f41790d8b4e5 https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.12.2-default_h4379cf1_1000.conda#3b576f6860f838f950c570f4433b086e https://conda.anaconda.org/conda-forge/win-64/tbb-2022.3.0-h3155e25_2.conda#0f9817ffbe25f9e69ceba5ea70c52606 @@ -111,7 +107,7 @@ https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda#d6bd3cd217e62bbd7efe67ff224cd667 https://conda.anaconda.org/conda-forge/noarch/amply-0.1.6-pyhd8ed1ab_1.conda#5a81866192811f3a0827f5f93e589f02 https://conda.anaconda.org/conda-forge/win-64/pulp-2.8.0-py313h4a748c7_3.conda#47d9509c36da375882e1a9fb6cd9e16c -https://conda.anaconda.org/conda-forge/win-64/psutil-7.2.1-py313h5fd188c_0.conda#8732097a02c66f6b260dd15b705a014e +https://conda.anaconda.org/conda-forge/win-64/psutil-7.2.2-py313h5fd188c_0.conda#761b299a6289c77459defea3563f8fc0 https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda#019a7385be9af33791c989871317e1ed https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda#23029aae904a2ba587daba708208012f https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py313h40c08fc_1.conda#1ce4f826332dca56c76a5b0cc89fb19e @@ -133,12 +129,10 @@ https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.cond https://conda.anaconda.org/conda-forge/noarch/connection_pool-0.0.3-pyhd3deb0d_0.tar.bz2#e270fff08907db8691c02a0eda8d38ae https://conda.anaconda.org/conda-forge/noarch/conda-inject-1.3.2-pyhd8ed1ab_0.conda#e52c2a160d6bd0649c9fafdf0c813357 https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda#f4e90937bbfc3a4a92539545a37bb448 -https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.15.0-pyhdfd78af_0.conda#71856e8d31fc4396cb4b3b57c9e7fb83 +https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.16.3-pyhdfd78af_0.conda#d5ff394122607ae4b0ee8362f6225959 https://conda.anaconda.org/bioconda/noarch/snakemake-logger-plugin-pypsa-0.1.0-pyhdfd78af_0.conda#1a318ca1376d0cd58aa85e3857b08520 https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-cluster-generic-1.0.9-pyhdfd78af_0.tar.bz2#9b1db7127119f513696d620eefe7bf67 -https://conda.anaconda.org/conda-forge/win-64/ruff-0.14.14-h37e10c4_0.conda#71ce782c4c2500ca027ef35b6c0ae211 -https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.15-py313h5fd188c_1.conda#de2843db9e03bb36fcfab5ca74d4679b -https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda#06ad944772941d5dae1e0d09848d8e49 +https://conda.anaconda.org/conda-forge/win-64/ruff-0.15.1-h213852a_0.conda#4a704d342fc4836fed79c7f9a69addf1 https://conda.anaconda.org/conda-forge/noarch/xarray-2025.6.1-pyhd8ed1ab_1.conda#145c6f2ac90174d9ad1a2a51b9d7c1dd https://conda.anaconda.org/conda-forge/noarch/snuggs-1.4.7-pyhd8ed1ab_2.conda#9aa358575bbd4be126eaa5e0039f835c https://conda.anaconda.org/conda-forge/win-64/sqlite-3.51.2-hdb435a2_0.conda#bc9265bd9f30f9ded263cb762a4fc847 @@ -149,60 +143,62 @@ https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.1-h8f73337_1.conda#549 https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-h9aa295b_0.conda#9dce2f112bfd3400f4f432b3d0ac07b2 https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda#31aec030344e962fbd7dbbbbd68e60a9 https://conda.anaconda.org/conda-forge/win-64/libcurl-8.18.0-h43ecb02_0.conda#2688214a9bee5d5650cd4f5f6af5c8f2 -https://conda.anaconda.org/conda-forge/win-64/proj-9.7.1-hd30e2cd_2.conda#0a127152bc983e99981b50d44ac4a092 +https://conda.anaconda.org/conda-forge/win-64/proj-9.7.1-hd30e2cd_3.conda#f2b0478a02d35bac5b872d4d63b96be3 https://conda.anaconda.org/conda-forge/win-64/xerces-c-3.3.0-hac47afa_1.conda#d1097e01041cfed41c81f1e3d1f52572 -https://conda.anaconda.org/conda-forge/win-64/pcre2-10.46-h3402e2f_0.conda#889053e920d15353c2665fa6310d7a7a +https://conda.anaconda.org/conda-forge/win-64/pcre2-10.47-hd2b5f0e_0.conda#77eaf2336f3ae749e712f63e36b0f0a1 https://conda.anaconda.org/conda-forge/win-64/muparser-2.3.5-he0c23c2_0.conda#013aabb169d59009bdf7d70319360e9b https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.10.0-h2466b09_1.conda#0b69331897a92fac3d8923549d48d092 https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda#f9bbae5e2537e3b06e0f7310ba76c893 https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda#be60c4e8efa55fddc17b4131aa47acbd -https://conda.anaconda.org/conda-forge/win-64/libxml2-devel-2.15.1-ha29bfb0_0.conda#11767c61201ec4eaeb8555532355fe4f +https://conda.anaconda.org/conda-forge/win-64/libxml2-devel-2.15.1-h779ef1b_1.conda#83b2850ed45d2d66ac89e5cf2465cb43 https://conda.anaconda.org/conda-forge/win-64/geos-3.14.1-hdade9fe_0.conda#8c75d7e401a4d799ce8d4bb922320967 https://conda.anaconda.org/conda-forge/win-64/librttopo-1.1.0-haa95264_20.conda#7eeb5aed49853f8b3e1ca0463ef55a8e https://conda.anaconda.org/conda-forge/win-64/minizip-4.0.10-h9fa1bad_0.conda#2ffdc180adc65f509e996d63513c04b7 https://conda.anaconda.org/conda-forge/win-64/freexl-2.0.0-hf297d47_2.conda#d6a8059de245e53478b581742b53f71d https://conda.anaconda.org/conda-forge/win-64/libspatialite-5.1.0-gpl_h0cd62ae_119.conda#c0eeff876d19f52efddccbd4887bb66f -https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.54-h7351971_0.conda#638ecb69e44b6a588afd5633e81f9e61 +https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.55-h7351971_0.conda#43f47a9151b9b8fc100aeefcf350d1a0 https://conda.anaconda.org/conda-forge/win-64/uriparser-0.9.8-h5a68840_0.conda#28b4cf9065681f43cc567410edf8243d https://conda.anaconda.org/conda-forge/win-64/libkml-1.3.0-h68a222c_1022.conda#6800434a33b644e46c28ffa3ec18afb1 https://conda.anaconda.org/conda-forge/win-64/libhwy-1.3.0-ha71e874_1.conda#f4649d4b6bf40d616eda57d6255d2333 https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.2.0-hfd05255_1.conda#444b0a45bbd1cb24f82eedb56721b9c4 https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.2.0-hfd05255_1.conda#ccd93cfa8e54fd9df4e83dbe55ff6e8c https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.2.0-hfd05255_1.conda#450e3ae947fc46b60f1d8f8f318b40d4 -https://conda.anaconda.org/conda-forge/win-64/libjxl-0.11.1-hf3f85d1_8.conda#60ca4943052b9634a92d841e1860b8d6 +https://conda.anaconda.org/conda-forge/win-64/libjxl-0.11.2-hf3f85d1_0.conda#869e71fcf2135212c51a96f7f7dbd00d https://conda.anaconda.org/conda-forge/win-64/lzo-2.10-h6a83c73_1002.conda#c5cb4159f0eea65663b31dd1e49bbb71 https://conda.anaconda.org/conda-forge/win-64/libarchive-3.8.5-gpl_he24518a_100.conda#8bb7102705dba973b3930c4b6094b257 https://conda.anaconda.org/conda-forge/win-64/snappy-1.2.2-h7fa0ca8_1.conda#3075846de68f942150069d4289aaad63 https://conda.anaconda.org/conda-forge/win-64/blosc-1.21.6-hfd34d9b_1.conda#357d7be4146d5fec543bfaa96a8a40de -https://conda.anaconda.org/conda-forge/win-64/libgdal-core-3.11.5-h9732b15_0.conda#be76c1e1814d584fab99d4828cd25da6 +https://conda.anaconda.org/conda-forge/win-64/libgdal-core-3.12.2-h9774fe2_1.conda#9f22154b122af399b220678d35edcc9d https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh7428d3b_0.conda#90e5571556f7a45db92ee51cb8f97af6 https://conda.anaconda.org/conda-forge/noarch/cligj-0.7.2-pyhd8ed1ab_2.conda#55c7804f428719241a90b152016085a1 https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda#e9b05deb91c013e5224672a4ba9cf8d1 https://conda.anaconda.org/conda-forge/noarch/affine-2.4.0-pyhd8ed1ab_1.conda#8c4061f499edec6b8ac7000f6d586829 -https://conda.anaconda.org/conda-forge/win-64/rasterio-1.4.4-py313hfe0960c_1.conda#1b53c63748336fca73e36abbaebe2ee8 +https://conda.anaconda.org/conda-forge/win-64/rasterio-1.5.0-py313h1ced589_0.conda#05a494f768c611dd1ba42ead4556e453 https://conda.anaconda.org/conda-forge/win-64/pyproj-3.7.2-py313h24787ba_2.conda#b0093312a3b115bd033e74aa92bea3a1 -https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_1.conda#e7e37bf890147fa5d7892812a6dd3888 +https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.21.0-pyhcf101f3_1.conda#a0811eb1142b4da29162d1931922a1ec +https://conda.anaconda.org/conda-forge/win-64/simplejson-3.20.2-py313h5ea7bf4_1.conda#bcdc4785e018f4325845f8217333a17e +https://conda.anaconda.org/conda-forge/win-64/shapely-2.1.2-py313h64ccc5a_2.conda#89e833ece06dd9d0c0a46d74d1125bf6 +https://conda.anaconda.org/conda-forge/win-64/fiona-1.10.1-py313h8b19803_6.conda#c048daef67f2a62c12200e6c4f1ad688 +https://conda.anaconda.org/conda-forge/noarch/rasterstats-0.20.0-pyhd8ed1ab_2.conda#a6762dbfc4cf7084adf09f0accdf0f8a https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2#0c14e44bc93a99cdc11398311c3c0dcf https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda#083725d6cd3dc007f06d04bcf1e613a2 -https://conda.anaconda.org/conda-forge/win-64/libgomp-15.2.0-h8ee18e1_16.conda#ab8189163748f95d4cb18ea1952943c3 -https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda#37e16618af5c4851a3f3d66dd0e11141 -https://conda.anaconda.org/conda-forge/win-64/libgcc-15.2.0-h8ee18e1_16.conda#1edb8bd8e093ebd31558008e9cb23b47 +https://conda.anaconda.org/conda-forge/win-64/libgomp-15.2.0-h8ee18e1_18.conda#939fb173e2a4d4e980ef689e99b35223 +https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-20_gnu.conda#1626967b574d1784b578b52eaeb071e7 +https://conda.anaconda.org/conda-forge/win-64/libgcc-15.2.0-h8ee18e1_18.conda#b085746891cca3bd2704a450a7b4b5ce https://conda.anaconda.org/conda-forge/win-64/gmp-6.3.0-hfeafd45_2.conda#74558de25a206a7dff062fd4f5ff2d8b https://conda.anaconda.org/conda-forge/win-64/mpfr-4.2.1-hbc20e70_3.conda#9714a8ef685435ac5437defa415ffc5c https://conda.anaconda.org/conda-forge/win-64/libboost-1.88.0-h9dfe17d_7.conda#e13bc25d81b0132a0c51eb5cc179b0e9 https://conda.anaconda.org/conda-forge/win-64/llvm-openmp-21.1.8-h4fa8253_0.conda#0d8b425ac862bcf17e4b28802c9351cb -https://conda.anaconda.org/conda-forge/win-64/mumps-seq-5.8.1-hd297af6_4.conda#69feddba6b736c7ef62f7384a0aeeadc +https://conda.anaconda.org/conda-forge/win-64/mumps-seq-5.8.2-h607cc0b_1.conda#6bdd3a1f02ad45955526b4a22cfcfc4a https://conda.anaconda.org/conda-forge/win-64/ampl-asl-1.0.0-he0c23c2_2.conda#6cd7240c925d0ba5b9aee6ea1b566d87 -https://conda.anaconda.org/conda-forge/win-64/ipopt-3.14.19-h75e447d_1.conda#82a54b93381f739b6e0b2c3c4080c11e -https://conda.anaconda.org/conda-forge/win-64/cppad-20250000.2-he0c23c2_0.conda#361eebebba4a822962a5e11870958c02 -https://conda.anaconda.org/conda-forge/win-64/scip-9.2.4-h4cfe319_1.conda#fc88111b32c3f6a87478f821eaad3844 -https://conda.anaconda.org/conda-forge/win-64/pyscipopt-5.6.0-py313hfe59770_1.conda#25a0d82f77870227605b448edfe7cc3d +https://conda.anaconda.org/conda-forge/win-64/ipopt-3.14.19-he5a0f77_2.conda#5133f79da4d0ec982733acfcb3c03e97 +https://conda.anaconda.org/conda-forge/win-64/scip-10.0.1-h6f1fe5b_0.conda#2316a278ca8b0c52a7a083b7465757e5 +https://conda.anaconda.org/conda-forge/win-64/pyscipopt-6.1.0-np2py313h776c0ec_0.conda#9d08f3d89b1d716787c99de326a2c112 https://conda.anaconda.org/conda-forge/noarch/validators-0.35.0-pyhd8ed1ab_0.conda#3449ef730c7d483adde81993994092b9 -https://conda.anaconda.org/conda-forge/win-64/shapely-2.1.2-py313h64ccc5a_2.conda#89e833ece06dd9d0c0a46d74d1125bf6 https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda#8678577a52161cc4e1c93fcc18e8a646 https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.6-py313h0591002_0.conda#5523b262bcc2cf8116d32a86db503d53 https://conda.anaconda.org/conda-forge/win-64/qhull-2020.2-hc790b64_5.conda#854fbdff64b572b5c0b470f334d34c11 -https://conda.anaconda.org/conda-forge/win-64/zlib-ng-2.3.2-h0261ad2_1.conda#bc2fba648e1e784c549e20bbe1a8af40 +https://conda.anaconda.org/conda-forge/win-64/zlib-ng-2.3.3-h0261ad2_1.conda#46a21c0a4e65f1a135251fc7c8663f83 https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.4-h24db6dd_0.conda#5af852046226bb3cb15c7f61c2ac020a https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-hba3369d_1.conda#a7c03e38aa9c0e84d41881b9236eacfb https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-hba3369d_1.conda#8436cab9a76015dfe7208d3c9f97c156 @@ -211,7 +207,7 @@ https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda#a69 https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.14.1-hdbac1cb_0.conda#6e7c5c5ab485057b5d07fd8188ba5c28 https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.14.1-h57928b3_0.conda#3235024fe48d4087721797ebd6c9d28c https://conda.anaconda.org/conda-forge/win-64/lcms2-2.18-hf2c6c5f_0.conda#b6c68d6b829b044cd17a41e0a8a23ca1 -https://conda.anaconda.org/conda-forge/win-64/pillow-12.1.0-py313h38f99e1_0.conda#1927a42726a4ca0e94d5e8cb94c7a06d +https://conda.anaconda.org/conda-forge/win-64/pillow-12.1.1-py313h38f99e1_0.conda#41b079447f12baa3852549e1f3a072d2 https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.9-py313h1a38498_2.conda#f77249adfa3f0091e016610346affd09 https://conda.anaconda.org/conda-forge/win-64/freetype-2.14.1-h57928b3_0.conda#d69c21967f35eb2ce7f1f85d6b6022d3 https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda#37293a85a0f4f77bbd9cf7aaefc62609 @@ -228,25 +224,24 @@ https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_1.cond https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2#9a66894dfd07c4510beb6b3f9672ccc0 https://conda.anaconda.org/conda-forge/win-64/numexpr-2.14.1-py313h7034ea3_101.conda#72e7dec0e858b4476adaf38d137d0475 https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.5-haf901d7_0.conda#43b6385cfad52a7083f2c41984eb4e91 -https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.6-nompi_h89f0904_105.conda#c1caaf8a28c0eb3be85566e63a5fcb5a -https://conda.anaconda.org/conda-forge/win-64/c-blosc2-2.22.0-h2af8807_1.conda#eb7c33dcf2ff0cea48cd13f0ebba44f5 -https://conda.anaconda.org/conda-forge/win-64/pytables-3.10.2-py313h98afe49_10.conda#ce135c7ac8058c6d9463833662cb2642 +https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.6-nompi_hae35d4c_106.conda#e2fb54650b51dcd92dfcbf42d2222ff8 +https://conda.anaconda.org/conda-forge/win-64/c-blosc2-2.23.0-h2af8807_0.conda#cb7cd55fdc0dc4b47d04414d4665e6af +https://conda.anaconda.org/conda-forge/win-64/pytables-3.10.2-py313h98afe49_11.conda#db647d9fb2f134fb1af762fd45342721 https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda#4b13d1d2d5cba37be9fa3c0922bbf995 -https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda#37926bb0db8b04b8b99945076e1442d0 +https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda#648a62e4e4cf1605abf73e7f48b87d5e https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda#7702bcd70891dd0154d765a69e1afa94 https://conda.anaconda.org/conda-forge/win-64/libzip-1.11.2-h3135430_0.conda#09066edc7810e4bd1b41ad01a6cc4706 https://conda.anaconda.org/conda-forge/win-64/hdf4-4.2.15-h5557f11_7.conda#84344a916a73727c1326841007b52ca8 -https://conda.anaconda.org/conda-forge/win-64/libnetcdf-4.9.3-nompi_h7d90bef_103.conda#0c157867805749ddbf608766f1350e11 +https://conda.anaconda.org/conda-forge/win-64/libnetcdf-4.9.3-nompi_h3948bcf_104.conda#3747feaeeb94d1f7654bd10596360d21 https://conda.anaconda.org/conda-forge/win-64/cftime-1.6.5-py313h0591002_1.conda#3bbc3f10bad50cdfdb4a8d9bf694982d https://conda.anaconda.org/conda-forge/win-64/netcdf4-1.7.3-nompi_py313hbe59507_100.conda#7da95b9fe456db6b2ef0db2424cd3b59 https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda#c07a6153f8306e45794774cf9b13bd32 -https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda#5bf347916a543bcb290c780fa449bf73 -https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.conda#d1461b2e63b1909f4f5b41c823bd90ae +https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda#9a4b8a37303b933b847c14a310f0557b +https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.12-h4df99d1_100.conda#3d92938d5b83c49162ade038aab58a59 https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda#aaa2a381ccc56eac91d63b6c1240312f -https://conda.anaconda.org/conda-forge/win-64/polars-runtime-32-1.37.1-py310hca7251b_0.conda#910a4338c2ff9b850374c16fe081b1c3 -https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda#1894d4373da653406c91e20ef89f05c8 +https://conda.anaconda.org/conda-forge/win-64/polars-runtime-32-1.38.1-py310hca7251b_0.conda#b5cb5bc8ed2f9df48909637e7fca0aba +https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda#b20de145c676cbae6138ac478cdb137b https://conda.anaconda.org/conda-forge/win-64/protobuf-6.31.1-py313h16c7a9f_2.conda#953e1ca4332163060b47d16c5a660419 -https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyh742d864_0.conda#9d2a54ab80a5cc8138b8adb1e146ac20 https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_34.conda#f276d1de4553e8fca1dfb6988551ebb4 https://conda.anaconda.org/conda-forge/win-64/libcrc32c-1.1.2-h0e60522_0.tar.bz2#cd4cc2d0c610c8cb5419ccc979f2d6ce https://conda.anaconda.org/conda-forge/win-64/google-crc32c-1.8.0-py313h5327936_1.conda#4f05c693f8d450b49711610815442761 @@ -272,74 +267,155 @@ https://conda.anaconda.org/conda-forge/win-64/frozenlist-1.7.0-py313h0c48a3b_0.c https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda#421a865222cd0c9d83ff08bc78bf3a61 https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda#18fd895e0e775622906cdabfc3cf0fb4 https://conda.anaconda.org/conda-forge/win-64/aiohttp-3.13.3-py313h51e1470_0.conda#f134f73fa3484422bca07b32bf2291c8 -https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda#fa0d1dbb4ae73ca3636fe64ed0632a42 -https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda#1099a038989e7f4037d3ce21e8ee9f2c +https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda#6e643ba74997c8dddbaa98fc2fc3481b +https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda#c9b8e02d974817913ab94dae12c7340b https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda#7fd8158ff94ccf28a2ac1f534989d698 https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda#48fcccc0b579087018df0afc332b8bd6 -https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda#d05f7e8724ceb2a77edf3e39cc7760bb +https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda#71aa090f8647c9b9efa63994eaa0dc18 https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar.bz2#7b6747d7cc2076341029cff659669e8b https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2#91e27ef3d05cc772ce627e51cff111c4 https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda#0badf9c54e24cecfb0ad2f99d680c163 https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda#30cd29cb87d819caead4d55184c1d115 https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda#63ccfdc3a3ce25b027b8767eb722fca8 -https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda#1daaf94a304a27ba3446a306235a37ea +https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda#496c6c9411a6284addf55c898d6ed8d7 https://conda.anaconda.org/conda-forge/noarch/cloudpickle-3.1.2-pyhcf101f3_1.conda#61b8078a0905b12529abc622406cb62c -https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.1-pyhcf101f3_1.conda#91e3b2a0d014ac032c066a2e18051686 +https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.2-pyhcf101f3_0.conda#b20e7ce9afd59036ab194f3d1e27edf5 https://conda.anaconda.org/conda-forge/win-64/bottleneck-1.6.0-np2py313haacffc7_3.conda#226e4715a3855061822ea89282958ff8 -https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.1-pyhcf101f3_0.conda#8f46def45efc90f7462e476e3fdb3de0 +https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.3-pyhcf101f3_1.conda#98fd08c0fc8a9c55c463533c8cface53 https://conda.anaconda.org/conda-forge/win-64/rapidfuzz-3.14.3-py313hfe59770_1.conda#d385f2cc13b95e5e42000ed04636b412 https://conda.anaconda.org/conda-forge/win-64/levenshtein-0.27.3-py313hfe59770_0.conda#d118ef2cd0f387d84faa35e0e0e7f32e https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda#16933322051fa260285f1a44aae91dd6 -https://conda.anaconda.org/conda-forge/win-64/pyogrio-0.11.1-py313h0dbd5a6_1.conda#7d1eaf4ed949aeb268394cf2857e20b5 +https://conda.anaconda.org/conda-forge/win-64/pyogrio-0.12.1-py313h8b19803_0.conda#6cfe8b00a3bd2a29e46c062063d3c575 https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.10.0-pyhd8ed1ab_1.conda#cc293b4cad9909bf66ca117ea90d4631 https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.2-pyha770c72_0.conda#ca79e96c1fd39ab6d12c8f99968111b1 https://conda.anaconda.org/conda-forge/noarch/branca-0.8.2-pyhd8ed1ab_0.conda#1fcdf88e7a8c296d3df8409bf0690db4 https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda#a6997a7dcd6673c0692c61dfeaea14ab https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda#3b9d40bef27d094e48bb1a821e86a252 -https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.7-pyhd8ed1ab_0.conda#e451a3c0ab3ad6fbe7bf83c59f0e2f9b +https://conda.anaconda.org/conda-forge/noarch/pypsa-1.1.0-pyhd8ed1ab_0.conda#d5c919eb3a7124b47dff09883443aed2 https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.14.0-pyha770c72_0.conda#385dca77a8b0ec6fa9b92cb62d09b43b https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda#72e780e9aa2d0a3295f59b1874e3768b https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda#827064ddfe0de2917fb29f1da4f8f533 https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda#55a61979242077b2cc377c74326ea9f0 https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda#080a808fce955026bf82107d955d32da -https://conda.anaconda.org/conda-forge/win-64/astroid-4.0.3-py313hfa70ccb_0.conda#fd5f875c18a10f18bd294f5d12f766b4 +https://conda.anaconda.org/conda-forge/win-64/astroid-4.0.4-py313hfa70ccb_0.conda#0bde1b76c96e6af8ae0f71a466dda5b4 https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.4-pyhcf101f3_0.conda#3a830511a81b99b67a1206a9d29b44b3 -https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda#2cfaaccf085c133a477f0a7a8657afe9 +https://conda.anaconda.org/conda-forge/noarch/wbgapi-1.0.12-pyhd8ed1ab_0.tar.bz2#a2e1ba950c0ec23e3ea0b915743a37e0 +https://conda.anaconda.org/conda-forge/win-64/libutf8proc-2.11.3-hb980946_0.conda#5f34fcb6578ea9bdbfd53cc2cfb88200 +https://conda.anaconda.org/conda-forge/win-64/orc-2.2.2-hbd3206f_0.conda#e20393ad8ebe534f3937e0a5da44e287 +https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-2.39.0-h19ee442_0.conda#c2c512f98c5c666782779439356a1713 +https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-storage-2.39.0-he04ea4c_0.conda#26198e3dc20bbcbea8dd6fa5ab7ea1e0 +https://conda.anaconda.org/conda-forge/win-64/azure-core-cpp-1.16.2-h49e36cd_0.conda#b625bbba0b9ae28003bd96342043ea0c +https://conda.anaconda.org/conda-forge/win-64/azure-storage-common-cpp-12.12.0-h5ffce34_1.conda#716715d06097dfd791b0bab525839910 +https://conda.anaconda.org/conda-forge/win-64/azure-storage-blobs-cpp-12.16.0-hcd625b1_1.conda#bc419192d40ca1b4928f70519d54b96c +https://conda.anaconda.org/conda-forge/win-64/azure-storage-files-datalake-cpp-12.14.0-h1678c0b_1.conda#64afdd17c4a6f4cb1d97caaad1fdc191 +https://conda.anaconda.org/conda-forge/win-64/azure-identity-cpp-1.13.3-h5ffce34_1.conda#998e10f568f0db5615ef880673bc3f35 +https://conda.anaconda.org/conda-forge/win-64/aws-c-common-0.12.6-hfd05255_0.conda#b1465f33b05b9af02ad0887c01837831 +https://conda.anaconda.org/conda-forge/win-64/aws-c-sdkutils-0.2.4-hcb3a2da_4.conda#3c97faee5be6fd0069410cf2bca71c85 +https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.2.7-hcb3a2da_5.conda#38f1501fc55f833a4567c83581a2d2ed +https://conda.anaconda.org/conda-forge/win-64/aws-c-cal-0.9.13-h46f3b43_1.conda#7cc4953d504d4e8f3d6f4facb8549465 +https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.23.3-h0d5b9f9_5.conda#400792109e426730ac9047fd6c9537ef +https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.3.1-hcb3a2da_9.conda#0888dbe9e883582d138ec6221f5482d6 +https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.10.7-hc678f4a_5.conda#3427460b0654d317e72a0ba959bb3a23 +https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.9.3-h2970c50_0.conda#6f42aac88a3b880dd3a4e0fe61f418bc +https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.11.3-ha659bf3_1.conda#dcfc08ccd8e332411c454e38110ea915 +https://conda.anaconda.org/conda-forge/win-64/aws-c-mqtt-0.13.3-hfa314fa_11.conda#6c043365f1d3f89c0b68238c6f5b8cce +https://conda.anaconda.org/conda-forge/win-64/aws-c-event-stream-0.5.7-ha388e84_1.conda#34e3b065b76c8a144c92e224cc3f5672 +https://conda.anaconda.org/conda-forge/win-64/aws-crt-cpp-0.35.4-hca034e6_0.conda#ce1a20b5c406727e32222ac91e5848c4 +https://conda.anaconda.org/conda-forge/win-64/aws-sdk-cpp-1.11.606-hac16450_10.conda#d9b942bede589d0ad1e8e360e970efd0 +https://conda.anaconda.org/conda-forge/win-64/libarrow-23.0.0-hfcfc620_2_cpu.conda#0f527bc994fd2fe1e82447e6f2f35d83 +https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-23.0.0-h2db994a_2_cpu.conda#af83df2f71f7ca552ee5ad0a31c9c9ef +https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-23.0.0-py313h5921983_0_cpu.conda#21e4e6043a16516491070395dcb716e1 +https://conda.anaconda.org/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda#25efbd786caceef438be46da78a7b5ef +https://conda.anaconda.org/conda-forge/win-64/libthrift-0.22.0-h23985f6_1.conda#556d49ad5c2ad553c2844cc570bb71c7 +https://conda.anaconda.org/conda-forge/win-64/libparquet-23.0.0-h7051d1f_2_cpu.conda#15dbe221357e3854b02ecc34f047cf40 +https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-23.0.0-h7d8d6a5_2_cpu.conda#88c1bf9589eaa3c7416c1f4706dd9312 +https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-23.0.0-h7d8d6a5_2_cpu.conda#b2031f0c71cbeec465a47fe988f726a6 +https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-23.0.0-hf865cc0_2_cpu.conda#7e4ef91357330c200f640c198cac50dd +https://conda.anaconda.org/conda-forge/win-64/pyarrow-23.0.0-py313hfa70ccb_0.conda#8b80b54f9b732e3165cedad435dc70ab +https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda#e9c622e0d00fa24a6292279af3ab6d06 +https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda#fa31df4d4193aabccaf09ce78a187faf +https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.0-pyhd8ed1ab_0.conda#b514a7bd078dcb4520a1aea4d14c5a3a +https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda#a0a4a3035667fc34f29bfbd5c190baa6 +https://conda.anaconda.org/conda-forge/win-64/pydantic-core-2.41.5-py313hfbe8231_1.conda#0437f87004ad7c64c98a013d1611db97 +https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c +https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda#c3946ed24acdb28db1b5d63321dbca7d +https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.29.0-pyhd8ed1ab_0.conda#36208e1c5c12f2aab4a312eff144713c +https://conda.anaconda.org/conda-forge/noarch/pandera-0.29.0-hd8ed1ab_0.conda#11a5b7d9a1d1759dedfc6cf05c37d66a +https://conda.anaconda.org/conda-forge/noarch/url-normalize-2.2.1-pyhd8ed1ab_0.conda#5db19244300bf33e9471a0b13f9b94cb +https://conda.anaconda.org/conda-forge/win-64/ujson-5.11.0-py313h927ade5_1.conda#732c8a251a3ad390f7ea8b5035dd901d +https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda#7ac5f795c15f288984e32add616cdc59 +https://conda.anaconda.org/conda-forge/noarch/cattrs-25.3.0-pyhd8ed1ab_0.conda#e78e411a2d5a999f2b1536f6c9481801 +https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.3.0-pyhd8ed1ab_0.conda#c992772513a6f9d329aaedca8736c173 +https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda#71bf9646cbfabf3022c8da4b6b4da737 +https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313hc624790_3.conda#57d8fccec9481a008b363bfbbef86d1f +https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.2-pyhd8ed1ab_0.conda#4c222e160d3ef895d83a1b813310dbce +https://conda.anaconda.org/conda-forge/noarch/oda-reader-1.4.2-pyhcf101f3_0.conda#994a73ab77f617dee032b6a94bad6bf2 +https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda#1c33d47dcfb2f90c80c6d2213f9d65d7 +https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda#56bfd153e523d9b9d05e4cf3c1cfe01c +https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda#18de09b20462742fe093ba39185d9bac +https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda#5267bef8efea4127aacd1f4e1f149b6e +https://conda.anaconda.org/conda-forge/noarch/imf-reader-1.4.1-pyhcf101f3_0.conda#13049ef4ba48cc9a8919ab6bf5eb4afe +https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda#043f0599dc8aa023369deacdb5ac24eb +https://conda.anaconda.org/conda-forge/noarch/xlwt-1.3.0-py_1.tar.bz2#deb0fb0c5977e3aa33050a9c405842a4 +https://conda.anaconda.org/conda-forge/noarch/xlsx2csv-0.8.6-pyhd8ed1ab_0.conda#87d8cdffe25acbcc4c9a974c821b5cb8 +https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda#91f5637b706492b9e418da1872fd61ce +https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.2.9-pyhd8ed1ab_0.conda#fa127b9f29f64174437524d0d61432f4 +https://conda.anaconda.org/conda-forge/noarch/tableschema-to-template-0.0.13-pyhd8ed1ab_1.conda#44bbc578da0d9d6b2f511a9280984fa1 +https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.15-py313h5fd188c_1.conda#de2843db9e03bb36fcfab5ca74d4679b +https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda#06ad944772941d5dae1e0d09848d8e49 +https://conda.anaconda.org/conda-forge/noarch/requests-file-3.0.1-pyhd8ed1ab_0.conda#e4dd2b09dc41cc3546a311531ca5d0e8 +https://conda.anaconda.org/conda-forge/noarch/ratelimit-2.2.1-pyhd8ed1ab_0.tar.bz2#3e8565b8c77205fc638ee40f5d2a2dba +https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda#53cb4b14ab0841e104e2bd11ee64b840 +https://conda.anaconda.org/conda-forge/noarch/pyphonetics-0.5.3-pyhd8ed1ab_1.conda#0f690c1b906722bf6652bf532e3ee8a5 +https://conda.anaconda.org/conda-forge/noarch/win32_setctime-1.2.0-pyhd8ed1ab_0.conda#e79f83003ee3dba79bf795fcd1bfcc89 +https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh7428d3b_0.conda#a6c25c54d8d524735db2e5785aec0a4e +https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda#df32eb56c2a48a5ca9465aef29dd46bc +https://conda.anaconda.org/conda-forge/noarch/ijson-3.4.0.post0-pyhd8ed1ab_0.conda#38823b779f206a231a6e6c6870bc2829 +https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d +https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyhd8ed1ab_2.conda#cf25bfddbd3bc275f3d3f9936cee1dd3 +https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda#83ea3a2ddb7a75c1b09cea582aa4f106 +https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda#6b6ece66ebcae2d5f326c77ef2c5a066 +https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda#592132998493b3ff25fd7479396e8351 +https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda#5b5203189eb668f042ac2b0826244964 +https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda#33950a076fd589a7655c6888cc3d2b34 +https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda#52be5139047efadaeeb19c6a5103f92a +https://conda.anaconda.org/conda-forge/noarch/typer-0.23.1-pyhcf101f3_0.conda#bac7249fa4302ee17e1ae0aa17991732 +https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-pyhd8ed1ab_2.conda#6c17c5b9a3f8cf44137bfca12e2574d7 +https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda#00cdd2e3ec6d3be6bc2b7d46470a10a1 +https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda#43e14f832d7551e5a8910672bfc3d8c6 +https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda#23b4ba5619c4752976eb7ba1f5acb7e8 +https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda#a4059bc12930bddeb41aef71537ffaed +https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda#4c2498dcda0d58cf25466e82f7287b32 +https://conda.anaconda.org/conda-forge/noarch/marko-2.2.2-pyhd8ed1ab_0.conda#3c3e9339e46fffba5920be28d9233860 +https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda#14c42a6334f38c412449f5a5e4043a5a +https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda#daddf757c3ecd6067b9af1df1f25d89e +https://conda.anaconda.org/conda-forge/noarch/frictionless-5.18.1-pyhd8ed1ab_1.conda#4b2cae54d84f734c32837175d8ed2459 +https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda#d73fdc05f10693b518f52c994d748c19 +https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda#3bc0ac31178387e8ed34094d9481bfe8 +https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda#2452e434747a6b742adc5045f2182a8e +https://conda.anaconda.org/conda-forge/noarch/hdx-python-utilities-4.0.6-pyh332efcf_0.conda#6736b5ff2394169e011a7bf926172d5c +https://conda.anaconda.org/conda-forge/noarch/hdx-python-country-4.1.1-pyh332efcf_0.conda#241ca19104e3d7e7d985a06c025c879d +https://conda.anaconda.org/conda-forge/noarch/pydeflate-2.3.4-pyhcf101f3_1.conda#02e7ccf24972a1637c0de86e08a169b3 https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda#003b8ba0a94e2f1e117d0bd46aebc901 -https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda#6b0259cea8ffa6b66b35bae0ca01c447 +https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.37.0-pyhcf101f3_1.conda#c4c4f99faba7174b3d99b79baf60697d https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.10.0-pyhd8ed1ab_0.conda#eb52d14a901e23c39e9e7b4a1a5c015f -https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313hf069bd2_6.conda#77444fe3f3004fe52c5ee70626d11d66 +https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.1.0-py313hf069bd2_0.conda#bfa075d1cd7bf341b8189af9616ce537 https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda#8bc5851c415865334882157127e75799 https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda#381bd45fb7aa032691f3063aff47e3a1 https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda#7f3ac694319c7eaf81a0325d6405e974 -https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda#91f5637b706492b9e418da1872fd61ce -https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda#53cb4b14ab0841e104e2bd11ee64b840 https://conda.anaconda.org/conda-forge/noarch/pycountry-24.6.1-pyhd8ed1ab_0.conda#62ed8c560f1b5b8d74ed11e68e9ae223 -https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda#71bf9646cbfabf3022c8da4b6b4da737 -https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313hc624790_3.conda#57d8fccec9481a008b363bfbbef86d1f https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda#43dd16b113cc7b244d923b630026ff4f https://conda.anaconda.org/conda-forge/noarch/geopy-2.4.1-pyhd8ed1ab_2.conda#40182a8d62a61d147ec7d3e4c5c36ac2 -https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.8.3-pyhd8ed1ab_0.conda#18de09b20462742fe093ba39185d9bac -https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda#5267bef8efea4127aacd1f4e1f149b6e -https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda#6e2b8dfbfd1b4e91f49fd13218db08d7 +https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda#1ada850380c9857f4e9f670775ec550a https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda#193a9e54636d8d70781a3e56370f5502 -https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.0-pyhd8ed1ab_0.conda#3c806a133fb9e59dca249c5a00c2ab3e -https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda#e9c622e0d00fa24a6292279af3ab6d06 -https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda#fa31df4d4193aabccaf09ce78a187faf -https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda#8b2613dbfd4e2bc9080b2779b53fc210 -https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda#a0a4a3035667fc34f29bfbd5c190baa6 -https://conda.anaconda.org/conda-forge/win-64/pydantic-core-2.41.5-py313hfbe8231_1.conda#0437f87004ad7c64c98a013d1611db97 -https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda#2934f256a8acfe48f6ebb4fce6cde29c -https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda#c3946ed24acdb28db1b5d63321dbca7d -https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.28.1-pyhd8ed1ab_0.conda#917e71a753611d7b7bb79baf46273c5a -https://conda.anaconda.org/conda-forge/noarch/pandera-0.28.1-hd8ed1ab_0.conda#3236ebaa938b455d086f747f3541b57a -https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda#0aa03903d33997f3886be58abc890aef +https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.1-pyhd8ed1ab_0.conda#3770774486c8b9e822c6bf996da18a25 +https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda#e941e85e273121222580723010bd4fa2 https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhcf101f3_1.conda#e1bccffd88819e75729412799824e270 https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.4-py313h5ea7bf4_0.conda#1402782887fafaa117a8d76d2cfa4761 -https://conda.anaconda.org/conda-forge/win-64/libvulkan-loader-1.4.328.1-h477610d_0.conda#4403eae6c81f448d63a7f66c0b330536 +https://conda.anaconda.org/conda-forge/win-64/libvulkan-loader-1.4.341.0-h477610d_0.conda#804880b2674119b84277d6c16b01677d https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda#2cf0cf76cc15d360dfa2f17fd6cf9772 -https://conda.anaconda.org/conda-forge/win-64/libglib-2.86.2-hd9c3897_0.conda#fbd144e60009d93f129f0014a76512d3 -https://conda.anaconda.org/conda-forge/win-64/libclang13-21.1.8-default_ha2db4b5_2.conda#511af9070467adf0e8af89ce18d516cf +https://conda.anaconda.org/conda-forge/win-64/libglib-2.86.4-h0c9aed9_0.conda#275eb125dd1490f287e85ffd544b6403 +https://conda.anaconda.org/conda-forge/win-64/libclang13-21.1.8-default_ha2db4b5_3.conda#06e385238457018ad1071179b67e39d1 https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-hac47afa_2.conda#b785694dd3ec77a011ccf0c24725382b https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.4-h5112557_1.conda#08c8fa3b419df480d985e304f7884d35 https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda#49023d73832ef61042f6a237cb2687e7 @@ -348,41 +424,39 @@ https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed3 https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda#a7970cd949a077b7cb9696379d338681 https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab -https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda#9bb0026a2131b09404c59c4290c697cd -https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda#20e32ced54300292aff690a69c5e7b97 -https://conda.anaconda.org/conda-forge/win-64/harfbuzz-12.2.0-h5f2951f_0.conda#e798ef748fc564e42f381d3d276850f0 -https://conda.anaconda.org/conda-forge/win-64/double-conversion-3.3.1-he0c23c2_0.conda#e9a1402439c18a4e3c7a52e4246e9e1c -https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.10.1-h7502b6c_0.conda#455618c3cf822705d569fe83beafe8da +https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.17.1-hd47e2ca_0.conda#a0b1b87e871011ca3b783bbf410bc39f +https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h477c42c_1.conda#52ea1beba35b69852d210242dd20f97d +https://conda.anaconda.org/conda-forge/win-64/harfbuzz-12.3.2-h5a1b470_0.conda#fb5d7b9527b418f83e3316f3e6daa8a2 +https://conda.anaconda.org/conda-forge/win-64/double-conversion-3.4.0-hac47afa_0.conda#3d3caf4ccc6415023640af4b1b33060a +https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.10.2-h68b6638_4.conda#f2dc18a6006aac4ac0050861c6df4120 https://conda.anaconda.org/conda-forge/win-64/libxslt-1.1.43-h0fbe4c1_1.conda#46034d9d983edc21e84c0b36f1b4ba61 -https://conda.anaconda.org/conda-forge/win-64/pyside6-6.10.1-py313h475ba69_0.conda#1b3404ee1a66ab0205db2a19096efbc2 +https://conda.anaconda.org/conda-forge/win-64/pyside6-6.10.2-py313h475ba69_0.conda#462d1b8de81aaf6971e8466c48ed7164 https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.10.8-py313hfa70ccb_0.conda#b77085d92d9de0c4a8bcc88011985292 https://conda.anaconda.org/conda-forge/win-64/lxml-6.0.2-py313h1af1686_2.conda#966738dbc1fd7c75d34bea7c8574c974 -https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf5-3.11.5-h0f01001_0.conda#9991f3ace1325cb675bc6acd36734bc6 -https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf4-3.11.5-ha47b6c4_0.conda#ce8be6b16668ec653b5564c0dcd1a0aa -https://conda.anaconda.org/conda-forge/win-64/libgdal-netcdf-3.11.5-hbb26ad1_0.conda#3103aa7b336025b8d7765543c0b7a0c5 +https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf5-3.12.2-h5260803_1.conda#150230ce593ad139e1ab1437954b81e2 +https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf4-3.12.2-h5bd48a5_1.conda#861e471b9d7df1eed52ea9a25f227951 +https://conda.anaconda.org/conda-forge/win-64/libgdal-netcdf-3.12.2-h1c765f5_1.conda#300ec561b23a4018262b90995350061a https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.9.0-pyhd8ed1ab_0.conda#2f1ed718fcd829c184a6d4f0f2e07409 https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2#1cee351bf20b830d991dbe0bc8cd7dfe https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_1.conda#8f01ed27e2baa455e753301218e054fd https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh6dadd2b_1.conda#e43ca10d61e55d0a8ec5d8c62474ec9e -https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh6dadd2b_0.conda#69ba308f1356f39901f5654d82405df3 +https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh6dadd2b_1.conda#6ac53f3fff2c416d63511843a04646fa https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda#198bb594f202b205c7d18b936fa4524f https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-h5bddc39_9.conda#a6c8f8ee856f7c3c1576e14b86cd8038 https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.1.0-py312hbb5da91_0.conda#808d263ec97bbd93b41ca01552b5fbd4 https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda#7526d20621b53440b0aae45d4797847e https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda#f6d7aa696c67756a650e91e15e88223c https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda#e51f1e4089cad105b6cac64bd8166587 -https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda#6b6ece66ebcae2d5f326c77ef2c5a066 https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2#457c2c8c08e54905d6954e79cb5b5db9 https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda#8a3d6d0523f66cf004e563a50d9392b3 https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda#00f5b8dafa842e0c27c1cd7296aa4875 https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda#b11e360fc4de2b0035fc8aaa74f17fd6 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda#fd312693df06da3578383232528c468d https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2#961b3a227b437d82ad7054484cfa71b2 -https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda#2841eb5bfc75ce15e9a0054b98dcd64d -https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda#c0d0b883e97906f7524e2aac94be0e0d -https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_0.conda#b1a27250d70881943cca0dd6b4ba0956 -https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-h5f6438b_0.conda#08a03378bc5293c6f97637323802f480 -https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyhcf101f3_1.conda#cfc86ccc3b1de35d36ccaae4c50391f5 +https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda#f1acf5fdefa8300de697982bcb1761c9 +https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda#7c5ebdc286220e8021bf55e6384acd67 +https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda#f11a319b9700b203aa14c295858782b6 +https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.0-pyhcf101f3_0.conda#b14079a39ae60ac7ad2ec3d9eab075ca https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda#7b8bace4943e0dc345fc45938826f2b8 https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2#912a71cc01012ee38e6b90ddd561e36f https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda#36de09a8d3e5d5e6f4ee63af49e59706 @@ -398,13 +472,13 @@ https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1 https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2#9b347a7ec10940d3f7941ff6c460b551 https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda#d3549fd50d450b6d9e7dddff25dd2110 https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.26.0-hcf101f3_0.conda#8368d58342d0825f0843dc6acdd0c483 -https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda#f56000b36f09ab7533877e695e4e8cb0 +https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyhe01879c_0.conda#31e11c30bbee1682a55627f953c6725a https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-25.1.0-py313h5ea7bf4_2.conda#eabb4b677b54874d7d6ab775fdaa3d27 https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-25.1.0-pyhd8ed1ab_0.conda#8ac12aff0860280ee0cff7fa2cf63f3b https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda#d79a87dcfa726bcea8e61275feed6f83 https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda#e7f89ea5f7ea9401642758ff50a2d9c1 https://conda.anaconda.org/conda-forge/noarch/json5-0.13.0-pyhd8ed1ab_0.conda#8d5f66ebf832c4ce28d5c37a0e76605c -https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda#0a01c169f0ab0f91b26e77a3301fbfe4 +https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda#ea5be9abc2939c8431893b4e123a2065 https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.28.0-pyhcf101f3_0.conda#a63877cb23de826b1620d3adfccc4014 https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.3.0-pyhcf101f3_0.conda#62b7c96c6cd77f8173cc5cada6a9acaa https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda#598fd7d4d0de2455fb74f56063969a97 @@ -413,18 +487,18 @@ https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda#ff9efb7f7469aed3c4a8106ffa29593c https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda#9673a61a297b00016442e022d689faa6 https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda#b1b505328da7a6b246787df4b5a49fbc -https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.4.0-pyhd8ed1ab_0.conda#cba8aff819d6eec578c9994f6eb58934 +https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda#c3197f8c0d5b955c904616b716aca093 https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda#edb16f14d920fb3faf17f5ce582942d6 -https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda#a110716cdb11cf51482ff4000dc253d7 +https://conda.anaconda.org/conda-forge/noarch/parso-0.8.6-pyhcf101f3_0.conda#97c1ce2fffa1209e7afb432810ec6e12 https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda#a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda#bd80ba060603cc228d9d81c257093119 https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda#9ce473d1d1be1cc3810856a48b3fab32 -https://conda.anaconda.org/conda-forge/noarch/ipython-9.9.0-pyhe2676ad_0.conda#fe785355648dec69d2f06fa14c9e6e84 -https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.19-py313h927ade5_0.conda#a7e77991e54b031328253da027e2f3e1 +https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyhe2676ad_0.conda#d44777fc7219cb62865dfdcba308ea0d +https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.20-py313h927ade5_0.conda#75eb3091b05924429a3a8d2a9bbdfac2 https://conda.anaconda.org/conda-forge/noarch/comm-0.2.3-pyhe01879c_0.conda#2da13f2b299d8e1995bafbbe9689a2f7 -https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.1.0-pyh6dadd2b_0.conda#f22cb16c5ad68fd33d0f65c8739b6a06 +https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyh6dadd2b_1.conda#b3a7d5842f857414d9ae831a799444dd https://conda.anaconda.org/conda-forge/noarch/async-lru-2.1.0-pyhcf101f3_0.conda#04d2e5fba67e5a1ecec8e25d6c769004 -https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.3-pyhd8ed1ab_0.conda#106f4e36e14797b9c2abfc3849d9e92f +https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.4-pyhd8ed1ab_0.conda#b555f252a0796e00ce9d8ec318196da7 https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda#c85c76dc67d75619a92f51dfbce06992 https://conda.anaconda.org/conda-forge/noarch/notebook-7.5.3-pyhcf101f3_0.conda#94a5f0cee51b6b0ffdcad0af6db0af18 https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.52-hd8ed1ab_0.conda#6d034d3a6093adbba7b24cb69c8c621e @@ -438,19 +512,18 @@ https://conda.anaconda.org/conda-forge/win-64/jpype1-1.6.0-py313hf069bd2_1.conda https://conda.anaconda.org/gurobi/win-64/gurobi-13.0.1-py313_0.conda#8fd66d01633a62436d3fc666e220440e https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.16-hfd05255_0.conda#c27bd87e70f970010c1c6db104b88b18 https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda#452d6d3b409edead3bd90fc6317cd6d4 -https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.12-hf48077a_0.conda#c4f435ac09fd41606bba9f0deb12e412 +https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.13-hfa52320_0.conda#5a823e21e090f8bc43dbfba00cd2f0e2 https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda#105cb93a47df9c548e88048dc9cbdbc9 https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.6-h0e40799_0.conda#570c9a6d9b4909e45d49e9a5daa528de https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda#31baf0ce8ef19f5617be73aee0527618 -https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda#4cd74e74f063fb6900d6eed2e9288112 -https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda#e8b816fb37bc61aa3f1c08034331ef53 -https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda#2070a706123b2d5e060b226a00e96488 +https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.7-hba3369d_0.conda#74bc8e26c2716e9b1542bef908887b82 +https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.18-hba3369d_0.conda#52105b90eaf5b859cb383348e99cbac2 +https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h4974f7c_12.conda#3a5b40267fcd31f1ba3a24014fe92044 https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda#a41f14768d5e377426ad60c613f2923b https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda#49c36fcad2e9af6b91e91f2ce5be8ebd -https://conda.anaconda.org/conda-forge/win-64/graphviz-14.1.0-h4c50273_0.conda#c347e0f1819e771361861afc57e2f418 +https://conda.anaconda.org/conda-forge/win-64/graphviz-14.1.2-h4c50273_0.conda#afabed4c46b197b89eb974aa038d12db https://conda.anaconda.org/conda-forge/win-64/glpk-5.0-h8ffe710_0.tar.bz2#ff4181250d91940494d3127243a9d858 https://conda.anaconda.org/conda-forge/noarch/geojson-3.2.0-pyhd8ed1ab_0.conda#9f9840fb1c2e009fb0009a2f9461e64a -https://conda.anaconda.org/conda-forge/win-64/fiona-1.10.1-py313h0dbd5a6_5.conda#f67bf68a95f767c7fbf07d4675de0965 https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-pyhd8ed1ab_5.conda#4a25cae637029c5589135903aa15b3b6 https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.1.2-py313hf069bd2_1.conda#0013c110d17d569ce560b7fae6aee0d3 https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda#5498feb783ab29db6ca8845f68fa0f03 @@ -462,36 +535,9 @@ https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda#7 https://conda.anaconda.org/conda-forge/win-64/h5py-3.15.1-nompi_py313hf7f959b_101.conda#29bcfb479b3030e2c190f53058b9a345 https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda#ca7f9ba8762d3e360e47917a10e23760 https://conda.anaconda.org/conda-forge/noarch/jmespath-1.1.0-pyhcf101f3_1.conda#cc73a9bd315659dc5307a5270f44786f -https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.34-pyhd8ed1ab_0.conda#54bcb8039fe8f63c9990afe552df4fdc +https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.51-pyhd8ed1ab_0.conda#f2350b60476eeafb5d044603a9bb0018 https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.16.0-pyhd8ed1ab_0.conda#061b5affcffeef245d60ec3007d1effd -https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.34-pyhd8ed1ab_0.conda#8461fcbfd947f60cabe4719fb3a55189 -https://conda.anaconda.org/conda-forge/win-64/libutf8proc-2.11.3-hb980946_0.conda#5f34fcb6578ea9bdbfd53cc2cfb88200 -https://conda.anaconda.org/conda-forge/win-64/orc-2.2.2-hbd3206f_0.conda#e20393ad8ebe534f3937e0a5da44e287 -https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-2.39.0-h19ee442_0.conda#c2c512f98c5c666782779439356a1713 -https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-storage-2.39.0-he04ea4c_0.conda#26198e3dc20bbcbea8dd6fa5ab7ea1e0 -https://conda.anaconda.org/conda-forge/win-64/aws-c-common-0.12.6-hfd05255_0.conda#b1465f33b05b9af02ad0887c01837831 -https://conda.anaconda.org/conda-forge/win-64/aws-c-sdkutils-0.2.4-hcb3a2da_4.conda#3c97faee5be6fd0069410cf2bca71c85 -https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.2.7-hcb3a2da_5.conda#38f1501fc55f833a4567c83581a2d2ed -https://conda.anaconda.org/conda-forge/win-64/aws-c-cal-0.9.13-h46f3b43_1.conda#7cc4953d504d4e8f3d6f4facb8549465 -https://conda.anaconda.org/conda-forge/win-64/aws-c-io-0.23.3-h0d5b9f9_5.conda#400792109e426730ac9047fd6c9537ef -https://conda.anaconda.org/conda-forge/win-64/aws-c-compression-0.3.1-hcb3a2da_9.conda#0888dbe9e883582d138ec6221f5482d6 -https://conda.anaconda.org/conda-forge/win-64/aws-c-http-0.10.7-hc678f4a_5.conda#3427460b0654d317e72a0ba959bb3a23 -https://conda.anaconda.org/conda-forge/win-64/aws-c-auth-0.9.3-h2970c50_0.conda#6f42aac88a3b880dd3a4e0fe61f418bc -https://conda.anaconda.org/conda-forge/win-64/aws-c-s3-0.11.3-ha659bf3_1.conda#dcfc08ccd8e332411c454e38110ea915 -https://conda.anaconda.org/conda-forge/win-64/aws-c-mqtt-0.13.3-hfa314fa_11.conda#6c043365f1d3f89c0b68238c6f5b8cce -https://conda.anaconda.org/conda-forge/win-64/aws-c-event-stream-0.5.7-ha388e84_1.conda#34e3b065b76c8a144c92e224cc3f5672 -https://conda.anaconda.org/conda-forge/win-64/aws-crt-cpp-0.35.4-hca034e6_0.conda#ce1a20b5c406727e32222ac91e5848c4 -https://conda.anaconda.org/conda-forge/win-64/aws-sdk-cpp-1.11.606-hac16450_10.conda#d9b942bede589d0ad1e8e360e970efd0 -https://conda.anaconda.org/conda-forge/win-64/libarrow-23.0.0-hcf7e2ff_0_cpu.conda#b6f129fd980b012c234b455219f31a6d -https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-23.0.0-h2db994a_0_cpu.conda#3dc0dfb46631dc00a44c4ed869e54cfa -https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-23.0.0-py313h5921983_0_cpu.conda#21e4e6043a16516491070395dcb716e1 -https://conda.anaconda.org/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda#25efbd786caceef438be46da78a7b5ef -https://conda.anaconda.org/conda-forge/win-64/libthrift-0.22.0-h23985f6_1.conda#556d49ad5c2ad553c2844cc570bb71c7 -https://conda.anaconda.org/conda-forge/win-64/libparquet-23.0.0-h7051d1f_0_cpu.conda#fa8b0d1f7d292d01a78dcc370d903ba3 -https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-23.0.0-h7d8d6a5_0_cpu.conda#540182c554868cef4ead05206147705b -https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-23.0.0-h7d8d6a5_0_cpu.conda#9636a9e56e2884a13af82b52f40e3335 -https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-23.0.0-hf865cc0_0_cpu.conda#a0822fb8692ae257f0cbba0003aa4e62 -https://conda.anaconda.org/conda-forge/win-64/pyarrow-23.0.0-py313hfa70ccb_0.conda#8b80b54f9b732e3165cedad435dc70ab +https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.50-pyhd8ed1ab_0.conda#65465c189c38fc262c009faa98825cea https://conda.anaconda.org/conda-forge/noarch/arcosparse-0.4.2-pyhd8ed1ab_0.conda#9a005ba5f540619a1343587b4ee3d95e https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.3.0-pyhd8ed1ab_0.conda#9e18b048c69d2d72bc69d120a435d731 https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda#c138c7aaa6a10b5762dcd92247864aff @@ -506,9 +552,9 @@ https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda#e52c https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda#f88bb644823094f436792f80fba3207e https://conda.anaconda.org/conda-forge/noarch/sortedcontainers-2.4.0-pyhd8ed1ab_1.conda#0401a17ae845fa72c7210e206ec5647d https://conda.anaconda.org/conda-forge/win-64/cytoolz-1.1.0-py313h5ea7bf4_1.conda#ef2e9ff6d43a07587e3483c34adf6cff -https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.1-pyhcf101f3_1.conda#c15e359a982395be86a7576a91f9c5f5 +https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_0.conda#1eac93a6257796dd348d366a85f7f283 https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda#0b830ba4947de6d60dd9d96827a1cacb -https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.1-pyhcf101f3_0.conda#a86541105aa7920d2147d48bf370dc08 +https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_0.conda#f438bd6e7ce6b4d442789f77d3fc7818 https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda#fa9e9ec7bf26619a8edd3e11155f15d6 https://conda.anaconda.org/conda-forge/win-64/freeglut-3.2.2-he0c23c2_3.conda#5872031ef7cba8435ff24af056777473 https://conda.anaconda.org/conda-forge/win-64/jasper-4.2.8-h8ad263b_0.conda#f25a27d9c58ef3a63173f372edef0639 diff --git a/envs/environment.yaml b/envs/environment.yaml index 08b896d78c..81c87059c2 100644 --- a/envs/environment.yaml +++ b/envs/environment.yaml @@ -50,6 +50,7 @@ dependencies: - pytz >=2025.2 - pyxlsb >=1.0.10 - rasterio >=1.4.3 +- rasterstats >=0.10.3 - rioxarray >=0.20.0 - ruff >=0.14.3 - ruamel.yaml >=0.18.0 @@ -69,4 +70,6 @@ dependencies: - pandera >=0.28.1 - natsort >=8.4.0 - snakemake-logger-plugin-pypsa >=0.1.0 +- pydeflate >=2.3.4 +- grpcio <1.78 - snakemake-executor-plugin-slurm >=1.9.2 diff --git a/pixi.lock b/pixi.lock index f5dd7ff46f..5ccb9a0402 100644 --- a/pixi.lock +++ b/pixi.lock @@ -7,8 +7,7 @@ environments: - url: https://conda.anaconda.org/gurobi/ packages: linux-64: - - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/affine-2.4.0-pyhd8ed1ab_1.conda @@ -18,6 +17,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.15.3-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ampl-asl-1.0.0-h5888daf_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/amply-0.1.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.12.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda @@ -26,7 +26,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-25.1.0-py313h07c4f96_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argparse-dataclass-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/astroid-4.0.3-py313h78bf25f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/astroid-4.0.4-py313h78bf25f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 @@ -48,40 +48,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.7-h8b1a151_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.35.4-h8824e59_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-h20b40b1_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.1-h3a458e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.2-h3a5f585_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-h75daedc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-h3d7a050_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-hd454692_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.2-h206d751_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-hed0cdb0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-hdd73cc9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-ha7a2c86_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-h52c5a47_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py313h18e8e13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-h5f6438b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.34-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.34-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.50-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.51-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.6.0-np2py313hc18bace_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/branca-0.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-hed03a55_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313hf159716_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.22.0-hc31b594_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.23.0-hc31b594_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.25.0-py313h08cd8bf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py313hf46b229_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.5-py313h29aa505_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda @@ -100,36 +102,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py313hc8edb43_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cppad-20250000.2-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.3-py313heb322e3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.5-py313heb322e3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hd9c7081_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py313h07c4f96_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.18-py313h5d5ffb9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.20-py313h5d5ffb9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-pyhd8ed1ab_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dpath-2.2.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.45.0-h83bc92c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.10.1-py313hae45665_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda @@ -137,7 +142,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.61.1-py313h3dea7bd_0.conda @@ -146,9 +151,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.1-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h9dce30a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/frictionless-5.18.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.7.0-py313h6b9daa2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.4-h2b0a6b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.5-h2b0a6b4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geojson-3.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda @@ -159,14 +165,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.86.3-hf516916_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.86.4-hf516916_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glpk-5.0-h445213a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/google-crc32c-1.8.0-py313h74173ec_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda @@ -181,31 +187,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.15.1-nompi_py313h253c126_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-12.3.0-h6083320_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-12.3.2-h6083320_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h1b119a7_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_106.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-country-4.1.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-utilities-4.0.6-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/highspy-1.12.0-np2py313h73dcb5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/highspy-1.13.1-np2py313h73dcb5b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.2-h33c6efd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ijson-3.4.0.post0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imf-reader-1.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/immutables-0.21-py313h07c4f96_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ipopt-3.14.19-h0804adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.1.0-pyha191276_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.9.0-pyh53cf698_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyha191276_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyh53cf698_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.8.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.8-he3c4edf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda @@ -214,6 +228,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/jpype1-1.6.0-py313h7037e92_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.13.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.0.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda @@ -223,10 +238,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.28.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.11-pyhd8ed1ab_0.conda @@ -235,25 +250,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_105.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyh742d864_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/levenshtein-0.27.3-py313h7033f15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.5-gpl_hc2c16d8_100.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.0-h2c50142_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.0-h635bf11_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.0-h8c2c5c3_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.0-h635bf11_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.0-h3f74fd7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.0-h258748b_2_cuda.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.0-h635bf11_2_cuda.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.0-h8c2c5c3_2_cuda.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.0-h635bf11_2_cuda.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.0-h3f74fd7_2_cuda.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.8-default_h746c552_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.8-default_h746c552_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-h4e3cde8_0.conda @@ -264,28 +278,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.3-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.1-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_16.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.1-hf05ffb4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf4-3.12.1-ha810028_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf5-3.12.1-h966a9c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-netcdf-3.12.1-ha526aae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_16.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_16.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.2-hc2c0581_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf4-3.12.2-hf70aa56_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf5-3.12.2-hcaab353_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-netcdf-3.12.2-h03ef1cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.3-h6548e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.39.0-hdbdcf42_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.73.1-h3288cfb_1.conda @@ -293,15 +307,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.3.0-h4c17acf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.1-ha09017c_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-ha09017c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-haa4a5bd_1022.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-5_h6ae95b6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.2-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_h11f7409_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_hbf2fc22_104.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda @@ -309,13 +323,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.0-h7376487_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.0-h7376487_2_cuda.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.54-h421ea60_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.1-hb80d175_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.2-hb80d175_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h7b12aa8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.60.0-h61e6d4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.60.2-h61e6d4b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h46dd2a8_20.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libscotch-7.0.4-h2fe6a88_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -323,13 +337,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libspral-2025.05.20-hfabd9d1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.2-hf4e2dac_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_16.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.328.1-h5279c79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda @@ -340,18 +354,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.3-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.0.2-py313h4a16004_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h28739b2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/marko-2.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.8-py313h78bf25f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.8-py313h683a580_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/metis-5.1.0-hd0bcaf9_1007.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.10-h05a5f5f_0.conda @@ -365,10 +383,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/muparser-2.3.5-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda @@ -381,52 +399,54 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.16.5-py313h08cd8bf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numexpr-2.14.1-py313h24ae7f9_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.1-py313hf6604e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.2-py313hf6604e3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/oda-reader-1.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.10-he970967_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313ha4be090_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.2-h19cb568_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.3-py313h08cd8bf_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.28.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.29.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.6-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.0-py313h80991f8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py313h80991f8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.37.1-py310hffdcd12_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.38.1-py310hffdcd12_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.52-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py313h8060acc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.31.1-py313h8c92afc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.1-py313h54dd161_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313h54dd161_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulp-2.8.0-py313hf1034c9_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-23.0.0-py313h78bf25f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.0-py313he109ebe_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.0-py313hfe0801a_0_cuda.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycountry-24.6.1-pyhd8ed1ab_0.conda @@ -434,72 +454,84 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py313h843e2db_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydeflate-2.3.4-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyogrio-0.12.1-py313hae45665_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyomo-6.9.5-py313h7033f15_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyphonetics-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.7.2-py313h77f6078_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyscipopt-5.6.0-py313h7033f15_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyscipopt-6.1.0-np2py313h73dcb5b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.10.1-py313h85046ba_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.10.2-py313h85046ba_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pytables-3.10.2-py313h0546747_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pytables-3.10.2-py313h0546747_11.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.11-hc97d973_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.12-hc97d973_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-2.45.0-np2py313hc18bace_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.12-h4df99d1_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-utils-3.9.1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.1.0-py312hfb55c3c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.10.1-hb82b983_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.10.2-hb82b983_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidfuzz-3.14.3-py313h7033f15_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.5.0-py313h2005660_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rasterstats-0.20.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ratelimit-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-file-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/reretry-0.11.8-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.21.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py313h843e2db_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py313h54dd161_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.14-h4196e79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.15.1-h40fa522_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.6.2-he8a4886_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.8.0-np2py313h16d504d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scip-9.2.4-hd8b5c82_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scip-10.0.1-hd8b5c82_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.0-py313h4b8bb8b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/shapely-2.1.2-py313had47c43_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/simplejson-3.20.2-py313h07c4f96_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smart_open-7.5.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-cluster-generic-1.0.9-pyhdfd78af_0.tar.bz2 - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.1.0-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.2.0-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.4.0-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-common-1.22.0-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-executor-plugins-9.3.9-pyhdfd78af_0.tar.bz2 @@ -508,8 +540,8 @@ environments: - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-scheduler-plugins-2.0.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-storage-plugins-4.3.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-logger-plugin-pypsa-0.1.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.15.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.2.1-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.16.3-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.3-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-http-0.3.0-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda @@ -519,39 +551,46 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.51.2-h04a0ce9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.6-py313h29aa505_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tableschema-to-template-0.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2022.3.0-h8d10470_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/throttler-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.14.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.3-py313h07c4f96_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.23.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h7037e92_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ujson-5.11.0-py313h5d5ffb9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py313h7037e92_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.8-hac33072_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/url-normalize-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/validators-0.35.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.37.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-hd6090a7_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wbgapi-1.0.12-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.9.0-pyhd8ed1ab_0.conda @@ -567,19 +606,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-hd9031aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.46-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsx2csv-0.8.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlwt-1.3.0-py_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.6-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda @@ -596,7 +638,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.2-hceb46e0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py313h54dd161_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda osx-64: @@ -609,6 +651,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ampl-asl-1.0.0-h240833e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/amply-0.1.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.12.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda @@ -618,7 +661,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-25.1.0-py313hf050af9_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argparse-dataclass-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/astroid-4.0.3-py313habf4b1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/astroid-4.0.4-py313habf4b1d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda @@ -637,40 +680,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.2.7-h901532c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.35.4-h7484968_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.606-h386ebac_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.1-he2a98a9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.13.2-h0e8e1c8_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.16.0-ha4e89a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.12.0-h2a5eb39_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.14.0-h7f37a48_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.2-h87f1c7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.13.3-h1135191_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.16.0-h9b4319f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.12.0-h7373072_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.14.0-he1781d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/backports.zstd-1.3.0-py313h591e92b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-h5f6438b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/blosc-1.21.6-hd145fbb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.34-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.34-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.50-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.51-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bottleneck-1.6.0-np2py313h4e95564_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/branca-0.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.2.0-hf139dec_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.2.0-h8616949_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.2.0-py313h8d69aa9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.6-hb5e19a0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/c-blosc2-2.22.0-hedb7e5f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-blosc2-2.23.0-h548f922_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h7656bdc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cartopy-0.25.0-py313h2f264a9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py313hf57695f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cftime-1.6.5-py313hceb611b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda @@ -689,33 +734,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py313h98b818e_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cppad-20250000.2-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.3-py313h36c3d76_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.5-py313h6e3882f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cytoolz-1.1.0-py313hf050af9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.1-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.19-py313ha9a7918_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.20-py313h8b5a893_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-pyhd8ed1ab_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dpath-2.2.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/eccodes-2.45.0-hef68630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h8616949_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fiona-1.10.1-py313ha55c4c1_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda @@ -723,7 +771,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.17.1-h7a4440b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.61.1-py313h0f4d31d_0.conda @@ -731,9 +779,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.14.1-h694c41f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/freexl-2.0.0-h3183152_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.16-h8616949_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/frictionless-5.18.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.7.0-py313haf29b43_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.44.4-h07555a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.44.5-h49d54ea_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geojson-3.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda @@ -744,14 +793,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.2-h10d778d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.86.3-h8650975_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.86.4-h8501676_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glpk-5.0-h3cb5acd_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/google-crc32c-1.8.0-py313h49a2f01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda @@ -766,31 +815,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/h5py-3.15.1-nompi_py313h2a429bc_101.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-12.3.0-h8b84c26_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-12.3.2-h8b84c26_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf4-4.2.15-h8138101_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.6-nompi_h4b07496_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.6-nompi_hf563b80_106.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-country-4.1.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-utilities-4.0.6-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/highspy-1.12.0-np2py313h77a8fbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/highspy-1.13.1-np2py313h1160f3e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.2-h14c5de8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ijson-3.4.0.post0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imf-reader-1.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/immutables-0.21-py313h585f44e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ipopt-3.14.19-h69634d0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.1.0-pyh5552912_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.9.0-pyh53cf698_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ipopt-3.14.19-h97b3f9f_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyh5552912_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyh53cf698_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.8.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jasper-4.2.8-h9ce442b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda @@ -799,6 +856,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/jpype1-1.6.0-py313hc551f4f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/json-c-0.18-hc62ec3d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.13.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.0.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda @@ -808,53 +866,52 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.28.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.11-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.9-py313ha1c5e85_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.22.2-h207b36a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.18-h90db99b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyh742d864_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/levenshtein-0.27.3-py313hc4a83b5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250512.1-cxx17_hfc00f1c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.5-he7c3a48_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libarchive-3.8.5-gpl_h264331f_100.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-23.0.0-h8071b21_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-23.0.0-h9737151_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-23.0.0-hc26cc94_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-23.0.0-h9737151_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-23.0.0-h7f2e36e_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-23.0.0-h72f758e_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-23.0.0-h9737151_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-23.0.0-hc26cc94_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-23.0.0-h9737151_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-23.0.0-h7f2e36e_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.11.0-5_he492b99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.2.0-h8616949_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.2.0-h8616949_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.2.0-h8616949_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.11.0-5_h9b27e0a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.18.0-h9348e2b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h3d58e20_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.18.0-h9a2545f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h4fb565c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.25-h517ebb2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.3-heffb93a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-h750e83c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.4-h991f03e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.14.1-h694c41f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.1-h6912278_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_18.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-hb2c11ec_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-core-3.12.1-hc010f1d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf4-3.12.1-h303b8bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf5-3.12.1-ha756dc0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-netcdf-3.12.1-h73de3a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_15.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_15.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.86.3-hf241ffe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-core-3.12.2-hbf8631d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf4-3.12.2-h2f08c0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf5-3.12.2-hd721b9a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-netcdf-3.12.2-ha19e286_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.86.4-hec30fc1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.39.0-hed66dea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.39.0-h8ac052b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.73.1-h451496d_1.conda @@ -863,26 +920,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.2-h8616949_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libjxl-0.11.1-hde0fb83_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjxl-0.11.2-hde0fb83_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libkml-1.3.0-h450b6c2_1022.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.11.0-5_h859234e_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapacke-3.11.0-5_h94b3770_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.2-h11316ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.2-h11316ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.3-nompi_habf9e57_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hf3981d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.3-nompi_h29b767a_104.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.67.0-h3338091_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_h6006d49_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-1.21.0-h7d3f41d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-headers-1.21.0-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-23.0.0-ha0d2768_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.54-h07817ec_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-23.0.0-ha0d2768_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.55-h07817ec_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.31.1-hcc66ac3_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.11.05-h554ac88_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.60.0-h2da6fc3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.60.0-h99749c4_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librttopo-1.1.0-h16cd5d8_20.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libscotch-7.0.10-int64_h5eb5a6d_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libscotch-7.0.11-int64_h80fc1e8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.18-hbcb3906_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libspatialite-5.1.0-gpl_hb921464_119.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.2-hb99441e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda @@ -897,19 +953,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.43-h486b42e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzip-1.11.2-h31df5bb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.3-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-21.1.8-h472b3d1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lxml-6.0.2-py313h00bd3da_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-4.4.5-py313hab77a93_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.10.0-h240833e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lzo-2.10-h4132b18_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/marko-2.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.3-py313h0f4d31d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.8-py313habf4b1d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.8-py313h4ad75b8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/metis-5.1.0-h3023b02_1007.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/minizip-4.0.10-hfb7a1ec_0.conda @@ -918,15 +978,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.1.2-py313h5eff275_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/multidict-6.7.0-py313h5d7b66b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/mumps-include-5.8.1-hc797fd9_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/mumps-seq-5.8.1-h28c60b8_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mumps-include-5.8.2-h6a5cfba_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mumps-seq-5.8.2-h45e9145_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/muparser-2.3.5-hb996559_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda @@ -938,51 +998,53 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numcodecs-0.16.5-py313h2f264a9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numexpr-2.14.1-py313h821d116_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.1-py313hf1665ba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.2-py313hf1665ba_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/oda-reader-1.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.4-h87e8dc5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hc34da29_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.0-h230baf5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.1-hb6871ef_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.2.2-h3073fbf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.3-py313h2f264a9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.28.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.29.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.6-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.47-h13923f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.0-py313h16bb925_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.1-py313h16bb925_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-ha059160_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/polars-runtime-32-1.37.1-py310had17480_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/polars-runtime-32-1.38.1-py310had17480_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/proj-9.7.1-h4aacef1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/proj-9.7.1-h4aacef1_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/prometheus-cpp-1.3.0-h7802330_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.52-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/propcache-0.3.1-py313h717bdf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/protobuf-6.31.1-py313hc85ccdc_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.1-py313h16366db_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.2-py313h16366db_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pulp-2.8.0-py313hf4b1061_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-23.0.0-py313habf4b1d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-23.0.0-py313h7c712a9_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-23.0.0-py313h83f9c1b_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycountry-24.6.1-pyhd8ed1ab_0.conda @@ -990,8 +1052,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.5-py313hcc225dc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydeflate-2.3.4-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-12.1-py313h07bcf3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-12.1-py313hf669bc3_0.conda @@ -999,62 +1062,73 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pyomo-6.9.5-py313hc4a83b5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyphonetics-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyproj-3.7.2-py313hc0f1baa_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyscipopt-5.6.0-py313h253db18_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyscipopt-6.1.0-np2py313h1160f3e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pytables-3.10.2-py313hbe64c67_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pytables-3.10.2-py313h7d7b887_11.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.0-h3a8ca6c_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.12-h894a449_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-eccodes-2.45.0-np2py313h7488b0a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.12-h4df99d1_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-utils-3.9.1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h0f4d31d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h7c6a591_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.1.0-py312hb7d603e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/qhull-2020.2-h3c5361c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidfuzz-3.14.3-py313hc4a83b5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rasterio-1.5.0-py313hab02871_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rasterstats-0.20.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ratelimit-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.11.05-h7df6414_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-file-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/reretry-0.11.8-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.21.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.30.0-py313hcc225dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.15-py313h16366db_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.14.14-hb17bafe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.15.1-h5930b28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.8.0-np2py313he2891f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/scip-9.2.4-h078ad67_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/scip-10.0.1-h025d0e4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.17.0-py313h2bd7e7a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/shapely-2.1.2-py313h210a477_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/simplejson-3.20.2-py313hf050af9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smart_open-7.5.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-cluster-generic-1.0.9-pyhdfd78af_0.tar.bz2 - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.1.0-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.2.0-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.4.0-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-common-1.22.0-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-executor-plugins-9.3.9-pyhdfd78af_0.tar.bz2 @@ -1063,8 +1137,8 @@ environments: - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-scheduler-plugins-2.0.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-storage-plugins-4.3.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-logger-plugin-pypsa-0.1.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.15.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.2.1-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.16.3-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.3-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-http-0.3.0-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.2-h01f5ddf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda @@ -1074,38 +1148,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.51.2-h5af3ad2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/statsmodels-0.14.6-py313h0f4b8c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tableschema-to-template-0.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tbb-2022.3.0-h06b67a2_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/throttler-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.14.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.4-py313h16c19ce_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.23.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313hc551f4f_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ujson-5.11.0-py313h03db916_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.1.0-py313h252b9d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/uriparser-0.9.8-h6aefe2f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/url-normalize-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/validators-0.35.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.37.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wbgapi-1.0.12-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.9.0-pyhd8ed1ab_0.conda @@ -1114,21 +1195,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.3.0-ha8d0d41_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsx2csv-0.8.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlwt-1.3.0-py_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h8616949_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h8616949_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.2-h8df612c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.2-h8df612c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.2-h11316ed_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yarl-1.22.0-py313h0f4d31d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/yte-1.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h6c33b1e_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h93d8f39_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.2-h8bce59a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.3-h8bce59a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.25.0-py313hcb05632_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda osx-arm64: @@ -1141,6 +1222,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ampl-asl-1.0.0-h286801f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/amply-0.1.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.12.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda @@ -1150,7 +1232,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-25.1.0-py313h6535dbc_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argparse-dataclass-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-4.0.3-py313h8f79df9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-4.0.4-py313h8f79df9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda @@ -1169,40 +1251,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.7-h16f91aa_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.35.4-h74951b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.606-h4e1b0f7_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.1-h88fedcc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.13.2-h853621b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.16.0-h6507aac_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.12.0-ha416c23_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.14.0-hcfc4f22_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.2-he5ae378_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.13.3-h810541e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.16.0-hc57151b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.12.0-he467506_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.14.0-hf8a9d22_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.3.0-py313h48bb75e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-h5f6438b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/blosc-1.21.6-h7dd00d9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.34-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.34-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.50-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.51-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bottleneck-1.6.0-np2py313hc22c943_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/branca-0.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.2.0-h7d5ae5b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.2.0-hc919400_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py313hde1f3bb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-blosc2-2.22.0-hb83781b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-blosc2-2.23.0-hf9886e1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-he0f2337_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cartopy-0.25.0-py313h7d16b84_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py313h224173a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.5-py313hf5115c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda @@ -1221,33 +1305,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py313h2af2deb_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cppad-20250000.2-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.3-py313h76c770c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.5-py313he3f6fad_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-1.1.0-py313h6535dbc_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.1-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.19-py313hc37fe24_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.20-py313h1188861_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-pyhd8ed1ab_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dpath-2.2.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eccodes-2.45.0-h768f3a7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-hc919400_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.10.1-py313h7df67bf_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda @@ -1255,7 +1342,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.17.1-h2b252f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.61.1-py313h7d74516_0.conda @@ -1263,9 +1350,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.14.1-hce30654_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freexl-2.0.0-h3ab3353_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.16-hc919400_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/frictionless-5.18.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.7.0-py313hf28abc0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.4-h7542897_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.5-h5a2fd1c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geojson-3.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda @@ -1276,14 +1364,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/giflib-5.2.2-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.86.3-hb9d6e3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.86.4-h60c1bae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glpk-5.0-h6d7a090_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/google-crc32c-1.8.0-py313h11ab6f4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda @@ -1298,31 +1386,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/h5py-3.15.1-nompi_py313h7aa1c8b_101.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-12.3.0-h3103d1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-12.3.2-h3103d1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_h51e7c0a_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_had3affe_106.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-country-4.1.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-utilities-4.0.6-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/highspy-1.12.0-np2py313h9ce8dcc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/highspy-1.13.1-np2py313hdc65ad0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.2-h38cb7af_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ijson-3.4.0.post0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imf-reader-1.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/immutables-0.21-py313hcdf3177_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ipopt-3.14.19-hd6b6db2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.1.0-pyh5552912_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.9.0-pyh53cf698_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ipopt-3.14.19-h9191b9b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyh5552912_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyh53cf698_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.8.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jasper-4.2.8-hc0e5025_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda @@ -1331,6 +1427,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jpype1-1.6.0-py313hc50a443_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/json-c-0.18-he4178ee_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.13.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.0.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda @@ -1340,53 +1437,52 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.28.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.11-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.9-py313h7add70c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-h385eeb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.18-hdfa7624_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyh742d864_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/levenshtein-0.27.3-py313h0e822ff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250512.1-cxx17_hd41c47c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.5-h8664d51_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarchive-3.8.5-gpl_h6fbacd7_100.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-23.0.0-h4365f54_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-23.0.0-h6de58dd_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-23.0.0-h45df96a_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-23.0.0-h6de58dd_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-23.0.0-hb5627e6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-23.0.0-h585ae05_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-23.0.0-h6de58dd_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-23.0.0-h45df96a_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-23.0.0-h6de58dd_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-23.0.0-hb5627e6_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-5_h51639a9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-hc919400_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hc919400_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-5_hb0561ab_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.18.0-he38603e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-hf598326_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.18.0-hd5a2499_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-h55c6f16_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.25-hc11a715_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.4-hf6b4638_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.14.1-hce30654_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.1-h6da58f4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_18.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-h05bcc79_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-core-3.12.1-ha937536_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf4-3.12.1-hc515886_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf5-3.12.1-h2d8dc51_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-netcdf-3.12.1-hd244936_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_16.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_16.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.86.3-hfe11c1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-core-3.12.2-h779b996_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf4-3.12.2-h44e20f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf5-3.12.2-h48d8a21_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-netcdf-3.12.2-h4eb6350_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.86.4-he378b5c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.39.0-head0a95_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.39.0-hfa3a374_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.73.1-h3063b79_1.conda @@ -1395,26 +1491,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.2-hc919400_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.1-h913acd8_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.2-h913acd8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libkml-1.3.0-hc33e383_1022.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-5_hd9741b5_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapacke-3.11.0-5_h1b118fd_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.2-h8088a28_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.8.2-h8088a28_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.3-nompi_h80c4520_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.3-nompi_h7a8d41e_104.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.67.0-hc438710_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_ha158390_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.21.0-he15edb5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.21.0-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-23.0.0-hcc2992d_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.54-h132b30e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-23.0.0-hcc2992d_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.55-h132b30e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.31.1-h98f38fd_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.11.05-h91c62da_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.60.0-h5c55ec3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.60.0-h9001022_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librttopo-1.1.0-ha909e78_20.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libscotch-7.0.10-int64_ha305a69_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libscotch-7.0.11-int64_hd8baee2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.18-h27ca646_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libspatialite-5.1.0-gpl_ha239c29_119.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.2-h1ae2325_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda @@ -1429,19 +1524,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxslt-1.1.43-hb2570ba_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzip-1.11.2-h1336266_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.3-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-21.1.8-h4a912ad_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lxml-6.0.2-py313he6cafaa_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-4.4.5-py313hd065f0a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lzo-2.10-h925e9cb_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/marko-2.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py313h7d74516_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.8-py313h39782a4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.8-py313h58042b9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/metis-5.1.0-h15f6cfe_1007.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/minizip-4.0.10-hff1a8ea_0.conda @@ -1450,15 +1549,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.1.2-py313ha61f8ec_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.7.0-py313h92dd972_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mumps-include-5.8.1-h2ca763e_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mumps-seq-5.8.1-he6ca4b8_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mumps-include-5.8.2-h2ca763e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mumps-seq-5.8.2-he5473ce_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/muparser-2.3.5-h11e0b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda @@ -1470,51 +1569,53 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numcodecs-0.16.5-py313h7d16b84_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numexpr-2.14.1-py313h73ed539_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.1-py313h16eae64_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.2-py313h16eae64_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/oda-reader-1.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.4-hbfb3c88_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313he4f8f71_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.1-hd24854e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.2.2-hac85105_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.3-py313h7d16b84_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.28.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.29.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.6-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.0-py313h45e5a15_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.1-py313h45e5a15_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h81086ad_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-runtime-32-1.37.1-py310haaaf75b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-runtime-32-1.38.1-py310haaaf75b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.7.1-hfb14a63_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.7.1-hfb14a63_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.52-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.3.1-py313ha9b7d5b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-6.31.1-py313he4076bf_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.1-py313h6688731_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py313h6688731_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pulp-2.8.0-py313h02cf4f5_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-23.0.0-py313h39782a4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.0-py313hfb690af_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.0-py313h23b330d_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycountry-24.6.1-pyhd8ed1ab_0.conda @@ -1522,8 +1623,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.5-py313h2c089d5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydeflate-2.3.4-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-12.1-py313h40b429f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-12.1-py313hcc5defa_0.conda @@ -1531,62 +1633,73 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyomo-6.9.5-py313h0e822ff_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyphonetics-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyproj-3.7.2-py313h698103d_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyscipopt-5.6.0-py313hb4b7877_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyscipopt-6.1.0-np2py313hdc65ad0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytables-3.10.2-py313h5ba8fac_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytables-3.10.2-py313hffa1668_11.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.0-hbbac1ca_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.12-h20e6be0_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-eccodes-2.45.0-np2py313h2962dae_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.12-h4df99d1_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-utils-3.9.1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h7d74516_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h65a2061_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.1.0-py312hd65ceae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rapidfuzz-3.14.3-py313h0e822ff_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rasterio-1.5.0-py313h8ab8132_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rasterstats-0.20.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ratelimit-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.11.05-h64b956e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-file-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/reretry-0.11.8-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.21.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.30.0-py313h2c089d5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.15-py313h6688731_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.14.14-hb0cad00_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.15.1-h279115b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.8.0-np2py313h3b23316_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scip-9.2.4-ha1e27ce_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scip-10.0.1-h1003740_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.17.0-py313hc753a45_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/shapely-2.1.2-py313h10b2fc2_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/simplejson-3.20.2-py313h6535dbc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smart_open-7.5.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-cluster-generic-1.0.9-pyhdfd78af_0.tar.bz2 - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.1.0-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.2.0-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.4.0-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-common-1.22.0-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-executor-plugins-9.3.9-pyhdfd78af_0.tar.bz2 @@ -1595,8 +1708,8 @@ environments: - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-scheduler-plugins-2.0.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-storage-plugins-4.3.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-logger-plugin-pypsa-0.1.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.15.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.2.1-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.16.3-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.3-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-http-0.3.0-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.2-hada39a4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda @@ -1606,38 +1719,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.51.2-h77b7338_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/statsmodels-0.14.6-py313hc577518_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tableschema-to-template-0.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-2022.3.0-h4ddebb9_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/throttler-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.14.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.4-py313h6535dbc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.23.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hc50a443_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ujson-5.11.0-py313hab38a8b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.1.0-py313h5c29297_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uriparser-0.9.8-h00cdb27_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/url-normalize-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/validators-0.35.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.37.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wbgapi-1.0.12-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.9.0-pyhd8ed1ab_0.conda @@ -1646,25 +1766,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xerces-c-3.3.0-h25f632f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsx2csv-0.8.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlwt-1.3.0-py_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-hc919400_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hc919400_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.8.2-hd0f0c4f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.8.2-hd0f0c4f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.8.2-h8088a28_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.22.0-py313h7d74516_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/yte-1.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h888dc83_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hebf3989_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.2-hed4e4f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.3-hed4e4f5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.25.0-py313h9734d34_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda win-64: - - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/affine-2.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda @@ -1672,6 +1792,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ampl-asl-1.0.0-he0c23c2_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/amply-0.1.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.12.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda @@ -1680,7 +1801,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-25.1.0-py313h5ea7bf4_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argparse-dataclass-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/astroid-4.0.3-py313hfa70ccb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/astroid-4.0.4-py313hfa70ccb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/atlite-0.4.1-pyhd8ed1ab_1.conda @@ -1698,35 +1819,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.2.7-hcb3a2da_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/aws-crt-cpp-0.35.4-hca034e6_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/aws-sdk-cpp-1.11.606-hac16450_10.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/azure-core-cpp-1.16.2-h49e36cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/azure-identity-cpp-1.13.3-h5ffce34_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/azure-storage-blobs-cpp-12.16.0-hcd625b1_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/azure-storage-common-cpp-12.12.0-h5ffce34_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/azure-storage-files-datalake-cpp-12.14.0-h1678c0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/backports.zstd-1.3.0-py313h2a31948_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-h5f6438b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/blosc-1.21.6-hfd34d9b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.34-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.34-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.50-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.51-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bottleneck-1.6.0-np2py313haacffc7_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/branca-0.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-1.2.0-h2d644bc_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.2.0-hfd05255_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.2.0-py313h3ebfc14_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/c-ares-1.34.6-hfd05255_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/c-blosc2-2.22.0-h2af8807_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/c-blosc2-2.23.0-h2af8807_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h477c42c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cartopy-0.25.0-py313hc90dcd4_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-2.0.0-py313h5ea7bf4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cftime-1.6.5-py313h0591002_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh7428d3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda @@ -1745,41 +1873,44 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py313h1a38498_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cppad-20250000.2-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-46.0.3-py313hf5c5e30_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-46.0.5-py313hf5c5e30_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cytoolz-1.1.0-py313h5ea7bf4_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.1-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.19-py313h927ade5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.20-py313h927ade5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-pyhd8ed1ab_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/double-conversion-3.3.1-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/double-conversion-3.4.0-hac47afa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dpath-2.2.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/eccodes-2.45.0-h2bffdaa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/fiona-1.10.1-py313h0dbd5a6_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fiona-1.10.1-py313h8b19803_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.17.1-hd47e2ca_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.61.1-py313hd650c13_0.conda @@ -1788,8 +1919,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.14.1-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freexl-2.0.0-hf297d47_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.16-hfd05255_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/frictionless-5.18.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/frozenlist-1.7.0-py313h0c48a3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geojson-3.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda @@ -1802,14 +1934,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/glpk-5.0-h8ffe710_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/gmp-6.3.0-hfeafd45_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/google-crc32c-1.8.0-py313h5327936_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-hac47afa_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-14.1.0-h4c50273_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-14.1.2-h4c50273_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/grpcio-1.73.1-py313h3c83859_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.73.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda @@ -1818,30 +1950,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/h5py-3.15.1-nompi_py313hf7f959b_101.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-12.2.0-h5f2951f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-12.3.2-h5a1b470_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/hdf4-4.2.15-h5557f11_7.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.6-nompi_h89f0904_105.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/highspy-1.12.0-np2py313h776c0ec_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.6-nompi_hae35d4c_106.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-country-4.1.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-utilities-4.0.6-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/highspy-1.13.1-np2py313h776c0ec_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh7428d3b_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/icu-78.2-h637d24d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ijson-3.4.0.post0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imf-reader-1.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/immutables-0.21-py313h5ea7bf4_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ipopt-3.14.19-h75e447d_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.1.0-pyh6dadd2b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.9.0-pyhe2676ad_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ipopt-3.14.19-he5a0f77_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyh6dadd2b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyhe2676ad_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.8.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jasper-4.2.8-h8ad263b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda @@ -1849,6 +1989,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jpype1-1.6.0-py313hf069bd2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.13.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.0.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda @@ -1858,10 +1999,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyh6dadd2b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.28.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.11-pyhd8ed1ab_0.conda @@ -1869,40 +2010,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.18-hf2c6c5f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyh742d864_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/levenshtein-0.27.3-py313hfe59770_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libabseil-20250512.1-cxx17_habfad5f_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.5-haf901d7_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libarchive-3.8.5-gpl_he24518a_100.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-23.0.0-hcf7e2ff_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-23.0.0-h7d8d6a5_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-23.0.0-h2db994a_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-23.0.0-h7d8d6a5_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-23.0.0-hf865cc0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-23.0.0-hfcfc620_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-23.0.0-h7d8d6a5_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-23.0.0-h2db994a_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-23.0.0-h7d8d6a5_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-23.0.0-hf865cc0_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.11.0-7_h6c93730_netlib.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-1.88.0-h9dfe17d_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.2.0-hfd05255_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.2.0-hfd05255_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.2.0-hfd05255_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.11.0-7_hc41557d_netlib.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-21.1.8-default_ha2db4b5_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-21.1.8-default_ha2db4b5_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcrc32c-1.1.2-h0e60522_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.18.0-h43ecb02_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.25-h51727cc_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.3-hac47afa_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h52bdfb6_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.4-hac47afa_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h3d046cb_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.14.1-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.14.1-hdbac1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.2.0-h8ee18e1_16.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-core-3.11.5-h9732b15_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf4-3.11.5-ha47b6c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf5-3.11.5-h0f01001_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-netcdf-3.11.5-hbb26ad1_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.86.2-hd9c3897_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.2.0-h8ee18e1_16.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.2.0-h8ee18e1_18.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h4974f7c_12.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-core-3.12.2-h9774fe2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf4-3.12.2-h5bd48a5_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf5-3.12.2-h5260803_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-netcdf-3.12.2-h1c765f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.86.4-h0c9aed9_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.2.0-h8ee18e1_18.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-2.39.0-h19ee442_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-storage-2.39.0-he04ea4c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgrpc-1.73.1-h317e13b_1.conda @@ -1911,15 +2051,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.2-hfd05255_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libjxl-0.11.1-hf3f85d1_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjxl-0.11.2-hf3f85d1_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libkml-1.3.0-h68a222c_1022.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.11.0-7_h018ca30_netlib.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.2-hfd05255_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.8.2-hfd05255_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libnetcdf-4.9.3-nompi_h7d90bef_103.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-23.0.0-h7051d1f_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.54-h7351971_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-hfd05255_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libnetcdf-4.9.3-nompi_h3948bcf_104.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-23.0.0-h7051d1f_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.55-h7351971_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-6.31.1-hdcda5b4_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libre2-11-2025.11.05-h0eb2380_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/librttopo-1.1.0-haa95264_20.conda @@ -1930,29 +2069,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libthrift-0.22.0-h23985f6_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.1-h8f73337_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libutf8proc-2.11.3-hb980946_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libvulkan-loader-1.4.328.1-h477610d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libvulkan-loader-1.4.341.0-h477610d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_10.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.1-h06f855e_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.1-ha29bfb0_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-devel-2.15.1-ha29bfb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.1-h3cfd58e_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.1-h779ef1b_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-devel-2.15.1-h779ef1b_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxslt-1.1.43-h0fbe4c1_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzip-1.11.2-h3135430_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.3-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/llvm-openmp-21.1.8-h4fa8253_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh7428d3b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lxml-6.0.2-py313h1af1686_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-4.4.5-py313h4bbca4b_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.10.0-h2466b09_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lzo-2.10-h6a83c73_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/marko-2.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.3-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.10.8-py313hfa70ccb_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.8-py313he1ded55_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/minizip-4.0.10-h9fa1bad_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda @@ -1962,14 +2105,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.1.2-py313hf069bd2_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/multidict-6.7.0-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mumps-seq-5.8.1-hd297af6_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mumps-seq-5.8.2-h607cc0b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/muparser-2.3.5-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/netcdf4-1.7.3-nompi_py313hbe59507_100.conda @@ -1980,42 +2123,44 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numcodecs-0.16.5-py313hc90dcd4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numexpr-2.14.1-py313h7034ea3_101.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.4.1-py313hce7ae62_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.4.2-py313hce7ae62_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/oda-reader-1.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.4-h24db6dd_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313hc624790_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.1-hf411b9b_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/orc-2.2.2-hbd3206f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py313hc90dcd4_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.28.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.29.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.6-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.46-h3402e2f_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.1.0-py313h38f99e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.47-hd2b5f0e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.1.1-py313h38f99e1_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.4-h5112557_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/polars-runtime-32-1.37.1-py310hca7251b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/polars-runtime-32-1.38.1-py310hca7251b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/proj-9.7.1-hd30e2cd_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/proj-9.7.1-hd30e2cd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.52-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/propcache-0.3.1-py313hb4c8b1a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/protobuf-6.31.1-py313h16c7a9f_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.2.1-py313h5fd188c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.2.2-py313h5fd188c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pulp-2.8.0-py313h4a748c7_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -2029,30 +2174,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pydantic-core-2.41.5-py313hfbe8231_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydeflate-2.3.4-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyogrio-0.11.1-py313h0dbd5a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyogrio-0.12.1-py313h8b19803_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyomo-6.9.5-py313hfe59770_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyphonetics-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyproj-3.7.2-py313h24787ba_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyreadline3-3.5.4-py313hfa70ccb_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyscipopt-5.6.0-py313hfe59770_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyscipopt-6.1.0-np2py313h776c0ec_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.10.1-py313h475ba69_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.10.2-py313h475ba69_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pytables-3.10.2-py313h98afe49_10.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pytables-3.10.2-py313h98afe49_11.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.0-hf5aa216_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.12-h09917c8_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-eccodes-2.45.0-np2py313haacffc7_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.12-h4df99d1_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-utils-3.9.1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -2061,36 +2209,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py313h40c08fc_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py313hd650c13_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py313hd650c13_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.1.0-py312hbb5da91_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/qhull-2020.2-hc790b64_5.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.10.1-h7502b6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.10.2-h68b6638_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rapidfuzz-3.14.3-py313hfe59770_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rasterio-1.4.4-py313hfe0960c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rasterio-1.5.0-py313h1ced589_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rasterstats-0.20.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ratelimit-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/re2-2025.11.05-ha104f34_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-file-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/reretry-0.11.8-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.21.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.30.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.15-py313h5fd188c_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.14.14-h37e10c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.15.1-h213852a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scikit-learn-1.8.0-np2py313h4ce4a18_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/scip-9.2.4-h4cfe319_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/scip-10.0.1-h6f1fe5b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.17.0-py313he51e9a2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh6dadd2b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh6dadd2b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/shapely-2.1.2-py313h64ccc5a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/simplejson-3.20.2-py313h5ea7bf4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smart_open-7.5.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda @@ -2102,8 +2259,8 @@ environments: - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-scheduler-plugins-2.0.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-storage-plugins-4.3.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-logger-plugin-pypsa-0.1.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.15.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.2.1-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.16.3-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.3-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-http-0.3.0-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/snappy-1.2.2-h7fa0ca8_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda @@ -2113,24 +2270,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/sqlite-3.51.2-hdb435a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.6-py313h0591002_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tableschema-to-template-0.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2022.3.0-h3155e25_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh6dadd2b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/throttler-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h6ed50ae_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.14.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.4-py313h5ea7bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyha7b4d00_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.23.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda @@ -2138,39 +2299,44 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313hf069bd2_6.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ujson-5.11.0-py313h927ade5_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.1.0-py313hf069bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/uriparser-0.9.8-h5a68840_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/url-normalize-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/validators-0.35.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_34.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_34.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_34.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.37.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_34.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wbgapi-1.0.12-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-3.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win32_setctime-1.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py313h5ea7bf4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xerces-c-3.3.0-hac47afa_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsx2csv-0.8.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlwt-1.3.0-py_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.6-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.12-hf48077a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.13-hfa52320_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-hba3369d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-hba3369d_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.7-hba3369d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.18-hba3369d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.8.2-hb6c8415_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.8.2-hfd05255_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h6a83c73_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yarl-1.22.0-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/yte-1.9.4-pyhd8ed1ab_0.conda @@ -2179,7 +2345,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-ng-2.3.2-h0261ad2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-ng-2.3.3-h0261ad2_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.25.0-py313h5fd188c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda doc: @@ -2189,8 +2355,7 @@ environments: - url: https://conda.anaconda.org/gurobi/ packages: linux-64: - - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda @@ -2224,7 +2389,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.14.0-hb1c9500_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.10.0-hebae86a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-h8b27e44_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda @@ -2233,9 +2398,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb03c661_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h1289d80_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.22.0-hc31b594_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.23.0-hc31b594_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 @@ -2254,8 +2419,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py312h0a2e395_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.3-py312ha4b625e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.5-py312ha4b625e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hd9c7081_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py312h4c3975b_1.conda @@ -2270,7 +2435,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.3.1-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.45.0-h83bc92c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda @@ -2281,7 +2446,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.61.1-py312h8a5da7c_0.conda @@ -2290,7 +2455,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h9dce30a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.7.0-py312h447239a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-h2b0a6b4_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda @@ -2303,9 +2468,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.84.3-hf516916_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/google-crc32c-1.8.0-py312h03f33d3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda @@ -2320,9 +2485,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.15.1-nompi_py312ha4f8f14_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-11.4.5-h15599e2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h1b119a7_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_106.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/highspy-1.12.0-np2py312h0f77346_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/highspy-1.13.1-np2py312h0f77346_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda @@ -2340,8 +2505,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_105.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/levenshtein-0.27.3-py312h1289d80_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda @@ -2369,16 +2533,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.3-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.1-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_16.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h6f5c62b_11.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.10.3-h02f45b3_13.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_16.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.84.3-hf39c6af_0.conda @@ -2386,7 +2550,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.39.0-hdbdcf42_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.73.1-h3288cfb_1.conda @@ -2407,7 +2571,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-21.0.0-h790f06f_8_cpu.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.54-h421ea60_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-17.7-h5c52fec_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h7b12aa8_0.conda @@ -2416,8 +2580,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libspatialite-5.1.0-he17ca71_14.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.2-h0c1763c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_16.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h8261f1e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda @@ -2449,7 +2613,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/netcdf4-1.7.4-nompi_py312h25f8dc5_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda @@ -2461,33 +2625,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.10-he970967_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py312h7f6eeab_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.1-hd747db4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.0-py312h8ecdadd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.1-py312h8ecdadd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.45-hc749103_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.0-py312h50c33e8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py312h50c33e8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.37.1-py310hffdcd12_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.38.1-py310hffdcd12_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.6.2-h18fbb6c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.31.1-py312hb8af0ac_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.1-py312h5253ce2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py312h5253ce2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-21.0.0-py312h7900ff3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-21.0.0-py312hc195796_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-21.0.0-py312h7900ff3_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-21.0.0-py312hc195796_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybtex-0.25.1-pyhd8ed1ab_0.conda @@ -2507,17 +2671,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.9.2-py312h5654102_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pytables-3.10.2-py312hefc0c3f_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pytables-3.10.2-py312hefc0c3f_11.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.12-hfe2f287_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-2.45.0-np2py312hfb8c2c5_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-utils-3.9.1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.9.2-h3fc9a0a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidfuzz-3.14.3-py312h1289d80_1.conda @@ -2533,7 +2697,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.0-py312h54fa4ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-9.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools_scm-9.2.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/shapely-2.0.7-py312h21f5128_1.conda @@ -2560,16 +2724,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.3-py312h4c3975b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.0-py312h4c3975b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.1-py312h4c3975b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.8-hac33072_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda @@ -2587,17 +2751,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.6-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda @@ -2609,7 +2773,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.2-hceb46e0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py312h5253ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda osx-64: @@ -2643,7 +2807,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.14.0-hb076ce7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.10.0-h18ceab9_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.12.0-h8df8335_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/blosc-1.21.6-hd145fbb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda @@ -2652,9 +2816,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h462f358_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.6-hb5e19a0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/c-blosc2-2.22.0-hedb7e5f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-blosc2-2.23.0-h548f922_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 @@ -2673,8 +2837,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py312hb0c38da_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.3-py312heb31a8c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.5-py312h45fac9f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cytoolz-1.1.0-py312h80b0991_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2025.11.0-pyhcf101f3_0.conda @@ -2685,7 +2849,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/eccodes-2.45.0-hef68630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h8616949_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda @@ -2696,7 +2860,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.17.1-h7a4440b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.61.1-py312hacf3034_0.conda @@ -2704,7 +2868,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/freexl-2.0.0-h3183152_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.16-h8616949_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.7.0-py312h18bfd43_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-h5720e38_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda @@ -2717,9 +2881,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.3-h35d42e9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/google-crc32c-1.8.0-py312hb9001e9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda @@ -2734,9 +2898,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/h5py-3.15.1-nompi_py312hcf08926_101.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.4.5-h0ffbb26_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf4-4.2.15-h8138101_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.6-nompi_h4b07496_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.6-nompi_hf563b80_106.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/highspy-1.12.0-np2py312h855832a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/highspy-1.13.1-np2py312h834d234_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda @@ -2750,10 +2914,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/json-c-0.18-hc62ec3d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.0.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.9-py312h90e26e8_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.22.2-h207b36a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.18-h90db99b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/levenshtein-0.27.3-py312h69bf00f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250512.1-cxx17_hfc00f1c_0.conda @@ -2770,21 +2933,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h1c43f85_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.11.0-5_h9b27e0a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.18.0-h9348e2b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h3d58e20_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.18.0-h9a2545f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h4fb565c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.24-hcc1b750_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.3-heffb93a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.4-h991f03e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.14.1-h694c41f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.1-h6912278_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_18.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h8555400_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-core-3.10.3-h55ca5b3_13.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_15.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_18.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.3-h5fed8df_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.39.0-hed66dea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.39.0-h8ac052b_0.conda @@ -2801,7 +2964,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-1.21.0-h7d3f41d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-headers-1.21.0-h694c41f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-21.0.0-ha67a804_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.54-h07817ec_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.55-h07817ec_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.31.1-hcc66ac3_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.11.05-h554ac88_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda @@ -2837,7 +3000,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/netcdf4-1.7.4-nompi_py312h6ec3a75_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda @@ -2847,33 +3010,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/openjdk-25.0.1-h2014cc5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.4-h87e8dc5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py312h35dbd26_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.0-h230baf5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.1-hb6871ef_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.2.1-hd1b02dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-3.0.0-py312hc7bc305_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-3.0.1-py312h8e27051_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.45-hf733adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.0-py312h4985050_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.1-py312h4985050_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-ha059160_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/polars-runtime-32-1.37.1-py310had17480_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/polars-runtime-32-1.38.1-py310had17480_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/proj-9.6.2-h8462e38_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/prometheus-cpp-1.3.0-h7802330_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/propcache-0.3.1-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/protobuf-6.31.1-py312h457ac99_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.1-py312hf7082af_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.2-py312hf7082af_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-21.0.0-py312hb401068_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-21.0.0-py312h46fdf74_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-21.0.0-py312hb401068_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-21.0.0-py312h46fdf74_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybtex-0.25.1-pyhd8ed1ab_0.conda @@ -2892,17 +3055,17 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pytables-3.10.2-py312he4c742b_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pytables-3.10.2-py312hde43864_11.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.12-h3999593_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-eccodes-2.45.0-np2py312hdc59d4f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-utils-3.9.1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py312hacf3034_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py312h51361c1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/qhull-2020.2-h3c5361c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidfuzz-3.14.3-py312h69bf00f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rasterio-1.4.3-py312h2efda69_2.conda @@ -2916,7 +3079,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.17.0-py312ha20b133_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-9.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools_scm-9.2.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/shapely-2.0.7-py312hbf10b29_1.conda @@ -2943,16 +3106,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.4-py312h404bc50_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-17.0.0-py312h80b0991_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-17.0.1-py312h1a1c95f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/uriparser-0.9.8-h6aefe2f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda @@ -2968,7 +3131,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.2-h8bce59a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.3-h8bce59a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.25.0-py312h01f6755_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda osx-arm64: @@ -3002,7 +3165,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.14.0-he094cc7_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.10.0-h12fd690_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-h30213e0_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/blosc-1.21.6-h7dd00d9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda @@ -3011,7 +3174,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312h6b01ec3_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-blosc2-2.22.0-hb83781b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda @@ -3032,8 +3195,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py312h3093aea_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.3-py312hd13a024_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.5-py312h3fef973_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-1.1.0-py312h4409184_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2025.11.0-pyhcf101f3_0.conda @@ -3044,7 +3207,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eccodes-2.45.0-h768f3a7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-hc919400_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda @@ -3055,7 +3218,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.17.1-h2b252f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.61.1-py312h5748b74_0.conda @@ -3063,7 +3226,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freexl-2.0.0-h3ab3353_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.16-hc919400_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.7.0-py312h512c567_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7af3d76_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda @@ -3076,9 +3239,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.3-h857b2e6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/google-crc32c-1.8.0-py312h090f823_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda @@ -3093,9 +3256,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/h5py-3.15.1-nompi_py312h4eecd6b_101.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.4.5-hf4e55d4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_h51e7c0a_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_had3affe_106.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/highspy-1.12.0-np2py312h5a6ab93_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/highspy-1.13.1-np2py312h60fbb24_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda @@ -3109,10 +3272,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/json-c-0.18-he4178ee_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.0.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.9-py312hd8c8125_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-h385eeb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.18-hdfa7624_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/levenshtein-0.27.3-py312h455b684_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250512.1-cxx17_hd41c47c_0.conda @@ -3129,21 +3291,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-h6caf38d_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-5_hb0561ab_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.18.0-he38603e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-hf598326_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.18.0-hd5a2499_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-h55c6f16_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.4-hf6b4638_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.14.1-hce30654_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.1-h6da58f4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_18.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hb2c3a21_11.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-core-3.10.3-hef24e92_13.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_16.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_18.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.3-h587fa63_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.39.0-head0a95_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.39.0-hfa3a374_0.conda @@ -3160,7 +3322,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.21.0-he15edb5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.21.0-hce30654_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-21.0.0-h45c8936_8_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.54-h132b30e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.55-h132b30e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.31.1-h98f38fd_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.11.05-h91c62da_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda @@ -3196,7 +3358,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/netcdf4-1.7.4-nompi_py312h5d59a02_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda @@ -3206,33 +3368,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjdk-25.0.1-hde7fb7b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.4-hbfb3c88_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py312h2a925e6_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.1-hd24854e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.2.1-h4fd0076_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-3.0.0-py312hae6be28_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-3.0.1-py312hae6be28_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.45-ha881caa_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.0-py312h4e908a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.1-py312h4e908a4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h81086ad_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-runtime-32-1.37.1-py310haaaf75b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-runtime-32-1.38.1-py310haaaf75b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.6.2-hdbeaa80_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.3.1-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-6.31.1-py312h2c926ec_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.1-py312hb3ab3e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py312hb3ab3e3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-21.0.0-py312h1f38498_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-21.0.0-py312hae6ed00_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-21.0.0-py312h1f38498_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-21.0.0-py312hae6ed00_3_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybtex-0.25.1-pyhd8ed1ab_0.conda @@ -3256,12 +3418,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.12-hec0b533_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-eccodes-2.45.0-np2py312h877c910_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-utils-3.9.1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py312h5748b74_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py312h04c11ed_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rapidfuzz-3.14.3-py312h455b684_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rasterio-1.4.3-py312h460a678_2.conda @@ -3275,7 +3437,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.17.0-py312h0f234b1_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-9.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools_scm-9.2.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/shapely-2.0.7-py312hf733f26_1.conda @@ -3302,16 +3464,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.4-py312h4409184_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-17.0.0-py312h4409184_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-17.0.1-py312h2bbb03f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uriparser-0.9.8-h00cdb27_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda @@ -3327,11 +3489,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.2-hed4e4f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.3-hed4e4f5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.25.0-py312h37e1c23_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda win-64: - - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/accessible-pygments-0.0.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/affine-2.4.0-pyhd8ed1ab_1.conda @@ -3354,7 +3516,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.2.7-hcb3a2da_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/aws-crt-cpp-0.35.4-hca034e6_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/aws-sdk-cpp-1.11.606-hac16450_10.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/azure-core-cpp-1.16.2-h49e36cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/azure-identity-cpp-1.13.3-h5ffce34_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/azure-storage-blobs-cpp-12.16.0-hcd625b1_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/azure-storage-common-cpp-12.12.0-h5ffce34_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/azure-storage-files-datalake-cpp-12.14.0-h1678c0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/backports.zstd-1.3.0-py312h06d0912_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/blosc-1.21.6-hfd34d9b_1.conda @@ -3364,9 +3531,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-1.2.0-h2d644bc_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.2.0-hfd05255_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.2.0-py312hc6d9e41_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/c-ares-1.34.6-hfd05255_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/c-blosc2-2.22.0-h2af8807_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/c-blosc2-2.23.0-h2af8807_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 @@ -3385,8 +3552,8 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py312h78d62e6_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-46.0.3-py312h232196e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-46.0.5-py312h232196e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cytoolz-1.1.0-py312he06e257_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2025.11.0-pyhcf101f3_0.conda @@ -3398,7 +3565,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/double-conversion-3.3.1-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/eccodes-2.45.0-h2bffdaa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda @@ -3408,7 +3575,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.17.1-hd47e2ca_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.61.1-py312h05f76fc_0.conda @@ -3417,7 +3584,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/freexl-2.0.0-hf297d47_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.16-hfd05255_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/frozenlist-1.7.0-py312hfdf67e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-base-1.1.2-pyha770c72_0.conda @@ -3426,24 +3593,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/geotiff-1.7.4-h86c3423_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-h6a83c73_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/google-crc32c-1.8.0-py312h3d708b0_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-hac47afa_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-13.1.2-ha5e8f4b_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/grpcio-1.73.1-py312h9256aa6_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.73.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/grpcio-1.78.0-py312h5881051_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.78.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/h5py-3.15.1-nompi_py312h03cd2ba_101.conda - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.4.5-h5f2951f_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/hdf4-4.2.15-h5557f11_7.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.6-nompi_h89f0904_105.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/highspy-1.12.0-np2py312ha76dc74_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.6-nompi_hae35d4c_106.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/highspy-1.13.1-np2py312ha76dc74_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda @@ -3459,39 +3626,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/latexcodec-2.0.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.18-hf2c6c5f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/levenshtein-0.27.3-py312hbb81ca0_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libabseil-20250512.1-cxx17_habfad5f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libabseil-20260107.1-cxx17_h0eb2380_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.5-haf901d7_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libarchive-3.8.1-gpl_h1ca5a36_100.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-23.0.0-hcf7e2ff_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-23.0.0-h7d8d6a5_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-23.0.0-h2db994a_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-23.0.0-h7d8d6a5_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-23.0.0-hf865cc0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-23.0.1-hde9e798_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-23.0.1-h7d8d6a5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-23.0.1-h081cd8e_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-23.0.1-h7d8d6a5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-23.0.1-h524e9bd_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.11.0-7_h6c93730_netlib.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.2.0-hfd05255_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.2.0-hfd05255_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.2.0-hfd05255_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.11.0-7_hc41557d_netlib.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-21.1.8-default_ha2db4b5_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-21.1.8-default_ha2db4b5_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcrc32c-1.1.2-h0e60522_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.18.0-h43ecb02_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.24-h76ddb4d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.3-hac47afa_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.4-hac47afa_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.14.1-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.14.1-hdbac1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.2.0-h8ee18e1_16.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.2.0-h8ee18e1_18.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-core-3.10.3-h228a343_13.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.3-h1c1036b_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.2.0-h8ee18e1_16.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-2.39.0-h19ee442_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-storage-2.39.0-he04ea4c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgrpc-1.73.1-h317e13b_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.2.0-h8ee18e1_18.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-2.39.0-h01c467a_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-storage-2.39.0-he04ea4c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgrpc-1.78.0-h9ff2b3e_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.2-hfd05255_0.conda @@ -3499,10 +3665,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.11.0-7_h018ca30_netlib.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.2-hfd05255_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libnetcdf-4.9.3-nompi_ha45073a_102.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-23.0.0-h7051d1f_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.54-h7351971_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-6.31.1-hdcda5b4_4.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libre2-11-2025.11.05-h0eb2380_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-23.0.1-h7051d1f_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.55-h7351971_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-6.33.5-h61fc761_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libre2-11-2025.11.05-h04e5de1_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/librttopo-1.1.0-hbfc9ebc_18.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libspatialite-5.1.0-h378fb81_14.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.51.2-hf5d6505_0.conda @@ -3536,7 +3702,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/myst-parser-4.0.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/netcdf4-1.7.4-nompi_py312h8fa77f8_102.conda - conda: https://conda.anaconda.org/conda-forge/noarch/networkx-3.6.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nomkl-1.0-h5ca1d4c_0.tar.bz2 @@ -3545,32 +3711,32 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/openjdk-25.0.1-hda6743d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.4-h24db6dd_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py312h83acffa_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/orc-2.2.2-hbd3206f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.1-hf411b9b_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/orc-2.2.2-h0a1ad0e_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-26.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-3.0.0-py312h95189c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-3.0.1-py312h95189c4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.45-h99c9b8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.1.0-py312h31f0997_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.1.1-py312h31f0997_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.4-h5112557_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/polars-runtime-32-1.37.1-py310hca7251b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/polars-runtime-32-1.38.1-py310hca7251b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.7.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.5.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/proj-9.6.2-h7990399_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/propcache-0.3.1-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/protobuf-6.31.1-py312hcb3287e_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.2.1-py312he5662c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/protobuf-6.33.5-py312hcb3287e_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.2.2-py312he5662c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-23.0.0-py312h2e8e312_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-23.0.0-py312h85419b5_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-23.0.1-py312h2e8e312_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-23.0.1-py312h12c7521_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybtex-0.25.1-pyhd8ed1ab_0.conda @@ -3590,23 +3756,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.9.2-py312h0ba07f7_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pytables-3.10.2-py312h20cef2e_10.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pytables-3.10.2-py312h20cef2e_11.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.12-h30ce641_0_cpython.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-eccodes-2.45.0-np2py312h226b611_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-utils-3.9.1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.12-8_cp312.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py312h05f76fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py312h05f76fc_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/qhull-2020.2-hc790b64_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.9.2-h236c7cd_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rapidfuzz-3.14.3-py312hbb81ca0_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rasterio-1.4.3-py312h9aeec68_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/re2-2025.11.05-ha104f34_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/re2-2025.11.05-ha104f34_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-4.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-py-4.1.0-pyhd8ed1ab_0.conda @@ -3615,7 +3781,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.17.0-py312h9b3c559_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-9.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools_scm-9.2.2-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/shapely-2.0.7-py312h3f81574_1.conda @@ -3638,22 +3804,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sphinxcontrib-serializinghtml-1.1.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/sqlite-3.51.2-hdb435a2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.6-py312h196c9fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/symlink-exe-runtime-1.0-hcfcfb64_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/symlink-exe-runtime-1.0-hfd05255_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tabula-py-2.7.0-py312h2e8e312_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h6ed50ae_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.4-py312he06e257_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyha7b4d00_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.9-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/unicodedata2-17.0.0-py312he06e257_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/unicodedata2-17.0.1-py312he06e257_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/uriparser-0.9.8-h5a68840_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda @@ -3668,11 +3834,11 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.6-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.12-hf48077a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.13-hfa52320_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-hba3369d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-hba3369d_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.7-hba3369d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.18-hba3369d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h6a83c73_3.conda @@ -3680,7 +3846,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-ng-2.3.2-h0261ad2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-ng-2.3.3-h0261ad2_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda test: channels: @@ -3689,8 +3855,7 @@ environments: - url: https://conda.anaconda.org/gurobi/ packages: linux-64: - - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/adwaita-icon-theme-49.0-unix_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/affine-2.4.0-pyhd8ed1ab_1.conda @@ -3700,6 +3865,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.15.3-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ampl-asl-1.0.0-h5888daf_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/amply-0.1.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.12.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda @@ -3708,7 +3874,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-25.1.0-py313h07c4f96_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argparse-dataclass-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/astroid-4.0.3-py313h78bf25f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/astroid-4.0.4-py313h78bf25f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/at-spi2-atk-2.38.0-h0630a04_3.tar.bz2 @@ -3730,40 +3896,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.7-h8b1a151_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.35.4-h8824e59_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.606-h20b40b1_10.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.1-h3a458e0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.2-h3a5f585_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-h75daedc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-h3d7a050_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-hd454692_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.2-h206d751_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-hed0cdb0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-hdd73cc9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-ha7a2c86_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-h52c5a47_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py313h18e8e13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-h5f6438b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-he440d0b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.34-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.34-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.50-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.51-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.6.0-np2py313hc18bace_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/branca-0.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.2.0-hed03a55_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.2.0-py313hf159716_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.22.0-hc31b594_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.23.0-hc31b594_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.4-he90730b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cartopy-0.25.0-py313h08cd8bf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-2.0.0-py313hf46b229_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cftime-1.6.5-py313h29aa505_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda @@ -3782,36 +3950,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.3-py313hc8edb43_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cppad-20250000.2-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.3-py313heb322e3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.5-py313heb322e3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.28-hd9c7081_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cytoolz-1.1.0-py313h07c4f96_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.18-py313h5d5ffb9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.20-py313h5d5ffb9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-pyhd8ed1ab_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.4.0-hecca717_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dpath-2.2.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/eccodes-2.45.0-h83bc92c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fiona-1.10.1-py313hae45665_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda @@ -3819,7 +3990,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.61.1-py313h3dea7bd_0.conda @@ -3828,9 +3999,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.14.1-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freexl-2.0.0-h9dce30a_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.16-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/frictionless-5.18.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.7.0-py313h6b9daa2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.4-h2b0a6b4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.5-h2b0a6b4_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geojson-3.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda @@ -3841,14 +4013,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/giflib-5.2.2-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.86.3-hf516916_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.86.4-hf516916_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/glpk-5.0-h445213a_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/google-crc32c-1.8.0-py313h74173ec_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda @@ -3863,31 +4035,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.15.1-nompi_py313h253c126_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-12.3.0-h6083320_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-12.3.2-h6083320_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h1b119a7_105.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_106.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-country-4.1.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-utilities-4.0.6-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/highspy-1.12.0-np2py313h73dcb5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/highspy-1.13.1-np2py313h73dcb5b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-78.2-h33c6efd_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ijson-3.4.0.post0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imf-reader-1.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/immutables-0.21-py313h07c4f96_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ipopt-3.14.19-h0804adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.1.0-pyha191276_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.9.0-pyh53cf698_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyha191276_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyh53cf698_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.8.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.8-he3c4edf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda @@ -3896,6 +4076,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/jpype1-1.6.0-py313h7037e92_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/json-c-0.18-h6688a6e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.13.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.0.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda @@ -3905,10 +4086,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.28.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.11-pyhd8ed1ab_0.conda @@ -3917,25 +4098,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.18-h0c24ade_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_105.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyh742d864_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/levenshtein-0.27.3-py313h7033f15_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20250512.1-cxx17_hba17884_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.8.5-gpl_hc2c16d8_100.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.0-h2c50142_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.0-h635bf11_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.0-h8c2c5c3_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.0-h635bf11_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.0-h3f74fd7_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.0-h258748b_2_cuda.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.0-h635bf11_2_cuda.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.0-h8c2c5c3_2_cuda.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.0-h635bf11_2_cuda.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.0-h3f74fd7_2_cuda.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.2.0-hb03c661_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.11.0-5_h0358290_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.8-default_h746c552_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.8-default_h746c552_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.18.0-h4e3cde8_0.conda @@ -3946,28 +4126,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-devel-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.3-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.1-ha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_16.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.1-hf05ffb4_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf4-3.12.1-ha810028_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf5-3.12.1-h966a9c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-netcdf-3.12.1-ha526aae_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_16.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_16.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.2-hc2c0581_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf4-3.12.2-hf70aa56_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf5-3.12.2-hcaab353_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-netcdf-3.12.2-h03ef1cf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-devel-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.3-h6548e54_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-devel-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.39.0-hdbdcf42_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.73.1-h3288cfb_1.conda @@ -3975,15 +4155,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwy-1.3.0-h4c17acf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.1-ha09017c_8.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-ha09017c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-haa4a5bd_1022.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.11.0-5_h47877c9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapacke-3.11.0-5_h6ae95b6_openblas.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm21-21.1.8-hf7376ad_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.2-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.2-hb03c661_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_h11f7409_103.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_hbf2fc22_104.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda @@ -3991,13 +4171,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-1.21.0-hb9b0907_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopentelemetry-cpp-headers-1.21.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.0-h7376487_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.0-h7376487_2_cuda.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.54-h421ea60_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.1-hb80d175_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.2-hb80d175_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h7b12aa8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.60.0-h61e6d4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.60.2-h61e6d4b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h46dd2a8_20.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libscotch-7.0.4-h2fe6a88_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda @@ -4005,13 +4185,13 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libspral-2025.05.20-hfabd9d1_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.51.2-hf4e2dac_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_16.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_16.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.11.3-hfe17d71_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.41.3-h5347b49_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.328.1-h5279c79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda @@ -4022,18 +4202,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.3-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.0.2-py313h4a16004_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-4.4.5-py313h28739b2_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-h280c20c_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/marko-2.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py313h3dea7bd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.8-py313h78bf25f_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.8-py313h683a580_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/metis-5.1.0-hd0bcaf9_1007.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/minizip-4.0.10-h05a5f5f_0.conda @@ -4047,10 +4231,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/muparser-2.3.5-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda @@ -4063,52 +4247,54 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numcodecs-0.16.5-py313h08cd8bf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/numexpr-2.14.1-py313h24ae7f9_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.1-py313hf6604e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.2-py313hf6604e3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/oda-reader-1.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.4-h55fea9a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.10-he970967_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openpyxl-3.1.5-py313ha4be090_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.2-h19cb568_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.3.3-py313h08cd8bf_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.28.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.29.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.56.4-hadf4263_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.6-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.47-haa7fec5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.0-py313h80991f8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py313h80991f8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.37.1-py310hffdcd12_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.38.1-py310hffdcd12_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.52-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.3.1-py313h8060acc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.31.1-py313h8c92afc_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.1-py313h54dd161_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313h54dd161_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pulp-2.8.0-py313hf1034c9_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-23.0.0-py313h78bf25f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.0-py313he109ebe_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.0-py313hfe0801a_0_cuda.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycountry-24.6.1-pyhd8ed1ab_0.conda @@ -4116,72 +4302,84 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pydantic-core-2.41.5-py313h843e2db_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydeflate-2.3.4-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyogrio-0.12.1-py313hae45665_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyomo-6.9.5-py313h7033f15_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyphonetics-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.7.2-py313h77f6078_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyscipopt-5.6.0-py313h7033f15_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyscipopt-6.1.0-np2py313h73dcb5b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.10.1-py313h85046ba_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.10.2-py313h85046ba_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pytables-3.10.2-py313h0546747_10.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pytables-3.10.2-py313h0546747_11.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.11-hc97d973_100_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.12-hc97d973_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/python-eccodes-2.45.0-np2py313hc18bace_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.12-h4df99d1_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-utils-3.9.1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.1.0-py312hfb55c3c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.10.1-hb82b983_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.10.2-hb82b983_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidfuzz-3.14.3-py313h7033f15_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rasterio-1.5.0-py313h2005660_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rasterstats-0.20.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ratelimit-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-file-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/reretry-0.11.8-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.21.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.30.0-py313h843e2db_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.15-py313h54dd161_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.14-h4196e79_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.15.1-h40fa522_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.6.2-he8a4886_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scikit-learn-1.8.0-np2py313h16d504d_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scip-9.2.4-hd8b5c82_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scip-10.0.1-hd8b5c82_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.0-py313h4b8bb8b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/shapely-2.1.2-py313had47c43_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/simplejson-3.20.2-py313h07c4f96_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smart_open-7.5.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-cluster-generic-1.0.9-pyhdfd78af_0.tar.bz2 - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.1.0-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.2.0-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.4.0-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-common-1.22.0-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-executor-plugins-9.3.9-pyhdfd78af_0.tar.bz2 @@ -4190,8 +4388,8 @@ environments: - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-scheduler-plugins-2.0.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-storage-plugins-4.3.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-logger-plugin-pypsa-0.1.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.15.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.2.1-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.16.3-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.3-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-http-0.3.0-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.2-h03e3b7b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda @@ -4201,39 +4399,46 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.51.2-h04a0ce9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/statsmodels-0.14.6-py313h29aa505_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tableschema-to-template-0.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2022.3.0-h8d10470_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/throttler-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.14.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.5.3-py313h07c4f96_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.23.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h7037e92_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ujson-5.11.0-py313h5d5ffb9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py313h7037e92_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/uriparser-0.9.8-hac33072_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/url-normalize-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/validators-0.35.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.37.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.24.0-hd6090a7_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wbgapi-1.0.12-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.9.0-pyhd8ed1ab_0.conda @@ -4249,19 +4454,22 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-hd9031aa_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.46-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsx2csv-0.8.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlwt-1.3.0-py_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxinerama-1.1.6-hecca717_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.7-hb03c661_0.conda @@ -4278,7 +4486,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.2-hceb46e0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py313h54dd161_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.7-hb78ec9c_6.conda osx-64: @@ -4291,6 +4499,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ampl-asl-1.0.0-h240833e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/amply-0.1.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.12.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda @@ -4300,7 +4509,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/argon2-cffi-bindings-25.1.0-py313hf050af9_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argparse-dataclass-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/astroid-4.0.3-py313habf4b1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/astroid-4.0.4-py313habf4b1d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda @@ -4319,40 +4528,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-checksums-0.2.7-h901532c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-crt-cpp-0.35.4-h7484968_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/aws-sdk-cpp-1.11.606-h386ebac_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.1-he2a98a9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.13.2-h0e8e1c8_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.16.0-ha4e89a6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.12.0-h2a5eb39_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.14.0-h7f37a48_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.2-h87f1c7e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.13.3-h1135191_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.16.0-h9b4319f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.12.0-h7373072_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.14.0-he1781d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/backports.zstd-1.3.0-py313h591e92b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-h5f6438b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/blosc-1.21.6-hd145fbb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.34-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.34-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.50-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.51-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bottleneck-1.6.0-np2py313h4e95564_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/branca-0.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.2.0-hf139dec_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.2.0-h8616949_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.2.0-py313h8d69aa9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.6-hb5e19a0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/c-blosc2-2.22.0-hedb7e5f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-blosc2-2.23.0-h548f922_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.4-h7656bdc_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cartopy-0.25.0-py313h2f264a9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-2.0.0-py313hf57695f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cftime-1.6.5-py313hceb611b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda @@ -4371,33 +4582,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.3-py313h98b818e_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cppad-20250000.2-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.3-py313h36c3d76_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.5-py313h6e3882f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cytoolz-1.1.0-py313hf050af9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.1-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.19-py313ha9a7918_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.20-py313h8b5a893_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-pyhd8ed1ab_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dpath-2.2.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/eccodes-2.45.0-hef68630_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/epoxy-1.5.10-h8616949_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fiona-1.10.1-py313ha55c4c1_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda @@ -4405,7 +4619,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.17.1-h7a4440b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.61.1-py313h0f4d31d_0.conda @@ -4413,9 +4627,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.14.1-h694c41f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/freexl-2.0.0-h3183152_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.16-h8616949_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/frictionless-5.18.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.7.0-py313haf29b43_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.44.4-h07555a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.44.5-h49d54ea_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geojson-3.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda @@ -4426,14 +4641,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/giflib-5.2.2-h10d778d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.86.3-h8650975_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.86.4-h8501676_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glog-0.7.1-h2790a97_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/glpk-5.0-h3cb5acd_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/google-crc32c-1.8.0-py313h49a2f01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda @@ -4448,31 +4663,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/h5py-3.15.1-nompi_py313h2a429bc_101.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-12.3.0-h8b84c26_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-12.3.2-h8b84c26_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf4-4.2.15-h8138101_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.6-nompi_h4b07496_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.6-nompi_hf563b80_106.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-country-4.1.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-utilities-4.0.6-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hicolor-icon-theme-0.17-h694c41f_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/highspy-1.12.0-np2py313h77a8fbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/highspy-1.13.1-np2py313h1160f3e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-78.2-h14c5de8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ijson-3.4.0.post0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imf-reader-1.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/immutables-0.21-py313h585f44e_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ipopt-3.14.19-h69634d0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.1.0-pyh5552912_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.9.0-pyh53cf698_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ipopt-3.14.19-h97b3f9f_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyh5552912_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyh53cf698_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.8.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jasper-4.2.8-h9ce442b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda @@ -4481,6 +4704,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/jpype1-1.6.0-py313hc551f4f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/json-c-0.18-hc62ec3d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.13.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.0.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda @@ -4490,53 +4714,52 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.28.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.11-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.9-py313ha1c5e85_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.22.2-h207b36a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.18-h90db99b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyh742d864_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hcca01a6_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/levenshtein-0.27.3-py313hc4a83b5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20250512.1-cxx17_hfc00f1c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.5-he7c3a48_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libarchive-3.8.5-gpl_h264331f_100.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-23.0.0-h8071b21_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-23.0.0-h9737151_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-23.0.0-hc26cc94_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-23.0.0-h9737151_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-23.0.0-h7f2e36e_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-23.0.0-h72f758e_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-23.0.0-h9737151_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-23.0.0-hc26cc94_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-23.0.0-h9737151_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-23.0.0-h7f2e36e_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.11.0-5_he492b99_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.2.0-h8616949_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.2.0-h8616949_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.2.0-h8616949_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.11.0-5_h9b27e0a_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcrc32c-1.1.2-he49afe7_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.18.0-h9348e2b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h3d58e20_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.18.0-h9a2545f_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h4fb565c_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.25-h517ebb2_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libevent-2.1.12-ha90c15b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.3-heffb93a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-h750e83c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.4-h991f03e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype-2.14.1-h694c41f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libfreetype6-2.14.1-h6912278_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_15.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_18.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-hb2c11ec_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-core-3.12.1-hc010f1d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf4-3.12.1-h303b8bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf5-3.12.1-ha756dc0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-netcdf-3.12.1-h73de3a7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_15.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_15.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.86.3-hf241ffe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-core-3.12.2-hbf8631d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf4-3.12.2-h2f08c0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf5-3.12.2-hd721b9a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-netcdf-3.12.2-ha19e286_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.86.4-hec30fc1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-2.39.0-hed66dea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgoogle-cloud-storage-2.39.0-h8ac052b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libgrpc-1.73.1-h451496d_1.conda @@ -4545,26 +4768,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.25.1-h3184127_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.1.2-h8616949_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libjxl-0.11.1-hde0fb83_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libjxl-0.11.2-hde0fb83_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libkml-1.3.0-h450b6c2_1022.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.11.0-5_h859234e_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapacke-3.11.0-5_h94b3770_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.2-h11316ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.2-h11316ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.3-nompi_habf9e57_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hf3981d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.3-nompi_h29b767a_104.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.67.0-h3338091_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.30-openmp_h6006d49_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-1.21.0-h7d3f41d_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopentelemetry-cpp-headers-1.21.0-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-23.0.0-ha0d2768_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.54-h07817ec_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-23.0.0-ha0d2768_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.55-h07817ec_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-6.31.1-hcc66ac3_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libre2-11-2025.11.05-h554ac88_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.60.0-h2da6fc3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.60.0-h99749c4_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/librttopo-1.1.0-h16cd5d8_20.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libscotch-7.0.10-int64_h5eb5a6d_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libscotch-7.0.11-int64_h80fc1e8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.18-hbcb3906_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libspatialite-5.1.0-gpl_hb921464_119.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.51.2-hb99441e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda @@ -4579,19 +4801,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.43-h486b42e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzip-1.11.2-h31df5bb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.3-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-21.1.8-h472b3d1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lxml-6.0.2-py313h00bd3da_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-4.4.5-py313hab77a93_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.10.0-h240833e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lzo-2.10-h4132b18_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/marko-2.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.3-py313h0f4d31d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.8-py313habf4b1d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.8-py313h4ad75b8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/metis-5.1.0-h3023b02_1007.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/minizip-4.0.10-hfb7a1ec_0.conda @@ -4600,15 +4826,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.1.2-py313h5eff275_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/multidict-6.7.0-py313h5d7b66b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/mumps-include-5.8.1-hc797fd9_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/mumps-seq-5.8.1-h28c60b8_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mumps-include-5.8.2-h6a5cfba_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mumps-seq-5.8.2-h45e9145_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/muparser-2.3.5-hb996559_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-h0622a9a_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda @@ -4620,51 +4846,53 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numcodecs-0.16.5-py313h2f264a9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/numexpr-2.14.1-py313h821d116_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.1-py313hf1665ba_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.2-py313hf1665ba_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/oda-reader-1.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.4-h87e8dc5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openpyxl-3.1.5-py313hc34da29_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.0-h230baf5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.1-hb6871ef_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/orc-2.2.2-h3073fbf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.3-py313h2f264a9_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.28.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.29.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.56.4-h6ef8af8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.6-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.47-h13923f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.0-py313h16bb925_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.1-py313h16bb925_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.46.4-ha059160_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/polars-runtime-32-1.37.1-py310had17480_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/polars-runtime-32-1.38.1-py310had17480_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/proj-9.7.1-h4aacef1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/proj-9.7.1-h4aacef1_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/prometheus-cpp-1.3.0-h7802330_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.52-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/propcache-0.3.1-py313h717bdf5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/protobuf-6.31.1-py313hc85ccdc_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.1-py313h16366db_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.2-py313h16366db_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pulp-2.8.0-py313hf4b1061_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-23.0.0-py313habf4b1d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-23.0.0-py313h7c712a9_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-23.0.0-py313h83f9c1b_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycountry-24.6.1-pyhd8ed1ab_0.conda @@ -4672,8 +4900,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pydantic-core-2.41.5-py313hcc225dc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydeflate-2.3.4-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-core-12.1-py313h07bcf3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyobjc-framework-cocoa-12.1-py313hf669bc3_0.conda @@ -4681,62 +4910,73 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/pyomo-6.9.5-py313hc4a83b5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyphonetics-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyproj-3.7.2-py313hc0f1baa_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyscipopt-5.6.0-py313h253db18_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyscipopt-6.1.0-np2py313h1160f3e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pytables-3.10.2-py313hbe64c67_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pytables-3.10.2-py313h7d7b887_11.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.0-h3a8ca6c_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.12-h894a449_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/python-eccodes-2.45.0-np2py313h7488b0a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.12-h4df99d1_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-utils-3.9.1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h0f4d31d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h7c6a591_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pyzmq-27.1.0-py312hb7d603e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/qhull-2020.2-h3c5361c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidfuzz-3.14.3-py313hc4a83b5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rasterio-1.5.0-py313hab02871_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rasterstats-0.20.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ratelimit-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/re2-2025.11.05-h7df6414_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-file-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/reretry-0.11.8-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.21.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rpds-py-0.30.0-py313hcc225dc_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.15-py313h16366db_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.14.14-hb17bafe_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.15.1-h5930b28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scikit-learn-1.8.0-np2py313he2891f2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/scip-9.2.4-h078ad67_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/scip-10.0.1-h025d0e4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.17.0-py313h2bd7e7a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/shapely-2.1.2-py313h210a477_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/simplejson-3.20.2-py313hf050af9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smart_open-7.5.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-cluster-generic-1.0.9-pyhdfd78af_0.tar.bz2 - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.1.0-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.2.0-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.4.0-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-common-1.22.0-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-executor-plugins-9.3.9-pyhdfd78af_0.tar.bz2 @@ -4745,8 +4985,8 @@ environments: - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-scheduler-plugins-2.0.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-storage-plugins-4.3.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-logger-plugin-pypsa-0.1.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.15.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.2.1-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.16.3-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.3-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-http-0.3.0-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.2-h01f5ddf_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda @@ -4756,38 +4996,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.51.2-h5af3ad2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/statsmodels-0.14.6-py313h0f4b8c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tableschema-to-template-0.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tbb-2022.3.0-h06b67a2_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/throttler-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.14.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.5.4-py313h16c19ce_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.23.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313hc551f4f_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ujson-5.11.0-py313h03db916_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.1.0-py313h252b9d7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/uriparser-0.9.8-h6aefe2f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/url-normalize-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/validators-0.35.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.37.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wbgapi-1.0.12-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.9.0-pyhd8ed1ab_0.conda @@ -4796,21 +5043,21 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.3.0-ha8d0d41_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsx2csv-0.8.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlwt-1.3.0-py_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h8616949_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h8616949_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.2-h8df612c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.2-h8df612c_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.2-h11316ed_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h4132b18_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yarl-1.22.0-py313h0f4d31d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/yte-1.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h6c33b1e_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h93d8f39_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.2-h8bce59a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.3-h8bce59a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.25.0-py313hcb05632_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda osx-arm64: @@ -4823,6 +5070,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ampl-asl-1.0.0-h286801f_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/amply-0.1.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.12.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda @@ -4832,7 +5080,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/argon2-cffi-bindings-25.1.0-py313h6535dbc_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argparse-dataclass-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-4.0.3-py313h8f79df9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-4.0.4-py313h8f79df9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda @@ -4851,40 +5099,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-checksums-0.2.7-h16f91aa_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-crt-cpp-0.35.4-h74951b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aws-sdk-cpp-1.11.606-h4e1b0f7_10.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.1-h88fedcc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.13.2-h853621b_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.16.0-h6507aac_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.12.0-ha416c23_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.14.0-hcfc4f22_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.2-he5ae378_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.13.3-h810541e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.16.0-hc57151b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.12.0-he467506_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.14.0-hf8a9d22_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/backports.zstd-1.3.0-py313h48bb75e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-h5f6438b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/blosc-1.21.6-h7dd00d9_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.34-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.34-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.50-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.51-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bottleneck-1.6.0-np2py313hc22c943_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/branca-0.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.2.0-h7d5ae5b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.2.0-hc919400_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.2.0-py313hde1f3bb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-blosc2-2.22.0-hb83781b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-blosc2-2.23.0-hf9886e1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-hbd8a1cb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.4-he0f2337_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cartopy-0.25.0-py313h7d16b84_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-2.0.0-py313h224173a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cftime-1.6.5-py313hf5115c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda @@ -4903,33 +5153,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.3-py313h2af2deb_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cppad-20250000.2-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.3-py313h76c770c_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.5-py313he3f6fad_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cytoolz-1.1.0-py313h6535dbc_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.1-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.19-py313hc37fe24_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.20-py313h1188861_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-pyhd8ed1ab_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dpath-2.2.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eccodes-2.45.0-h768f3a7_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/epoxy-1.5.10-hc919400_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fiona-1.10.1-py313h7df67bf_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda @@ -4937,7 +5190,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.17.1-h2b252f5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.61.1-py313h7d74516_0.conda @@ -4945,9 +5198,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.14.1-hce30654_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freexl-2.0.0-h3ab3353_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.16-hc919400_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/frictionless-5.18.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.7.0-py313hf28abc0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.4-h7542897_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.5-h5a2fd1c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geojson-3.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda @@ -4958,14 +5212,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/giflib-5.2.2-h93a5062_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitdb-4.0.12-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/gitpython-3.1.46-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.86.3-hb9d6e3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.86.4-h60c1bae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glog-0.7.1-heb240a5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glpk-5.0-h6d7a090_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/google-crc32c-1.8.0-py313h11ab6f4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda @@ -4980,31 +5234,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/h5py-3.15.1-nompi_py313h7aa1c8b_101.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-12.3.0-h3103d1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-12.3.2-h3103d1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_h51e7c0a_105.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_had3affe_106.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-country-4.1.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-utilities-4.0.6-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hicolor-icon-theme-0.17-hce30654_2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/highspy-1.12.0-np2py313h9ce8dcc_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/highspy-1.13.1-np2py313hdc65ad0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh707e725_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.2-h38cb7af_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ijson-3.4.0.post0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imf-reader-1.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/immutables-0.21-py313hcdf3177_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ipopt-3.14.19-hd6b6db2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.1.0-pyh5552912_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.9.0-pyh53cf698_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ipopt-3.14.19-h9191b9b_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyh5552912_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyh53cf698_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.8.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jasper-4.2.8-hc0e5025_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda @@ -5013,6 +5275,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jpype1-1.6.0-py313hc50a443_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/json-c-0.18-he4178ee_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.13.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.0.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda @@ -5022,53 +5285,52 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyhc90fa1f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.28.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.11-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.9-py313h7add70c_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-h385eeb1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.18-hdfa7624_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyh742d864_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/levenshtein-0.27.3-py313h0e822ff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20250512.1-cxx17_hd41c47c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.5-h8664d51_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarchive-3.8.5-gpl_h6fbacd7_100.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-23.0.0-h4365f54_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-23.0.0-h6de58dd_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-23.0.0-h45df96a_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-23.0.0-h6de58dd_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-23.0.0-hb5627e6_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-23.0.0-h585ae05_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-23.0.0-h6de58dd_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-23.0.0-h45df96a_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-23.0.0-h6de58dd_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-23.0.0-hb5627e6_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.11.0-5_h51639a9_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.2.0-hc919400_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.2.0-hc919400_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.2.0-hc919400_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.11.0-5_hb0561ab_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcrc32c-1.1.2-hbdafb3b_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.18.0-he38603e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-hf598326_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.18.0-hd5a2499_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-h55c6f16_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.25-hc11a715_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libevent-2.1.12-h2757513_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.4-hf6b4638_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype-2.14.1-hce30654_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libfreetype6-2.14.1-h6da58f4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_16.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_18.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-h05bcc79_12.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-core-3.12.1-ha937536_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf4-3.12.1-hc515886_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf5-3.12.1-h2d8dc51_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-netcdf-3.12.1-hd244936_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_16.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_16.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.86.3-hfe11c1f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-core-3.12.2-h779b996_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf4-3.12.2-h44e20f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf5-3.12.2-h48d8a21_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-netcdf-3.12.2-h4eb6350_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_18.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.86.4-he378b5c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-2.39.0-head0a95_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgoogle-cloud-storage-2.39.0-hfa3a374_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgrpc-1.73.1-h3063b79_1.conda @@ -5077,26 +5339,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.1.2-hc919400_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.1-h913acd8_8.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.2-h913acd8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libkml-1.3.0-hc33e383_1022.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.11.0-5_hd9741b5_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapacke-3.11.0-5_h1b118fd_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.2-h8088a28_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.8.2-h8088a28_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.3-nompi_h80c4520_103.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.3-nompi_h7a8d41e_104.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.67.0-hc438710_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.30-openmp_ha158390_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-1.21.0-he15edb5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopentelemetry-cpp-headers-1.21.0-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-23.0.0-hcc2992d_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.54-h132b30e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-23.0.0-hcc2992d_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.55-h132b30e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-6.31.1-h98f38fd_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libre2-11-2025.11.05-h91c62da_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.60.0-h5c55ec3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.60.0-h9001022_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librttopo-1.1.0-ha909e78_20.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libscotch-7.0.10-int64_ha305a69_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libscotch-7.0.11-int64_hd8baee2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.18-h27ca646_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libspatialite-5.1.0-gpl_ha239c29_119.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.51.2-h1ae2325_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda @@ -5111,19 +5372,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxslt-1.1.43-hb2570ba_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzip-1.11.2-h1336266_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.3-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-21.1.8-h4a912ad_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lxml-6.0.2-py313he6cafaa_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-4.4.5-py313hd065f0a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.10.0-h286801f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lzo-2.10-h925e9cb_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/marko-2.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.3-py313h7d74516_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.8-py313h39782a4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.8-py313h58042b9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/metis-5.1.0-h15f6cfe_1007.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/minizip-4.0.10-hff1a8ea_0.conda @@ -5132,15 +5397,15 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.1.2-py313ha61f8ec_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.7.0-py313h92dd972_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mumps-include-5.8.1-h2ca763e_4.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mumps-seq-5.8.1-he6ca4b8_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mumps-include-5.8.2-h2ca763e_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mumps-seq-5.8.2-he5473ce_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/muparser-2.3.5-h11e0b38_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda @@ -5152,51 +5417,53 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numcodecs-0.16.5-py313h7d16b84_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numexpr-2.14.1-py313h73ed539_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.1-py313h16eae64_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.2-py313h16eae64_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/oda-reader-1.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.4-hbfb3c88_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openpyxl-3.1.5-py313he4f8f71_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.1-hd24854e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/orc-2.2.2-hac85105_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.3-py313h7d16b84_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.28.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.29.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.56.4-h875632e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.6-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.47-h30297fc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.0-py313h45e5a15_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.1-py313h45e5a15_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.46.4-h81086ad_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-runtime-32-1.37.1-py310haaaf75b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-runtime-32-1.38.1-py310haaaf75b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.7.1-hfb14a63_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.7.1-hfb14a63_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/prometheus-cpp-1.3.0-h0967b3e_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.52-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.3.1-py313ha9b7d5b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/protobuf-6.31.1-py313he4076bf_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.1-py313h6688731_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py313h6688731_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pulp-2.8.0-py313h02cf4f5_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/py-cpuinfo-9.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-23.0.0-py313h39782a4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.0-py313hfb690af_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.0-py313h23b330d_0_cpu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-modules-0.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycountry-24.6.1-pyhd8ed1ab_0.conda @@ -5204,8 +5471,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pydantic-core-2.41.5-py313h2c089d5_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydeflate-2.3.4-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-core-12.1-py313h40b429f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyobjc-framework-cocoa-12.1-py313hcc5defa_0.conda @@ -5213,62 +5481,73 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyomo-6.9.5-py313h0e822ff_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyphonetics-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyproj-3.7.2-py313h698103d_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyscipopt-5.6.0-py313hb4b7877_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyscipopt-6.1.0-np2py313hdc65ad0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytables-3.10.2-py313h5ba8fac_10.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytables-3.10.2-py313hffa1668_11.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.0-hbbac1ca_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.12-h20e6be0_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-eccodes-2.45.0-np2py313h2962dae_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.12-h4df99d1_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-utils-3.9.1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2025.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyu2f-0.1.5-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h7d74516_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h65a2061_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyzmq-27.1.0-py312hd65ceae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rapidfuzz-3.14.3-py313h0e822ff_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rasterio-1.5.0-py313h8ab8132_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rasterstats-0.20.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ratelimit-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/re2-2025.11.05-h64b956e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-file-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/reretry-0.11.8-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.21.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rpds-py-0.30.0-py313h2c089d5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.15-py313h6688731_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.14.14-hb0cad00_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.15.1-h279115b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scikit-learn-1.8.0-np2py313h3b23316_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scip-9.2.4-ha1e27ce_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scip-10.0.1-h1003740_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.17.0-py313hc753a45_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/shapely-2.1.2-py313h10b2fc2_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/simplejson-3.20.2-py313h6535dbc_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smart_open-7.5.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-cluster-generic-1.0.9-pyhdfd78af_0.tar.bz2 - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.1.0-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.2.0-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.4.0-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-common-1.22.0-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-executor-plugins-9.3.9-pyhdfd78af_0.tar.bz2 @@ -5277,8 +5556,8 @@ environments: - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-scheduler-plugins-2.0.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-storage-plugins-4.3.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-logger-plugin-pypsa-0.1.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.15.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.2.1-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.16.3-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.3-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-http-0.3.0-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.2-hada39a4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda @@ -5288,38 +5567,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.51.2-h77b7338_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/statsmodels-0.14.6-py313hc577518_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tableschema-to-template-0.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-2022.3.0-h4ddebb9_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyhc90fa1f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/throttler-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.14.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.5.4-py313h6535dbc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.23.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_inspect-0.9.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hc50a443_6.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ujson-5.11.0-py313hab38a8b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.1.0-py313h5c29297_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/uriparser-0.9.8-h00cdb27_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/url-normalize-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/validators-0.35.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.37.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wbgapi-1.0.12-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.9.0-pyhd8ed1ab_0.conda @@ -5328,25 +5614,25 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xerces-c-3.3.0-h25f632f_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsx2csv-0.8.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlwt-1.3.0-py_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-hc919400_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hc919400_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.8.2-hd0f0c4f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.8.2-hd0f0c4f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.8.2-h8088a28_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h925e9cb_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.22.0-py313h7d74516_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/yte-1.9.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zarr-3.1.5-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h888dc83_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hebf3989_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.2-hed4e4f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.3-hed4e4f5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.25.0-py313h9734d34_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda win-64: - - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-20_gnu.conda - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/affine-2.4.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.6.1-pyhd8ed1ab_0.conda @@ -5354,6 +5640,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ampl-asl-1.0.0-he0c23c2_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/amply-0.1.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.12.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/appdirs-1.4.4-pyhd8ed1ab_1.conda @@ -5362,7 +5649,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/argon2-cffi-bindings-25.1.0-py313h5ea7bf4_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/argparse-dataclass-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.4.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/astroid-4.0.3-py313hfa70ccb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/astroid-4.0.4-py313hfa70ccb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/atlite-0.4.1-pyhd8ed1ab_1.conda @@ -5380,35 +5667,42 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/aws-checksums-0.2.7-hcb3a2da_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/aws-crt-cpp-0.35.4-hca034e6_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/aws-sdk-cpp-1.11.606-hac16450_10.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/azure-core-cpp-1.16.2-h49e36cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/azure-identity-cpp-1.13.3-h5ffce34_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/azure-storage-blobs-cpp-12.16.0-hcd625b1_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/azure-storage-common-cpp-12.12.0-h5ffce34_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/azure-storage-files-datalake-cpp-12.14.0-h1678c0b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/backports.zstd-1.3.0-py313h2a31948_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.14.3-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-h5f6438b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/blosc-1.21.6-hfd34d9b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/bokeh-3.8.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.34-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.34-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.50-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.51-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bottleneck-1.6.0-np2py313haacffc7_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/branca-0.8.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-1.2.0-h2d644bc_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.2.0-hfd05255_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.2.0-py313h3ebfc14_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_9.conda - conda: https://conda.anaconda.org/conda-forge/win-64/c-ares-1.34.6-hfd05255_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/c-blosc2-2.22.0-h2af8807_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/c-blosc2-2.23.0-h2af8807_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-h4c7d964_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h477c42c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cartopy-0.25.0-py313hc90dcd4_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2026.1.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-2.0.0-py313h5ea7bf4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgrib-0.9.15.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cftime-1.6.5-py313h0591002_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-8.1.8-pyh7428d3b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/click-plugins-1.1.1.2-pyhd8ed1ab_0.conda @@ -5427,41 +5721,44 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.3-py313h1a38498_4.conda - conda: https://conda.anaconda.org/conda-forge/noarch/copernicusmarine-2.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/country_converter-1.3.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cppad-20250000.2-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-46.0.3-py313hf5c5e30_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-46.0.5-py313hf5c5e30_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cytoolz-1.1.0-py313h5ea7bf4_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.1-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.19-py313h927ade5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.20-py313h927ade5_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/deprecated-1.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/deprecation-2.1.0-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/descartes-1.1.0-pyhd8ed1ab_5.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dill-0.4.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.1-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/donfig-0.8.1.post1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/double-conversion-3.3.1-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/double-conversion-3.4.0-hac47afa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/dpath-2.2.0-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/eccodes-2.45.0-h2bffdaa_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ecmwf-datastores-client-0.4.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/et_xmlfile-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.2.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/fiona-1.10.1-py313h0dbd5a6_5.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fiona-1.10.1-py313h8b19803_6.conda - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.17.1-hd47e2ca_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.61.1-py313hd650c13_0.conda @@ -5470,8 +5767,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.14.1-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freexl-2.0.0-hf297d47_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.16-hfd05255_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/frictionless-5.18.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/frozenlist-1.7.0-py313h0c48a3b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geojson-3.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/geopandas-1.1.2-pyhd8ed1ab_0.conda @@ -5484,14 +5782,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/glpk-5.0-h8ffe710_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/gmp-6.3.0-hfeafd45_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-api-core-2.29.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/google-crc32c-1.8.0-py313h5327936_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/google-resumable-media-2.8.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/googleapis-common-protos-1.72.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.14-hac47afa_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-14.1.0-h4c50273_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-14.1.2-h4c50273_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/grpcio-1.73.1-py313h3c83859_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.73.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda @@ -5500,30 +5798,38 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.3.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/h5netcdf-1.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/h5py-3.15.1-nompi_py313hf7f959b_101.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-12.2.0-h5f2951f_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-12.3.2-h5a1b470_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/hdf4-4.2.15-h5557f11_7.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.6-nompi_h89f0904_105.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/highspy-1.12.0-np2py313h776c0ec_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.6-nompi_hae35d4c_106.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-country-4.1.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-utilities-4.0.6-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/highspy-1.13.1-np2py313h776c0ec_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/humanfriendly-10.0-pyh7428d3b_8.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/icu-78.2-h637d24d_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.11-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ijson-3.4.0.post0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/imf-reader-1.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/immutables-0.21-py313h5ea7bf4_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.7.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/iniconfig-2.3.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ipopt-3.14.19-h75e447d_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.1.0-pyh6dadd2b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.9.0-pyhe2676ad_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ipopt-3.14.19-he5a0f77_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyh6dadd2b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyhe2676ad_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_pygments_lexers-1.1.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-7.8.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/isort-7.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jasper-4.2.8-h8ad263b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.6-pyhcf101f3_1.conda @@ -5531,6 +5837,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/joblib-1.5.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jpype1-1.6.0-py313hf069bd2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.13.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.0.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.26.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2025.9.1-pyhcf101f3_0.conda @@ -5540,10 +5847,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.8.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.9.1-pyh6dadd2b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyhe01879c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.4-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.28.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-1.1.11-pyhd8ed1ab_0.conda @@ -5551,40 +5858,39 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/lark-1.3.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.18-hf2c6c5f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyh742d864_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h6470a55_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/levenshtein-0.27.3-py313hfe59770_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libabseil-20250512.1-cxx17_habfad5f_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.5-haf901d7_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libarchive-3.8.5-gpl_he24518a_100.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-23.0.0-hcf7e2ff_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-23.0.0-h7d8d6a5_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-23.0.0-h2db994a_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-23.0.0-h7d8d6a5_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-23.0.0-hf865cc0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-23.0.0-hfcfc620_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-23.0.0-h7d8d6a5_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-23.0.0-h2db994a_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-23.0.0-h7d8d6a5_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-23.0.0-hf865cc0_2_cpu.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.11.0-7_h6c93730_netlib.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-1.88.0-h9dfe17d_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.2.0-hfd05255_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.2.0-hfd05255_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.2.0-hfd05255_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.11.0-7_hc41557d_netlib.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-21.1.8-default_ha2db4b5_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-21.1.8-default_ha2db4b5_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libcrc32c-1.1.2-h0e60522_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.18.0-h43ecb02_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.25-h51727cc_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libevent-2.1.12-h3671451_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.3-hac47afa_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h52bdfb6_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.4-hac47afa_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h3d046cb_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype-2.14.1-h57928b3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libfreetype6-2.14.1-hdbac1cb_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.2.0-h8ee18e1_16.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-core-3.11.5-h9732b15_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf4-3.11.5-ha47b6c4_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf5-3.11.5-h0f01001_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-netcdf-3.11.5-hbb26ad1_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.86.2-hd9c3897_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.2.0-h8ee18e1_16.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.2.0-h8ee18e1_18.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h4974f7c_12.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-core-3.12.2-h9774fe2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf4-3.12.2-h5bd48a5_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf5-3.12.2-h5260803_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-netcdf-3.12.2-h1c765f5_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.86.4-h0c9aed9_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.2.0-h8ee18e1_18.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-2.39.0-h19ee442_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-storage-2.39.0-he04ea4c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgrpc-1.73.1-h317e13b_1.conda @@ -5593,15 +5899,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.18-hc1393d2_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.1.2-hfd05255_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libjxl-0.11.1-hf3f85d1_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libjxl-0.11.2-hf3f85d1_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libkml-1.3.0-h68a222c_1022.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.11.0-7_h018ca30_netlib.conda - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.8.2-hfd05255_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.8.2-hfd05255_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libnetcdf-4.9.3-nompi_h7d90bef_103.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-23.0.0-h7051d1f_0_cpu.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.54-h7351971_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-hfd05255_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libnetcdf-4.9.3-nompi_h3948bcf_104.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-23.0.0-h7051d1f_2_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.55-h7351971_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-6.31.1-hdcda5b4_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libre2-11-2025.11.05-h0eb2380_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/librttopo-1.1.0-haa95264_20.conda @@ -5612,29 +5917,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libthrift-0.22.0-h23985f6_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.1-h8f73337_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libutf8proc-2.11.3-hb980946_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libvulkan-loader-1.4.328.1-h477610d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libvulkan-loader-1.4.341.0-h477610d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.6.0-h4d5522a_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libwinpthread-12.0.0.r4.gg4f2fc60ca-h57928b3_10.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.17.0-h0e4246c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.1-h06f855e_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.1-ha29bfb0_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-devel-2.15.1-ha29bfb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.1-h3cfd58e_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.1-h779ef1b_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-devel-2.15.1-h779ef1b_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxslt-1.1.43-h0fbe4c1_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzip-1.11.2-h3135430_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.3-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/llvm-openmp-21.1.8-h4fa8253_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/locket-1.0.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh7428d3b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lxml-6.0.2-py313h1af1686_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-4.4.5-py313h4bbca4b_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.10.0-h2466b09_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lzo-2.10-h6a83c73_1002.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mapclassify-2.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/marko-2.2.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.3-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.10.8-py313hfa70ccb_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.8-py313he1ded55_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mccabe-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mdurl-0.1.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/memory_profiler-0.61.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/minizip-4.0.10-h9fa1bad_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.2.0-pyhcf101f3_0.conda @@ -5644,14 +5953,14 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.1.2-py313hf069bd2_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/multidict-6.7.0-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/multiurl-0.3.7-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mumps-seq-5.8.1-hd297af6_4.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mumps-seq-5.8.2-h607cc0b_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/muparser-2.3.5-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mypy_extensions-1.1.0-pyha770c72_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/netcdf4-1.7.3-nompi_py313hbe59507_100.conda @@ -5662,42 +5971,44 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numcodecs-0.16.5-py313hc90dcd4_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/numexpr-2.14.1-py313h7034ea3_101.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.4.1-py313hce7ae62_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.4.2-py313hce7ae62_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/oda-reader-1.4.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.4-h24db6dd_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openpyxl-3.1.5-py313hc624790_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.1-hf411b9b_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/orc-2.2.2-hbd3206f_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-25.0-pyh29332c3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py313hc90dcd4_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.28.1-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.29.0-hd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.29.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.56.4-h03d888a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.6-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/patsy-1.0.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.46-h3402e2f_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.1.0-py313h38f99e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.47-hd2b5f0e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.1.1-py313h38f99e1_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.46.4-h5112557_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.6.0-pyhf9edf01_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/polars-runtime-32-1.37.1-py310hca7251b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/polars-runtime-32-1.38.1-py310hca7251b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/progressbar2-4.5.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/proj-9.7.1-hd30e2cd_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/proj-9.7.1-hd30e2cd_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.24.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.52-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.52-hd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/propcache-0.3.1-py313hb4c8b1a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/protobuf-6.31.1-py313h16c7a9f_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.2.1-py313h5fd188c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.2.2-py313h5fd188c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-h0e40799_1002.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pulp-2.8.0-py313h4a748c7_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda @@ -5711,30 +6022,33 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/pydantic-2.12.5-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pydantic-core-2.41.5-py313hfbe8231_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pydeck-0.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pydeflate-2.3.4-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.19.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.4-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyogrio-0.11.1-py313h0dbd5a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyogrio-0.12.1-py313h8b19803_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyomo-6.9.5-py313hfe59770_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyopenssl-25.3.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyphonetics-0.5.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyproj-3.7.2-py313h24787ba_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.1.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyreadline3-3.5.4-py313hfa70ccb_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyscipopt-5.6.0-py313hfe59770_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyscipopt-6.1.0-np2py313h776c0ec_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.10.1-py313h475ba69_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.10.2-py313h475ba69_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh09c184e_7.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pystac-1.14.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pytables-3.10.2-py313h98afe49_10.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pytables-3.10.2-py313h98afe49_11.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.0-hf5aa216_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.12-h09917c8_100_cp313.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-dotenv-1.2.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/python-eccodes-2.45.0-np2py313haacffc7_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.2-pyhe01879c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.12-h4df99d1_100.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python-utils-3.9.1-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.13-8_cp313.conda @@ -5743,36 +6057,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/pywin32-311-py313h40c08fc_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pywinpty-2.0.15-py313h5813708_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pyxlsb-1.0.10-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py313hd650c13_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py313hd650c13_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pyzmq-27.1.0-py312hbb5da91_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/qhull-2020.2-hc790b64_5.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.10.1-h7502b6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.10.2-h68b6638_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rapidfuzz-3.14.3-py313hfe59770_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/rasterio-1.4.4-py313hfe0960c_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/rasterio-1.5.0-py313h1ced589_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rasterstats-0.20.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ratelimit-2.2.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/re2-2025.11.05-ha104f34_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.37.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.5-pyhcf101f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-file-3.0.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/reretry-0.11.8-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3987-syntax-1.1.0-pyhe01879c_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.21.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rpds-py-0.30.0-py313hfbe8231_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/rsa-4.9.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/ruamel.yaml-0.19.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.15-py313h5fd188c_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.14.14-h37e10c4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.15.1-h213852a_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/s3transfer-0.16.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scikit-learn-1.8.0-np2py313h4ce4a18_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/scip-9.2.4-h4cfe319_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/scip-10.0.1-h6f1fe5b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.17.0-py313he51e9a2_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-0.13.2-hd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/seaborn-base-0.13.2-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/semver-3.0.4-pyhcf101f3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh6dadd2b_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh6dadd2b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/shapely-2.1.2-py313h64ccc5a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/simplejson-3.20.2-py313h5ea7bf4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smart_open-7.5.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/smmap-5.0.2-pyhd8ed1ab_0.conda @@ -5784,8 +6107,8 @@ environments: - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-scheduler-plugins-2.0.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-interface-storage-plugins-4.3.2-pyhd4c3c12_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-logger-plugin-pypsa-0.1.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.15.0-pyhdfd78af_0.conda - - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.2.1-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.16.3-pyhdfd78af_0.conda + - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.3-pyhdfd78af_0.conda - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-http-0.3.0-pyhdfd78af_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/snappy-1.2.2-h7fa0ca8_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_2.conda @@ -5795,24 +6118,28 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/sqlite-3.51.2-hdb435a2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/statsmodels-0.14.6-py313h0591002_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tableschema-to-template-0.0.13-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tabulate-0.9.0-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2022.3.0-h3155e25_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tblib-3.2.2-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh6dadd2b_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/throttler-1.2.2-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h6ed50ae_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.14.0-pyha770c72_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/toolz-1.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.5.4-py313h5ea7bf4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyha7b4d00_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tsam-2.3.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.23.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing-inspection-0.4.2-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.15.0-pyhcf101f3_0.conda @@ -5820,39 +6147,44 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.26100.0-h57928b3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313hf069bd2_6.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ujson-5.11.0-py313h927ade5_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.1.0-py313hf069bd2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/uriparser-0.9.8-h5a68840_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/url-normalize-2.2.1-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.6.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/validators-0.35.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-h41ae7f8_34.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.44.35208-h818238b_34.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vcomp14-14.44.35208-h818238b_34.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.37.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_34.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wbgapi-1.0.12-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.9.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-3.6.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win32_setctime-1.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - conda: https://conda.anaconda.org/conda-forge/win-64/winpty-0.4.3-4.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/wrapt-1.17.3-py313h5ea7bf4_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xarray-2025.6.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xerces-c-3.3.0-hac47afa_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xlrd-2.0.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsx2csv-0.8.6-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.2.9-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/xlwt-1.3.0-py_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.2-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.6-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.12-hf48077a_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.13-hfa52320_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.12-hba3369d_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.5-hba3369d_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.7-hba3369d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.18-hba3369d_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.1-h0e40799_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xyzservices-2025.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.8.2-hb6c8415_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.8.2-hfd05255_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h6a83c73_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yarl-1.22.0-py313hd650c13_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/yte-1.9.4-pyhd8ed1ab_0.conda @@ -5861,29 +6193,23 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/zict-3.0.0-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.23.0-pyhcf101f3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-ng-2.3.2-h0261ad2_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-ng-2.3.3-h0261ad2_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.25.0-py313h5fd188c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.7-h534d264_6.conda packages: -- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 - md5: d7c89558ba9fa0495403155b64376d81 - license: None - size: 2562 - timestamp: 1578324546067 -- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - build_number: 16 - sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 - md5: 73aaf86a425cc6e73fcf236a5a46396d - depends: - - _libgcc_mutex 0.1 conda_forge +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + build_number: 20 + sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 + md5: a9f577daf3de00bca7c3c76c0ecbd1de + depends: + - __glibc >=2.17,<3.0.a0 - libgomp >=7.5.0 constrains: - - openmp_impl 9999 + - openmp_impl <0.0a0 license: BSD-3-Clause license_family: BSD - size: 23621 - timestamp: 1650670423406 + size: 28948 + timestamp: 1770939786096 - conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.conda build_number: 7 sha256: 30006902a9274de8abdad5a9f02ef7c8bb3d69a503486af0c1faee30b023e5b7 @@ -5904,20 +6230,20 @@ packages: license_family: BSD size: 8325 timestamp: 1764092507920 -- conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-2_gnu.conda - build_number: 8 - sha256: 1a62cd1f215fe0902e7004089693a78347a30ad687781dfda2289cab000e652d - md5: 37e16618af5c4851a3f3d66dd0e11141 +- conda: https://conda.anaconda.org/conda-forge/win-64/_openmp_mutex-4.5-20_gnu.conda + build_number: 20 + sha256: 8a1cee28bd0ee7451ada1cd50b64720e57e17ff994fc62dd8329bef570d382e4 + md5: 1626967b574d1784b578b52eaeb071e7 depends: - libgomp >=7.5.0 - - libwinpthread >=12.0.0.r2.ggc561118da + - libwinpthread >=12.0.0.r4.gg4f2fc60ca constrains: - - openmp_impl 9999 + - openmp_impl <0.0a0 - msys2-conda-epoch <0.0a0 license: BSD-3-Clause license_family: BSD - size: 49468 - timestamp: 1718213032772 + size: 52252 + timestamp: 1770943776666 - conda: https://conda.anaconda.org/conda-forge/noarch/_python_abi3_support-1.0-hd8ed1ab_2.conda sha256: a3967b937b9abf0f2a99f3173fa4630293979bd1644709d89580e7c62a544661 md5: aaa2a381ccc56eac91d63b6c1240312f @@ -6205,6 +6531,16 @@ packages: license: EPL-2.0 size: 21899 timestamp: 1734603085333 +- conda: https://conda.anaconda.org/conda-forge/noarch/annotated-doc-0.0.4-pyhcf101f3_0.conda + sha256: cc9fbc50d4ee7ee04e49ee119243e6f1765750f0fd0b4d270d5ef35461b643b1 + md5: 52be5139047efadaeeb19c6a5103f92a + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + size: 14222 + timestamp: 1762868213144 - conda: https://conda.anaconda.org/conda-forge/noarch/annotated-types-0.7.0-pyhd8ed1ab_1.conda sha256: e0ea1ba78fbb64f17062601edda82097fcf815012cf52bb704150a2668110d48 md5: 2934f256a8acfe48f6ebb4fce6cde29c @@ -6349,47 +6685,47 @@ packages: license_family: APACHE size: 113854 timestamp: 1760831179410 -- conda: https://conda.anaconda.org/conda-forge/linux-64/astroid-4.0.3-py313h78bf25f_0.conda - sha256: 07c0913a3d0a74eec3a839120b06ea322b7ac8180e2fd293f9843f2293725f34 - md5: b643fa1962890fe34a1e811644edbb22 +- conda: https://conda.anaconda.org/conda-forge/linux-64/astroid-4.0.4-py313h78bf25f_0.conda + sha256: 38ab850ede7fbbea4ae452c4d1b8264669bbc1bed7d2e23d974c0ee28fade63e + md5: b9a5074b980b555420188db0ccf3cc20 depends: - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 license: LGPL-2.1-or-later license_family: LGPL - size: 517247 - timestamp: 1767498394297 -- conda: https://conda.anaconda.org/conda-forge/osx-64/astroid-4.0.3-py313habf4b1d_0.conda - sha256: 306e9318770f6598164317ba646586162db3ab00cb039ecf3f13d22135449872 - md5: 26663e9d0c9b80a69ab380b0918c3940 + size: 517325 + timestamp: 1770634489281 +- conda: https://conda.anaconda.org/conda-forge/osx-64/astroid-4.0.4-py313habf4b1d_0.conda + sha256: a8a04a61e794892550a941de3aa0463d1e1aa2cd68269154ee296f6da4741f75 + md5: f381d9a8e5ff1d26e8914e8b41ca311c depends: - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 license: LGPL-2.1-or-later license_family: LGPL - size: 518920 - timestamp: 1767498585415 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-4.0.3-py313h8f79df9_0.conda - sha256: 88594fecf648863c6177feefd25dd68d3c309eb5397fee6f5aea2f70909f3fb4 - md5: ed65e66c8dba8992d4ae6c5c8dcc7a21 + size: 517603 + timestamp: 1770634658314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/astroid-4.0.4-py313h8f79df9_0.conda + sha256: c4bef25dd8a8072445e3a77532c6f6de08eb2cbd06abc9d127aa07c119004856 + md5: 777c3321814ae85a2e2ee2be5fd9b4a4 depends: - python >=3.13,<3.14.0a0 - python >=3.13,<3.14.0a0 *_cp313 - python_abi 3.13.* *_cp313 license: LGPL-2.1-or-later license_family: LGPL - size: 518181 - timestamp: 1767498670360 -- conda: https://conda.anaconda.org/conda-forge/win-64/astroid-4.0.3-py313hfa70ccb_0.conda - sha256: f97866d05d34f80b5565b52202b3d9e6908a20ac2bcca0321d7a9c06b962b693 - md5: fd5f875c18a10f18bd294f5d12f766b4 + size: 519825 + timestamp: 1770634963685 +- conda: https://conda.anaconda.org/conda-forge/win-64/astroid-4.0.4-py313hfa70ccb_0.conda + sha256: 599ce66ba762cffdb067ff1688db73e06a5fee97d15def002705912893348ff3 + md5: 0bde1b76c96e6af8ae0f71a466dda5b4 depends: - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 license: LGPL-2.1-or-later license_family: LGPL - size: 517312 - timestamp: 1767498456440 + size: 517639 + timestamp: 1770634568353 - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.1-pyhd8ed1ab_0.conda sha256: ee4da0f3fe9d59439798ee399ef3e482791e48784873d546e706d0935f9ff010 md5: 9673a61a297b00016442e022d689faa6 @@ -7725,19 +8061,19 @@ packages: license_family: MIT size: 351962 timestamp: 1758035811172 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.1-h3a458e0_0.conda - sha256: cba633571e7368953520a4f66dc74c3942cc12f735e0afa8d3d5fc3edf35c866 - md5: 1d4e0d37da5f3c22ecd44033f673feba +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.16.2-h206d751_0.conda + sha256: 321d1070905e467b6bc6f5067b97c1868d7345c272add82b82e08a0224e326f0 + md5: 5492abf806c45298ae642831c670bba0 depends: - __glibc >=2.17,<3.0.a0 - - libcurl >=8.14.1,<9.0a0 + - libcurl >=8.18.0,<9.0a0 - libgcc >=14 - libstdcxx >=14 - openssl >=3.5.4,<4.0a0 license: MIT license_family: MIT - size: 348231 - timestamp: 1760926677260 + size: 348729 + timestamp: 1768837519361 - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.0-he2a98a9_1.conda sha256: caec6a8100625da04d6245c1c3a679ead35373cccd7aae8b1dbac59564c8e7c5 md5: 1c2102832e5045c982058a860eb4c0d8 @@ -7750,18 +8086,18 @@ packages: license_family: MIT size: 300765 timestamp: 1758036085232 -- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.1-he2a98a9_0.conda - sha256: 923a0f9fab0c922e17f8bb27c8210d8978111390ff4e0cf6c1adff3c1a4d13bc - md5: 9f39c22aad61e76bfb73bb7d4114efac +- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-core-cpp-1.16.2-h87f1c7e_0.conda + sha256: bc2cde0d7204b3574084de1d83d80bceb7eb1550a17a0f0ccedbb312145475d3 + md5: 24997c4c96d1875956abd9ce37f262eb depends: - __osx >=10.13 - - libcurl >=8.14.1,<9.0a0 + - libcurl >=8.18.0,<9.0a0 - libcxx >=19 - openssl >=3.5.4,<4.0a0 license: MIT license_family: MIT - size: 297681 - timestamp: 1760927174036 + size: 298273 + timestamp: 1768837905794 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.0-h88fedcc_1.conda sha256: 007cc6e7d821bc9553549dcdcdd500bac036dc169e920afff3968d981f7c86de md5: 3633a96ad986211071b6f4e1884fa187 @@ -7774,18 +8110,29 @@ packages: license_family: MIT size: 292995 timestamp: 1758036239250 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.1-h88fedcc_0.conda - sha256: d995413e4daf19ee3120f3ab9f0c9e330771787f33cbd4a33d8e5445f52022e3 - md5: fbe485a39b05090c0b5f8bb4febcd343 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-core-cpp-1.16.2-he5ae378_0.conda + sha256: d9a04af33d9200fcd9f6c954e2a882c5ac78af4b82025623e59cb7f7e590b451 + md5: 7efe92d28599c224a24de11bb14d395e depends: - __osx >=11.0 - - libcurl >=8.14.1,<9.0a0 + - libcurl >=8.18.0,<9.0a0 - libcxx >=19 - openssl >=3.5.4,<4.0a0 license: MIT license_family: MIT - size: 289984 - timestamp: 1760927117177 + size: 290928 + timestamp: 1768837810218 +- conda: https://conda.anaconda.org/conda-forge/win-64/azure-core-cpp-1.16.2-h49e36cd_0.conda + sha256: 3f3bdc95cc398afe1dc23655aa3480fd2c972307987b2451d4723de6228b9427 + md5: b625bbba0b9ae28003bd96342043ea0c + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: MIT + license_family: MIT + size: 500955 + timestamp: 1768837821295 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.12.0-ha729027_0.conda sha256: 734857814400585dca2bee2a4c2e841bc89c143bf0dcc11b4c7270cea410650c md5: 3dab8d6fa3d10fe4104f1fbe59c10176 @@ -7799,19 +8146,19 @@ packages: license_family: MIT size: 241853 timestamp: 1753212593417 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.2-h3a5f585_1.conda - sha256: fc1df5ea2595f4f16d0da9f7713ce5fed20cb1bfc7fb098eda7925c7d23f0c45 - md5: 4e921d9c85e6559c60215497978b3cdb +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.13.3-hed0cdb0_1.conda + sha256: 2beb6ae8406f946b8963a67e72fe74453e1411c5ae7e992978340de6c512d13c + md5: 68bfb556bdf56d56e9f38da696e752ca depends: - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 - libgcc >=14 - libstdcxx >=14 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT - size: 249684 - timestamp: 1761066654684 + size: 250511 + timestamp: 1770344967948 - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.12.0-hc0a8a32_0.conda sha256: 61e12e805d9487a90c8abd1373af939fd6841184468d9730b22e7e218adef41d md5: 9d9911c437b3e43d02d8d1df0b415da4 @@ -7824,18 +8171,18 @@ packages: license_family: MIT size: 169886 timestamp: 1753212914544 -- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.13.2-h0e8e1c8_1.conda - sha256: 555e9c9262b996f8c688598760b4cddf4d16ae1cb2f0fd0a31cb76c2fdc7d628 - md5: 32eb613f88ae1530ca78481bdce41cdd +- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-identity-cpp-1.13.3-h1135191_1.conda + sha256: 182769c18c23e2b29bb35f6fca4c233f0125f84418dacb2c36912298dafbe42e + md5: 14d2491d2dfcbb127fa0ff6219704ab5 depends: - __osx >=10.13 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 - libcxx >=19 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT - size: 174582 - timestamp: 1761067038720 + size: 175167 + timestamp: 1770345309347 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.12.0-hd83eed2_0.conda sha256: b1cc54a52c735f6f791671763580501bb7ad016e4bcca005f8acea2f619b8709 md5: 78ac8ce287aef15f819c2927e0fc29c6 @@ -7848,18 +8195,30 @@ packages: license_family: MIT size: 162705 timestamp: 1753212949473 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.13.2-h853621b_1.conda - sha256: a4ed52062025035d9c1b3d8c70af39496fc5153cc741420139a770bc1312cfd6 - md5: fac63edc393d7035ab23fbccdeda34f4 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-identity-cpp-1.13.3-h810541e_1.conda + sha256: 428fa73808a688a252639080b6751953ad7ecd8a4cbd8f23147b954d6902b31b + md5: ca46cc84466b5e05f15a4c4f263b6e80 depends: - __osx >=11.0 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 - libcxx >=19 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT - size: 167268 - timestamp: 1761066827371 + size: 167424 + timestamp: 1770345338067 +- conda: https://conda.anaconda.org/conda-forge/win-64/azure-identity-cpp-1.13.3-h5ffce34_1.conda + sha256: 33a0c86a7095d0716f428818157fc1d74b04949f99d2211b3030b9c9f1426c63 + md5: 998e10f568f0db5615ef880673bc3f35 + depends: + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: MIT + license_family: MIT + size: 424962 + timestamp: 1770345047909 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.14.0-hb1c9500_1.conda sha256: 83cea4a570a457cc18571c92d7927e6cc4ea166f0f819f0b510d4e2c8daf112d md5: 30da390c211967189c58f83ab58a6f0c @@ -7873,19 +8232,19 @@ packages: license_family: MIT size: 577592 timestamp: 1753219590665 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-h75daedc_0.conda - sha256: c155301bd9287480939b505b101db188b17564353366f1314080c7d8084077df - md5: e88f8e816ae46c12cbe912c8f4d9d3bc +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.16.0-hdd73cc9_1.conda + sha256: cef75b91bdd5a65c560b501df78905437cc2090a64b4c5ecd7da9e08e9e9af7c + md5: 939d9ce324e51961c7c4c0046733dbb7 depends: - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0 - libgcc >=14 - libstdcxx >=14 license: MIT license_family: MIT - size: 580063 - timestamp: 1768483495056 + size: 579825 + timestamp: 1770321459546 - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.14.0-hb076ce7_1.conda sha256: 3c1a386f07f4dbfb3d5eb9d4d1bf7a34544e4b37af90ce67445861712eacdb26 md5: 0a8e22a75ab442b214c6879e73ddbda6 @@ -7898,18 +8257,18 @@ packages: license_family: MIT size: 433081 timestamp: 1753219827826 -- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.16.0-ha4e89a6_0.conda - sha256: 446abd2fad0aa6b74207733534efc5e3ac4624bee981f40495cd4b8ae02d65ed - md5: 5f76a3745c0eb7021845161c9a1bfee3 +- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-blobs-cpp-12.16.0-h9b4319f_1.conda + sha256: e4756a363d3abf2de78c068df050d7db53072c27f5a12666e008bd027ab5610a + md5: 2d5fe7cce366e8b01d4b45985c131fb8 depends: - __osx >=10.13 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0 - libcxx >=19 license: MIT license_family: MIT - size: 434189 - timestamp: 1768483686754 + size: 433648 + timestamp: 1770321878865 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.14.0-he094cc7_1.conda sha256: df570ea362bb446bd4cf1353405daad1898887a7ab0d35af3250bed332a9895a md5: 496217fd6aaa6d43646252a586c1445c @@ -7922,18 +8281,31 @@ packages: license_family: MIT size: 425677 timestamp: 1753219837256 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.16.0-h6507aac_0.conda - sha256: fbf0d01d29dae190346f294ade76d7fda9b869e12176cb368b10c3fa2588e568 - md5: ebcb072935c1595c39e2c62f0d3e50cc +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-blobs-cpp-12.16.0-hc57151b_1.conda + sha256: 9de2f050a49597e5b98b59bf90880e00bfdff79a3afbb18828565c3a645d62d6 + md5: f08b3b9d7333dc427b79897e6e3e7f29 depends: - __osx >=11.0 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0 - libcxx >=19 license: MIT license_family: MIT - size: 426388 - timestamp: 1768483945648 + size: 426735 + timestamp: 1770322058844 +- conda: https://conda.anaconda.org/conda-forge/win-64/azure-storage-blobs-cpp-12.16.0-hcd625b1_1.conda + sha256: 654fae004aee8616a8ed4935a6fa703d629e4d1686a9fe431ef2e689846c0016 + md5: bc419192d40ca1b4928f70519d54b96c + depends: + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: MIT + license_family: MIT + size: 781612 + timestamp: 1770321543576 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.10.0-hebae86a_2.conda sha256: 071536dc90aa0ea22a5206fbac5946c70beec34315ab327c4379983e7da60196 md5: 0d93ce986d13e46a8fc91c289597d78f @@ -7948,21 +8320,21 @@ packages: license_family: MIT size: 148875 timestamp: 1753211824276 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-h3d7a050_0.conda - sha256: b1f91b15e46d9c33129374a5cbca302070311711838ae135bb3f6767af95f707 - md5: e6f12de3a9b016cea81a87db04d85ff3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.12.0-ha7a2c86_1.conda + sha256: ef7d1cae36910b21385d0816f8524a84dee1513e0306927e41a6bd32b5b9a0d0 + md5: 6400f73fe5ebe19fe7aca3616f1f1de7 depends: - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 - libgcc >=14 - libstdcxx >=14 - libxml2 - libxml2-16 >=2.14.6 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT - size: 149750 - timestamp: 1768406691043 + size: 150405 + timestamp: 1770240307002 - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.10.0-h18ceab9_2.conda sha256: c2bebed989978bca831ef89db6e113f6a8af0bf4c8274376e85522451da68f2e md5: 2ba82ed04f97b7bb609147fd87c96856 @@ -7976,20 +8348,20 @@ packages: license_family: MIT size: 125256 timestamp: 1753211912801 -- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.12.0-h2a5eb39_0.conda - sha256: b0ca0c4896fcc94ed1756a41c38fac2a95d28748ca89a90f99f6ceb8b4db0c26 - md5: 53d1b2dc90315c3b8e4ecc86966ab7bd +- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-common-cpp-12.12.0-h7373072_1.conda + sha256: 4ecd8e48c9222fce1c69d25e85056ab60c44e65b7a160484aae86a65c684b7e8 + md5: 743d031253118e250b26f32809910191 depends: - __osx >=10.13 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 - libcxx >=19 - libxml2 - libxml2-16 >=2.14.6 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT - size: 126024 - timestamp: 1768407197686 + size: 126170 + timestamp: 1770240607790 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.10.0-h12fd690_2.conda sha256: 9b0fa0c2acbd69de6fce19c180439af8ed748a3facdc5e5eaa9b543371078497 md5: 9be5f38d5306ac1069fcf3818549d56c @@ -8003,20 +8375,32 @@ packages: license_family: MIT size: 120171 timestamp: 1753211997430 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.12.0-ha416c23_0.conda - sha256: e20bb2e6abf1d6823cd89db7a8ad91084560ba1a4d144f5dc6baa25711a30a3f - md5: 327799f2eb655ddf596b3e0ba2658979 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-common-cpp-12.12.0-he467506_1.conda + sha256: 541be427e681d129c8722e81548d2e51c4b1a817f88333f3fbb3dcdef7eacafb + md5: b658a3fb0fc412b2a4d30da3fcec036f depends: - __osx >=11.0 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 - libcxx >=19 - libxml2 - libxml2-16 >=2.14.6 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT - size: 121803 - timestamp: 1768406901262 + size: 121500 + timestamp: 1770240531430 +- conda: https://conda.anaconda.org/conda-forge/win-64/azure-storage-common-cpp-12.12.0-h5ffce34_1.conda + sha256: 98dfdd2d86d34b93a39d04a73eb4ca26cc0986bf20892005a66db13077eb4b86 + md5: 716715d06097dfd791b0bab525839910 + depends: + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: MIT + license_family: MIT + size: 246289 + timestamp: 1770240396492 - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-h8b27e44_3.conda sha256: aec2e2362a605e37a38c4b34f191e98dd33fdc64ce4feebd60bd0b4d877ab36b md5: 7b738aea4f1b8ae2d1118156ad3ae993 @@ -8031,20 +8415,20 @@ packages: license_family: MIT size: 299871 timestamp: 1753226720130 -- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-hd454692_0.conda - sha256: e9a64773488382997f28944612525f9cb7d8a3f8cbb0be2f0a07dc0881311925 - md5: 55986e49b7aafe9aa09d7f4c70a56a18 +- conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.14.0-h52c5a47_1.conda + sha256: 55aa8ad5217d358e0ccf4a715bd1f9bafef3cd1c2ea4021f0e916f174c20f8e3 + md5: 6d10339800840562b7dad7775f5d2c16 depends: - __glibc >=2.17,<3.0.a0 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0 - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0 - libgcc >=14 - libstdcxx >=14 license: MIT license_family: MIT - size: 302378 - timestamp: 1768501952777 + size: 302524 + timestamp: 1770384269834 - conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.12.0-h8df8335_3.conda sha256: 15f5ba331b3e95a78c34b8a5e740b60254b6d46df014d4ebaa861f8b03b9a113 md5: 0dfefe135030f2a90bee5b27c64aa303 @@ -8058,19 +8442,19 @@ packages: license_family: MIT size: 203691 timestamp: 1753226916309 -- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.14.0-h7f37a48_0.conda - sha256: f3aabb7c5023828aba930b82046b81b87a794b0c5c8a1db82043e88b3f5ca136 - md5: 30ca75c03ba3166f44852b33f07f077c +- conda: https://conda.anaconda.org/conda-forge/osx-64/azure-storage-files-datalake-cpp-12.14.0-he1781d6_1.conda + sha256: 1ae895785ce2947686ba55126e8ebda4a42f9e0c992bf2c710436d95c85ac756 + md5: cd3513aad4fac4078622d18538244fdc depends: - __osx >=10.13 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0 - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0 - libcxx >=19 license: MIT license_family: MIT - size: 204696 - timestamp: 1768502627687 + size: 205170 + timestamp: 1770384661520 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.12.0-h30213e0_3.conda sha256: efa7abc4fded5b028f3f0e80dd271286255c3e746bf201f270556bbf13b01258 md5: ee25593a451954f56a58eda1ad4bda07 @@ -8084,29 +8468,44 @@ packages: license_family: MIT size: 197289 timestamp: 1753227070997 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.14.0-hcfc4f22_0.conda - sha256: f8d1ec719f3e3047d0f5be4be6973e5b4218c00b83b0707c327384304bcc2a72 - md5: a49804e4c4ad182a8de7b251d77f3b0c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/azure-storage-files-datalake-cpp-12.14.0-hf8a9d22_1.conda + sha256: 1891df88b68768bc042ea766c1be279bff0fdaf471470bfa3fa599284dbd0975 + md5: 601ac4f945ba078955557edf743f1f78 depends: - __osx >=11.0 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0 - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0 - libcxx >=19 license: MIT license_family: MIT - size: 197881 - timestamp: 1768502314584 -- conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.17.0-pyhd8ed1ab_0.conda - sha256: 1c656a35800b7f57f7371605bc6507c8d3ad60fbaaec65876fce7f73df1fc8ac - md5: 0a01c169f0ab0f91b26e77a3301fbfe4 + size: 198153 + timestamp: 1770384528646 +- conda: https://conda.anaconda.org/conda-forge/win-64/azure-storage-files-datalake-cpp-12.14.0-h1678c0b_1.conda + sha256: 9941733f0f4b3a2649f534c71195c8e7a92984e9e9f17c7eb6d84803e3cdccf1 + md5: 64afdd17c4a6f4cb1d97caaad1fdc191 depends: - - python >=3.9 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0 + - azure-storage-common-cpp >=12.12.0,<12.12.1.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: MIT + license_family: MIT + size: 438910 + timestamp: 1770384369008 +- conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.18.0-pyhcf101f3_0.conda + sha256: 7377bce9fcc03fecd3607843d20b50546c30a923a3517a322a2a784fa6e380eb + md5: ea5be9abc2939c8431893b4e123a2065 + depends: + - python >=3.10 - pytz >=2015.7 + - python license: BSD-3-Clause license_family: BSD - size: 6938256 - timestamp: 1738490268466 + size: 7684373 + timestamp: 1770326844118 - conda: https://conda.anaconda.org/conda-forge/linux-64/backports.zstd-1.3.0-py313h18e8e13_0.conda sha256: 9552afbec37c4d8d0e83a5c4c6b3c7f4b8785f935094ce3881e0a249045909ce md5: d9e90792551a527200637e23a915dd79 @@ -8179,27 +8578,27 @@ packages: license_family: MIT size: 90399 timestamp: 1764520638652 -- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_0.conda - sha256: e03ba1a2b93fe0383c57920a9dc6b4e0c2c7972a3f214d531ed3c21dc8f8c717 - md5: b1a27250d70881943cca0dd6b4ba0956 +- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.3.0-pyhcf101f3_1.conda + sha256: f8ff1f98423674278964a46c93a1766f9e91960d44efd91c6c3ed56a33813f46 + md5: 7c5ebdc286220e8021bf55e6384acd67 depends: - python >=3.10 - webencodings - python constrains: - - tinycss >=1.1.0,<1.5 + - tinycss2 >=1.1.0,<1.5 license: Apache-2.0 AND MIT - size: 141952 - timestamp: 1763589981635 -- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-h5f6438b_0.conda - sha256: f85f6b2c7938d8c20c80ce5b7e6349fafbb49294641b5648273c5f892b150768 - md5: 08a03378bc5293c6f97637323802f480 + size: 142008 + timestamp: 1770719370680 +- conda: https://conda.anaconda.org/conda-forge/noarch/bleach-with-css-6.3.0-hbca2aae_1.conda + sha256: 7c07a865e5e4cca233cc4e0eb3f0f5ff6c90776461687b4fb0b1764133e1fd61 + md5: f11a319b9700b203aa14c295858782b6 depends: - - bleach ==6.3.0 pyhcf101f3_0 + - bleach ==6.3.0 pyhcf101f3_1 - tinycss2 license: Apache-2.0 AND MIT - size: 4386 - timestamp: 1763589981639 + size: 4409 + timestamp: 1770719370682 - conda: https://conda.anaconda.org/conda-forge/noarch/blinker-1.9.0-pyhff2d567_0.conda sha256: f7efd22b5c15b400ed84a996d777b6327e5c402e79e3c534a7e086236f1eb2dc md5: 42834439227a4551b939beeeb8a4b085 @@ -8286,21 +8685,21 @@ packages: license_family: BSD size: 4713032 timestamp: 1769414672158 -- conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.34-pyhd8ed1ab_0.conda - sha256: 01d1bc2884fc5778f5f87100f97550f6d3e41f112aece411ff24f921862277b6 - md5: 8461fcbfd947f60cabe4719fb3a55189 +- conda: https://conda.anaconda.org/conda-forge/noarch/boto3-1.42.50-pyhd8ed1ab_0.conda + sha256: 7fcdc040633847846f8f52288f79b8ff42e7d7ab5c6091691d85d499b967bad9 + md5: 65465c189c38fc262c009faa98825cea depends: - - botocore >=1.42.34,<1.43.0 + - botocore >=1.42.50,<1.43.0 - jmespath >=0.7.1,<2.0.0 - python >=3.10 - s3transfer >=0.16.0,<0.17.0 license: Apache-2.0 license_family: Apache - size: 85332 - timestamp: 1769352828449 -- conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.34-pyhd8ed1ab_0.conda - sha256: 82bd81a52d62724c35f27cfe92d4a9d0988be7de15e0186dafe6138eeb1f5dea - md5: 54bcb8039fe8f63c9990afe552df4fdc + size: 85417 + timestamp: 1771321841507 +- conda: https://conda.anaconda.org/conda-forge/noarch/botocore-1.42.51-pyhd8ed1ab_0.conda + sha256: 99bd41cd2d44c0858ec6658a23c769340a05c2590bde71501b3475309ec69dd5 + md5: f2350b60476eeafb5d044603a9bb0018 depends: - jmespath >=0.7.1,<2.0.0 - python >=3.10 @@ -8308,8 +8707,8 @@ packages: - urllib3 >=1.25.4,!=2.2.0,<3 license: Apache-2.0 license_family: Apache - size: 8349985 - timestamp: 1769245599167 + size: 8338535 + timestamp: 1771407111820 - conda: https://conda.anaconda.org/conda-forge/linux-64/bottleneck-1.6.0-np2py312hfb8c2c5_3.conda sha256: 59deb2e5147e1727c67f0409cf40163e32254362ae361b5761fd10bc7c255267 md5: 99981dfd6b851dba87c43b5f895e6d6a @@ -8725,45 +9124,45 @@ packages: license_family: MIT size: 335605 timestamp: 1764018132514 -- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda - sha256: c30daba32ddebbb7ded490f0e371eae90f51e72db620554089103b4a6934b0d5 - md5: 51a19bba1b8ebfb60df25cde030b7ebc +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda + sha256: 0b75d45f0bba3e95dc693336fa51f40ea28c980131fec438afb7ce6118ed05f6 + md5: d2ffd7602c02f2b316fd921d39876885 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 license: bzip2-1.0.6 license_family: BSD - size: 260341 - timestamp: 1757437258798 -- conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_8.conda - sha256: 8f50b58efb29c710f3cecf2027a8d7325ba769ab10c746eff75cea3ac050b10c - md5: 97c4b3bd8a90722104798175a1bdddbf + size: 260182 + timestamp: 1771350215188 +- conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda + sha256: 9f242f13537ef1ce195f93f0cc162965d6cc79da578568d6d8e50f70dd025c42 + md5: 4173ac3b19ec0a4f400b4f782910368b depends: - __osx >=10.13 license: bzip2-1.0.6 license_family: BSD - size: 132607 - timestamp: 1757437730085 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda - sha256: b456200636bd5fecb2bec63f7e0985ad2097cf1b83d60ce0b6968dffa6d02aa1 - md5: 58fd217444c2a5701a44244faf518206 + size: 133427 + timestamp: 1771350680709 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda + sha256: 540fe54be35fac0c17feefbdc3e29725cce05d7367ffedfaaa1bdda234b019df + md5: 620b85a3f45526a8bc4d23fd78fc22f0 depends: - __osx >=11.0 license: bzip2-1.0.6 license_family: BSD - size: 125061 - timestamp: 1757437486465 -- conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_8.conda - sha256: d882712855624641f48aa9dc3f5feea2ed6b4e6004585d3616386a18186fe692 - md5: 1077e9333c41ff0be8edd1a5ec0ddace + size: 124834 + timestamp: 1771350416561 +- conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_9.conda + sha256: 76dfb71df5e8d1c4eded2dbb5ba15bb8fb2e2b0fe42d94145d5eed4c75c35902 + md5: 4cb8e6b48f67de0b018719cdf1136306 depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: bzip2-1.0.6 license_family: BSD - size: 55977 - timestamp: 1757437738856 + size: 56115 + timestamp: 1771350256444 - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda sha256: cc9accf72fa028d31c2a038460787751127317dcfa991f8d1f1babf216bb454e md5: 920bb03579f15389b9e512095ad995b7 @@ -8803,33 +9202,33 @@ packages: license_family: MIT size: 193550 timestamp: 1765215100218 -- conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.22.0-hc31b594_1.conda - sha256: efe06a982fe7f4e483a2043c4b43fc3598a538a66ed11364ee5b25d3400ef415 - md5: 52019609422a72ec80c32bbc16a889d8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-blosc2-2.23.0-hc31b594_0.conda + sha256: d8cd431cb41ca7f54105833bcfa237952c0c56fed2aa49ca20722ad9864b05d5 + md5: f3ac2d8b1b3ac0ba4e42050279ef6ce8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libstdcxx >=14 - lz4-c >=1.10.0,<1.11.0a0 - - zlib-ng >=2.3.1,<2.4.0a0 + - zlib-ng >=2.3.2,<2.4.0a0 - zstd >=1.5.7,<1.6.0a0 license: BSD-3-Clause license_family: BSD - size: 352332 - timestamp: 1764291444176 -- conda: https://conda.anaconda.org/conda-forge/osx-64/c-blosc2-2.22.0-hedb7e5f_1.conda - sha256: f529640f28822172017b8159c5d1f149ceda2c44707bcf8732b812e806cff669 - md5: 13038523111830630683530ea54eb503 + size: 353379 + timestamp: 1769992072151 +- conda: https://conda.anaconda.org/conda-forge/osx-64/c-blosc2-2.23.0-h548f922_0.conda + sha256: a57101020d01f380e9eb1dca6793f0fc7bad6760402727cd8c3a279424364876 + md5: 6c3e0b3532d30e1c80d2dc9901eff55f depends: - __osx >=10.13 - libcxx >=19 - lz4-c >=1.10.0,<1.11.0a0 - - zlib-ng >=2.3.1,<2.4.0a0 + - zlib-ng >=2.3.2,<2.4.0a0 - zstd >=1.5.7,<1.6.0a0 license: BSD-3-Clause license_family: BSD - size: 287057 - timestamp: 1764291903510 + size: 288292 + timestamp: 1769992783898 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-blosc2-2.22.0-hb83781b_1.conda sha256: 4c1afcc78418a5d171f94238bae8b798c288deb8ba454113cf11f10d72b09ff6 md5: 5e4bdded23f6d61d8351223db98bc8f3 @@ -8843,20 +9242,33 @@ packages: license_family: BSD size: 253671 timestamp: 1764291734763 -- conda: https://conda.anaconda.org/conda-forge/win-64/c-blosc2-2.22.0-h2af8807_1.conda - sha256: fb27b61b4c969e1761c2d02c12854a3e809c9db2b4097bdef77e0aaa3f7ee33a - md5: eb7c33dcf2ff0cea48cd13f0ebba44f5 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-blosc2-2.23.0-hf9886e1_0.conda + sha256: 81c20499764e5fe801319c0e89bb473749497bd2327d68fbfeee5d13ece30486 + md5: d834074f69cd126ef3a86100480c21e2 + depends: + - __osx >=11.0 + - libcxx >=19 + - lz4-c >=1.10.0,<1.11.0a0 + - zlib-ng >=2.3.2,<2.4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 254753 + timestamp: 1769992339050 +- conda: https://conda.anaconda.org/conda-forge/win-64/c-blosc2-2.23.0-h2af8807_0.conda + sha256: 7e9dddfc319d493cbb5dd589115d11191828ada396a20ce17ff8b5c250bd4607 + md5: cb7cd55fdc0dc4b47d04414d4665e6af depends: - lz4-c >=1.10.0,<1.11.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - - zlib-ng >=2.3.1,<2.4.0a0 + - zlib-ng >=2.3.2,<2.4.0a0 - zstd >=1.5.7,<1.6.0a0 license: BSD-3-Clause license_family: BSD - size: 225534 - timestamp: 1764291826235 + size: 226219 + timestamp: 1769992288490 - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.1.4-h4c7d964_0.conda sha256: 4ddcb01be03f85d3db9d881407fb13a673372f1b9fac9c836ea441893390e049 md5: 84d389c9eee640dda3d26fc5335c67d8 @@ -9017,6 +9429,26 @@ packages: license: LGPL-2.1-only or MPL-1.1 size: 900035 timestamp: 1766416416791 +- conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h477c42c_1.conda + sha256: 9ee4ad706c5d3e1c6c469785d60e3c2b263eec569be0eac7be33fbaef978bccc + md5: 52ea1beba35b69852d210242dd20f97d + depends: + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - icu >=78.1,<79.0a0 + - libexpat >=2.7.3,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libglib >=2.86.3,<3.0a0 + - libpng >=1.6.53,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.46.4,<1.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: LGPL-2.1-only or MPL-1.1 + size: 1537783 + timestamp: 1766416059188 - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.4-h5782bbf_0.conda sha256: b9f577bddb033dba4533e851853924bfe7b7c1623d0697df382eef177308a917 md5: 20e32ced54300292aff690a69c5e7b97 @@ -9186,6 +9618,18 @@ packages: license_family: BSD size: 1598853 timestamp: 1756884228101 +- conda: https://conda.anaconda.org/conda-forge/noarch/cattrs-25.3.0-pyhd8ed1ab_0.conda + sha256: 67ebbaa37cabf19fe39fee82d4b2e0a6c1cde58bc974b1963c86961ff91f6184 + md5: e78e411a2d5a999f2b1536f6c9481801 + depends: + - attrs >=25.4.0 + - exceptiongroup >=1.1.1 + - python >=3.10 + - typing_extensions >=4.14.0 + license: MIT + license_family: MIT + size: 55019 + timestamp: 1760028123575 - conda: https://conda.anaconda.org/conda-forge/noarch/cdsapi-0.7.7-pyhd8ed1ab_0.conda sha256: 1237a587e35fa74b36323084e58620367a3adf7f60f201b7a9c41261958dc5d4 md5: 1f878573c1ee2798c052bee1f5a94f50 @@ -9453,6 +9897,15 @@ packages: license_family: MIT size: 371873 timestamp: 1768511061082 +- conda: https://conda.anaconda.org/conda-forge/noarch/chardet-5.2.0-pyhd8ed1ab_3.conda + sha256: cfca3959d2bec9fcfec98350ecdd88b71dac6220d1002c257d65b40f6fbba87c + md5: 56bfd153e523d9b9d05e4cf3c1cfe01c + depends: + - python >=3.9 + license: LGPL-2.1-only + license_family: GPL + size: 132170 + timestamp: 1741798023836 - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.4-pyhd8ed1ab_0.conda sha256: b32f8362e885f1b8417bac2b3da4db7323faa12d5db62b7fd6691c02d60d6f59 md5: a22d1fd9bf98827e280a02875d9a007a @@ -10153,133 +10606,95 @@ packages: license_family: GPL size: 51091 timestamp: 1761151175246 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cppad-20250000.2-h5888daf_0.conda - sha256: 864edc4b4b16a5b8d03383376dd16e9ed62516cb1649ce2d68bf03588a5a34dc - md5: dc7dcf7e7f81c82a6254a25b9600fe78 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - license: EPL-2.0 OR GPL-2.0-or-later - size: 498420 - timestamp: 1737792070528 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cppad-20250000.2-h240833e_0.conda - sha256: dc9d4350cf0494404a13f7bee03ac37487e66f9922ab8dde227fa907db110a68 - md5: 1fe56be138b3589057477e7afafa9790 - depends: - - __osx >=10.13 - - libcxx >=18 - license: EPL-2.0 OR GPL-2.0-or-later - size: 487043 - timestamp: 1737792129109 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cppad-20250000.2-h286801f_0.conda - sha256: ae9050fcf8076cb5e761336cccce4e98d3d93026d9d798642a8c8ca2c795ca62 - md5: a7272504ef8b57fe12b6dd08fa07f1ab - depends: - - __osx >=11.0 - - libcxx >=18 - license: EPL-2.0 OR GPL-2.0-or-later - size: 485057 - timestamp: 1737792213688 -- conda: https://conda.anaconda.org/conda-forge/win-64/cppad-20250000.2-he0c23c2_0.conda - sha256: 099ea59b286cf680591ff525c2fd24096c0f443497ba238845eb2c4423f8b78c - md5: 361eebebba4a822962a5e11870958c02 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: EPL-2.0 OR GPL-2.0-or-later - size: 598283 - timestamp: 1737792121227 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.12.12-py312hd8ed1ab_2.conda noarch: generic - sha256: b88c76a6d6b45378552ccfd9e88b2a073161fe83fd1294c8fa103ffd32f7934a - md5: 99d689ccc1a360639eec979fd7805be9 + sha256: ccb90d95bac9f1f4f6629a4addb44d36433e4ad1fe4ac87a864f90ff305dbf6d + md5: ef3e093ecfd4533eee992cdaa155b47e depends: - python >=3.12,<3.13.0a0 - python_abi * *_cp312 license: Python-2.0 - size: 45767 - timestamp: 1761175217281 -- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.11-py313hd8ed1ab_100.conda + size: 46644 + timestamp: 1769471040321 +- conda: https://conda.anaconda.org/conda-forge/noarch/cpython-3.13.12-py313hd8ed1ab_100.conda noarch: generic - sha256: 63f677762304e6f8dc55e11dff6aafe71129cbbd0a77d176b99ba1f6a5053b77 - md5: 5bf347916a543bcb290c780fa449bf73 + sha256: 7636809bda35add7af66cda1fee156136fcba0a1e24bbef1d591ee859df755a8 + md5: 9a4b8a37303b933b847c14a310f0557b depends: - python >=3.13,<3.14.0a0 - python_abi * *_cp313 license: Python-2.0 - size: 48369 - timestamp: 1765019689213 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.3-py312ha4b625e_1.conda - sha256: 28dd9ae4bf7913a507e08ccd13788f0abe75557831095244e487bda2c474554f - md5: a42f7c8a15d53cdb6738ece5bd745d13 + size: 48648 + timestamp: 1770270374831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.5-py312ha4b625e_0.conda + sha256: 3a20020b7c9efbabfbfdd726ff303df81159e0c3a41a40ef8b37c3ce161a7849 + md5: 4c69182866fcdd2fc335885b8f0ac192 depends: - __glibc >=2.17,<3.0.a0 - cffi >=1.14 - libgcc >=14 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - __glibc >=2.17 license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT license_family: BSD - size: 1716814 - timestamp: 1764805537696 -- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.3-py313heb322e3_1.conda - sha256: beb4f2fa46bf3d550bf5bf2a07796be14cbe73ceebe43b28e634ee778b547e99 - md5: 4e6278c519f2766ea707361f81b33364 + size: 1712251 + timestamp: 1770772759286 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cryptography-46.0.5-py313heb322e3_0.conda + sha256: 553f4ee18ad755d690ad63fa8e00d89598ecc4945ec046a8af808ddee5bb1ca0 + md5: 964f25e322b16cae073da8f5b7adf123 depends: - __glibc >=2.17,<3.0.a0 - cffi >=1.14 - libgcc >=14 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 constrains: - __glibc >=2.17 license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT license_family: BSD - size: 1723198 - timestamp: 1764805305302 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.3-py312heb31a8c_1.conda - sha256: 699ecf64e9063ede65956cf5c8138c8f34194b22f2417515f6cfe32d3f0e0a00 - md5: 3d055072c43c46fbce57662072fe68ec + size: 1718868 + timestamp: 1770772833949 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.5-py312h45fac9f_0.conda + sha256: a59e97946c30d28b22efe37b5f6e84206e657f5cbc10df2ffc62d4b585cd1b9b + md5: 0cf8ac6e84b189f80b6352b91de24f65 depends: - __osx >=10.13 - cffi >=1.14 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - __osx >=10.13 license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT license_family: BSD - size: 1646762 - timestamp: 1764805683653 -- conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.3-py313h36c3d76_1.conda - sha256: cb0ced5293955feebf09401bfa18ab4c4c136db0ad795e993131deba3b60dd4f - md5: b168b30831ed35aeedf36adc4c148c1c + size: 1648309 + timestamp: 1770772877585 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cryptography-46.0.5-py313h6e3882f_0.conda + sha256: 92a8512b8e4b00e8afd8e3e5a77b1bf384f30ecbccbd5163c9c596098b06d914 + md5: 071bcb7607cc391596db9b193a1f5014 depends: - __osx >=10.13 - cffi >=1.14 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 constrains: - __osx >=10.13 license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT license_family: BSD - size: 1652256 - timestamp: 1764805778768 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.3-py312hd13a024_1.conda - sha256: d9c000b52d51cbdbb3f7f566cf453d684361c20e96e125b5fca5cb2d339a2f94 - md5: afc792a91a796ebe05f883534ff0d437 + size: 1652433 + timestamp: 1770772806563 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.5-py312h3fef973_0.conda + sha256: 4fed9778697e456bdc9d1a64fcb5f3e38467ccb72aca74acc50c2775832763f5 + md5: 32a1800587ad5f93389ea271f15bdedd depends: - __osx >=11.0 - cffi >=1.14 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - python >=3.12,<3.13.0a0 - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 @@ -10287,15 +10702,15 @@ packages: - __osx >=11.0 license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT license_family: BSD - size: 1590711 - timestamp: 1764805756197 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.3-py313h76c770c_1.conda - sha256: ea8b464e53db32fb64fa22b736be8ee3b401d0395dc62e191d0cb8c36b7a86be - md5: f6a4c9667a9994f3a499b4ce23e80959 + size: 1595763 + timestamp: 1770772744039 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cryptography-46.0.5-py313he3f6fad_0.conda + sha256: 5d27780eae308b9602eb80b62b8fada46680c3fc68bfb249c95ddd07f74e74d2 + md5: 2cca7fe0caca845c02b37d8b465a18fa depends: - __osx >=11.0 - cffi >=1.14 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - python >=3.13,<3.14.0a0 - python >=3.13,<3.14.0a0 *_cp313 - python_abi 3.13.* *_cp313 @@ -10303,14 +10718,14 @@ packages: - __osx >=11.0 license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT license_family: BSD - size: 1596896 - timestamp: 1764805652572 -- conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-46.0.3-py312h232196e_1.conda - sha256: 451a183bede51d5c8da10c45fd79a0e44141ba68155dd7c4fbe573d8dd2ab8e0 - md5: 62803136695cd61ff5f980840919c15c + size: 1600031 + timestamp: 1770773038178 +- conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-46.0.5-py312h232196e_0.conda + sha256: b561d7aa89e30a9888fd0b22eebd2e179dcce95f514109c03bb47f5537fa7d06 + md5: 4dcb07c3d2c5bb5ca8f8c11e743ef4f2 depends: - cffi >=1.14 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 @@ -10318,14 +10733,14 @@ packages: - vc14_runtime >=14.44.35208 license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT license_family: BSD - size: 1482597 - timestamp: 1764805365967 -- conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-46.0.3-py313hf5c5e30_1.conda - sha256: c6a6b26f3d66612794041e4e35ed8d5782332c1a37fd11cce733e94593c7c51e - md5: 5349b57b1b430a7437345ba1c48ce502 + size: 1481687 + timestamp: 1770772649710 +- conda: https://conda.anaconda.org/conda-forge/win-64/cryptography-46.0.5-py313hf5c5e30_0.conda + sha256: f565890690a299107adae6314f7e2ba633d7c4e554e87524acc99eb5bad753f9 + md5: 198a8d301501a620273ef05250e7213c depends: - cffi >=1.14 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 - ucrt >=10.0.20348.0 @@ -10333,8 +10748,8 @@ packages: - vc14_runtime >=14.44.35208 license: Apache-2.0 AND BSD-3-Clause AND PSF-2.0 AND MIT license_family: BSD - size: 1488294 - timestamp: 1764805888325 + size: 1490238 + timestamp: 1770772680643 - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhcf101f3_2.conda sha256: bb47aec5338695ff8efbddbc669064a3b10fe34ad881fb8ad5d64fbfa6910ed1 md5: 4c2a8fef270f6c69591889b93f9f55c1 @@ -10485,13 +10900,13 @@ packages: license_family: BSD size: 11723 timestamp: 1762461029811 -- conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.1-pyhcf101f3_0.conda - sha256: cc3a106881051c9a4bdaf05fdf7e175f0d63885b4624728101e7996a0e6e8ae3 - md5: a86541105aa7920d2147d48bf370dc08 +- conda: https://conda.anaconda.org/conda-forge/noarch/dask-2026.1.2-pyhcf101f3_0.conda + sha256: 41ed4c27d2a93f6f2c636bbb6615bc8b43d0e7295dbaf89e0c26e777b6197bac + md5: f438bd6e7ce6b4d442789f77d3fc7818 depends: - python >=3.10 - - dask-core >=2026.1.1,<2026.1.2.0a0 - - distributed >=2026.1.1,<2026.1.2.0a0 + - dask-core >=2026.1.2,<2026.1.3.0a0 + - distributed >=2026.1.2,<2026.1.3.0a0 - cytoolz >=0.11.0 - lz4 >=4.3.2 - numpy >=1.24 @@ -10504,8 +10919,8 @@ packages: - openssl !=1.1.1e license: BSD-3-Clause license_family: BSD - size: 11445 - timestamp: 1768579256349 + size: 11425 + timestamp: 1769901592404 - conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2025.11.0-pyhcf101f3_0.conda sha256: a1fa1457cf759d90deb87c258da393809285b807ecef47a317d210fa4fa9f7fb md5: 91549f296c15ef7b49ee6600e7c934c1 @@ -10524,9 +10939,9 @@ packages: license_family: BSD size: 1060758 timestamp: 1762449427391 -- conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.1-pyhcf101f3_1.conda - sha256: f279cecdcc132861e49c8f779ff3bfd42b8de811ca97b82566b6c7b23a136b11 - md5: 91e3b2a0d014ac032c066a2e18051686 +- conda: https://conda.anaconda.org/conda-forge/noarch/dask-core-2026.1.2-pyhcf101f3_0.conda + sha256: c8500be32e2c75b10fd7a0664b0e5abc956dece18a54774a53f357aeabe9e1b6 + md5: b20e7ce9afd59036ab194f3d1e27edf5 depends: - python >=3.10 - click >=8.1 @@ -10540,8 +10955,8 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 1063503 - timestamp: 1768568095009 + size: 1063599 + timestamp: 1769829714443 - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.16.2-h24cb091_1.conda sha256: 8bb557af1b2b7983cf56292336a1a1853f26555d9c6cecf1e5b2b96838c9da87 md5: ce96f2f470d39bd96ce03945af92e280 @@ -10570,47 +10985,47 @@ packages: license_family: GPL size: 437860 timestamp: 1747855126005 -- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.18-py313h5d5ffb9_0.conda - sha256: 29d10b4520846d3cbc511545552c11b726199013354e7517a53679272629c20d - md5: 80fd7ff9877570d12cabb5c5037dac89 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.20-py313h5d5ffb9_0.conda + sha256: 8d76d4eeb5a8e3c5666880b465593fdf4a44f47fbbe89ff5b8f9abbe43026326 + md5: e94dbbec2589f3b1d821f43a4bf2ab45 depends: - python - - __glibc >=2.17,<3.0.a0 - libstdcxx >=14 - libgcc >=14 + - __glibc >=2.17,<3.0.a0 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT - size: 2870642 - timestamp: 1765704059389 -- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.19-py313ha9a7918_0.conda - sha256: b2fe00ce39224d234011f8c45286ce754ad188256bf60392f9eb54f32d2f1d12 - md5: b2efa6af0cfd5c8f584715c37e5d58f6 + size: 2872698 + timestamp: 1769744980407 +- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.20-py313h8b5a893_0.conda + sha256: 50e6280b8fc3eca1dad3a03deb7bb861c34c61e85331f3ff37f1faed833e968a + md5: d97267b6016ad4bfb48874defeab29ea depends: - python - - __osx >=11.0 + - __osx >=10.13 - libcxx >=19 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT - size: 2771450 - timestamp: 1765840842428 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.19-py313hc37fe24_0.conda - sha256: 1eb7c9f5a994e273d714e945253fff40413fd63de9f6d5e01989d6d96199dad0 - md5: 95287e5abbe8a588d2a8d234f3d591a7 + size: 2771547 + timestamp: 1769745020308 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.20-py313h1188861_0.conda + sha256: 372464b345220758769f49e76d125933008abec7048df4077a851adcc79da1e8 + md5: b3a832c19cfa5dfcce7575750ef693ed depends: - python - - python 3.13.* *_cp313 - libcxx >=19 + - python 3.13.* *_cp313 - __osx >=11.0 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT - size: 2759061 - timestamp: 1765840814720 -- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.19-py313h927ade5_0.conda - sha256: d6d62b00c9a81cf9f183b9f3929455f11e1906e37891a28b953237245df6a5f3 - md5: a7e77991e54b031328253da027e2f3e1 + size: 2761021 + timestamp: 1769744996428 +- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.20-py313h927ade5_0.conda + sha256: f6fe9cbd9e3d3c09f173eeb43676a58bc6169e97da0d190e0201e40828a3a62b + md5: 75eb3091b05924429a3a8d2a9bbdfac2 depends: - python - vc >=14.3,<15 @@ -10619,8 +11034,8 @@ packages: - python_abi 3.13.* *_cp313 license: MIT license_family: MIT - size: 4002629 - timestamp: 1765840845981 + size: 4003589 + timestamp: 1769745018248 - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.2.1-pyhd8ed1ab_0.conda sha256: c17c6b9937c08ad63cb20a26f403a3234088e57d4455600974a0ce865cb14017 md5: 9ce473d1d1be1cc3810856a48b3fab32 @@ -10679,6 +11094,15 @@ packages: license_family: BSD size: 95462 timestamp: 1768863743943 +- conda: https://conda.anaconda.org/conda-forge/noarch/diskcache-5.6.3-pyhd8ed1ab_1.conda + sha256: 8430e56d52fe9eb46543d29c4c01388d5e085478d25b93a7c06d0a867648c5c5 + md5: 1c33d47dcfb2f90c80c6d2213f9d65d7 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 40077 + timestamp: 1734196372938 - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.0-pyhd8ed1ab_0.conda sha256: 6d977f0b2fc24fee21a9554389ab83070db341af6d6f09285360b2e09ef8b26e md5: 003b8ba0a94e2f1e117d0bd46aebc901 @@ -10716,15 +11140,15 @@ packages: license_family: BSD size: 844827 timestamp: 1762451399920 -- conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.1-pyhcf101f3_1.conda - sha256: cc3dc8383c6693e387dba37a7feb360df0c7f3d8c5c11c92f4ca173e9a18476f - md5: c15e359a982395be86a7576a91f9c5f5 +- conda: https://conda.anaconda.org/conda-forge/noarch/distributed-2026.1.2-pyhcf101f3_0.conda + sha256: 1cbc2ffaef515c43f37d4684942850e1184956a89b1c0651bb656c81bc11aaa1 + md5: 1eac93a6257796dd348d366a85f7f283 depends: - python >=3.10 - click >=8.0 - cloudpickle >=3.0.0 - cytoolz >=0.12.0 - - dask-core >=2026.1.1,<2026.1.2.0a0 + - dask-core >=2026.1.2,<2026.1.3.0a0 - jinja2 >=2.10.3 - locket >=1.0.0 - msgpack-python >=1.0.2 @@ -10742,8 +11166,8 @@ packages: - openssl !=1.1.1e license: BSD-3-Clause license_family: BSD - size: 844011 - timestamp: 1768575517215 + size: 844862 + timestamp: 1769888496327 - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_1.conda sha256: 5603c7d0321963bb9b4030eadabc3fd7ca6103a38475b4e0ed13ed6d97c86f4e md5: 0a2014fd9860f8b1eaa0b1f3d3771a08 @@ -10753,6 +11177,25 @@ packages: license_family: APACHE size: 41773 timestamp: 1734729953882 +- conda: https://conda.anaconda.org/conda-forge/noarch/dnspython-2.8.0-pyhcf101f3_0.conda + sha256: ef1e7b8405997ed3d6e2b6722bd7088d4a8adf215e7c88335582e65651fb4e05 + md5: d73fdc05f10693b518f52c994d748c19 + depends: + - python >=3.10,<4.0.0 + - sniffio + - python + constrains: + - aioquic >=1.2.0 + - cryptography >=45 + - httpcore >=1.0.0 + - httpx >=0.28.0 + - h2 >=4.2.0 + - idna >=3.10 + - trio >=0.30 + - wmi >=1.5.1 + license: ISC + size: 196500 + timestamp: 1757292856922 - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.21.2-pyhd8ed1ab_1.conda sha256: fa5966bb1718bbf6967a85075e30e4547901410cc7cb7b16daf68942e9a94823 md5: 24c1ca34138ee57de72a943237cde4cc @@ -10812,6 +11255,17 @@ packages: license_family: BSD size: 71355 timestamp: 1739570178995 +- conda: https://conda.anaconda.org/conda-forge/win-64/double-conversion-3.4.0-hac47afa_0.conda + sha256: 09e30a170e0da3e9847d449b594b5e55e6ae2852edd3a3680e05753a5e015605 + md5: 3d3caf4ccc6415023640af4b1b33060a + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: BSD-3-Clause + license_family: BSD + size: 70943 + timestamp: 1765193243911 - conda: https://conda.anaconda.org/conda-forge/noarch/dpath-2.2.0-pyha770c72_1.conda sha256: 74e5def37983c19165beebbbfae4e5494b7cb030e97351114de31dcdbc91b951 md5: 7b2af124684a994217e62c641bca2e48 @@ -10903,11 +11357,30 @@ packages: - requests - typing_extensions license: Apache-2.0 + license_family: APACHE size: 26195 timestamp: 1769417703446 -- conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.9-pyhd8ed1ab_0.conda - sha256: bca4c272daa91cbf4e6d365730e25a0da8bcd4c821bd4bc77ab161e18cf7d46c - md5: 6e2b8dfbfd1b4e91f49fd13218db08d7 +- conda: https://conda.anaconda.org/conda-forge/noarch/email-validator-2.3.0-pyhd8ed1ab_0.conda + sha256: c37320864c35ef996b0e02e289df6ee89582d6c8e233e18dc9983375803c46bb + md5: 3bc0ac31178387e8ed34094d9481bfe8 + depends: + - dnspython >=2.0.0 + - idna >=2.0.0 + - python >=3.10 + license: Unlicense + size: 46767 + timestamp: 1756221480106 +- conda: https://conda.anaconda.org/conda-forge/noarch/email_validator-2.3.0-hd8ed1ab_0.conda + sha256: 6a518e00d040fcad016fb2dde29672aa3476cd9ae33ea5b7b257222e66037d89 + md5: 2452e434747a6b742adc5045f2182a8e + depends: + - email-validator >=2.3.0,<2.3.1.0a0 + license: Unlicense + size: 7077 + timestamp: 1756221480651 +- conda: https://conda.anaconda.org/conda-forge/noarch/entsoe-py-0.7.10-pyhd8ed1ab_0.conda + sha256: 654ce37abd0bcbeef0dde13cccc07954b82baa5ca93e892f56f3d28594032756 + md5: 1ada850380c9857f4e9f670775ec550a depends: - beautifulsoup4 >=4.11.1 - pandas >=2.2.0 @@ -10915,8 +11388,9 @@ packages: - pytz - requests license: MIT - size: 951552 - timestamp: 1769378185527 + license_family: MIT + size: 947103 + timestamp: 1769485540786 - conda: https://conda.anaconda.org/conda-forge/linux-64/epoxy-1.5.10-hb03c661_2.conda sha256: a5b51e491fec22bcc1765f5b2c8fff8a97428e9a5a7ee6730095fb9d091b0747 md5: 057083b06ccf1c2778344b6dabace38b @@ -10984,14 +11458,14 @@ packages: license_family: MIT size: 30753 timestamp: 1756729456476 -- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.20.3-pyhd8ed1ab_0.conda - sha256: 8b90dc21f00167a7e58abb5141a140bdb31a7c5734fe1361b5f98f4a4183fd32 - md5: 2cfaaccf085c133a477f0a7a8657afe9 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.24.2-pyhd8ed1ab_0.conda + sha256: 87e91bf552df4a2781a5f9ea191719cffe08b45b1e2f00531cc87f454518868f + md5: 4c222e160d3ef895d83a1b813310dbce depends: - python >=3.10 license: Unlicense - size: 18661 - timestamp: 1768022315929 + size: 24639 + timestamp: 1771219337187 - conda: https://conda.anaconda.org/conda-forge/noarch/findlibs-0.1.2-pyhd8ed1ab_0.conda sha256: d02d04e24b79003442751240a7c7ad251c30e368f38808fb44c5a6e925c0436a md5: fa9e9ec7bf26619a8edd3e11155f15d6 @@ -11139,15 +11613,15 @@ packages: license_family: BSD size: 981719 timestamp: 1764874932975 -- conda: https://conda.anaconda.org/conda-forge/win-64/fiona-1.10.1-py313h0dbd5a6_5.conda - sha256: eb014649258e4ccc079f7e7eaca21aa1042c67227ed293098c3e9651842edc87 - md5: f67bf68a95f767c7fbf07d4675de0965 +- conda: https://conda.anaconda.org/conda-forge/win-64/fiona-1.10.1-py313h8b19803_6.conda + sha256: afee0affd992057392b74a55d0f625aeca737f71d8ed0fb7dd33d72b014fbfa5 + md5: c048daef67f2a62c12200e6c4f1ad688 depends: - attrs >=19.2.0 - click >=8.0,<9.dev0 - click-plugins >=1.0 - cligj >=0.5 - - libgdal-core >=3.11.5,<3.12.0a0 + - libgdal-core >=3.12.1,<3.13.0a0 - pyparsing - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 @@ -11157,8 +11631,8 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - size: 984268 - timestamp: 1767049078572 + size: 986704 + timestamp: 1767051686947 - conda: https://conda.anaconda.org/conda-forge/noarch/folium-0.20.0-pyhd8ed1ab_0.conda sha256: 782fa186d7677fd3bc1ff7adb4cc3585f7d2c7177c30bcbce21f8c177135c520 md5: a6997a7dcd6673c0692c61dfeaea14ab @@ -11201,59 +11675,59 @@ packages: license_family: Other size: 1620504 timestamp: 1727511233259 -- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda - sha256: 7093aa19d6df5ccb6ca50329ef8510c6acb6b0d8001191909397368b65b02113 - md5: 8f5b0b297b59e1ac160ad4beec99dbee +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.17.1-h27c8c51_0.conda + sha256: aa4a44dba97151221100a637c7f4bde619567afade9c0265f8e1c8eed8d7bd8c + md5: 867127763fbe935bab59815b6e0b7b5c depends: - __glibc >=2.17,<3.0.a0 - - freetype >=2.12.1,<3.0a0 - - libexpat >=2.6.3,<3.0a0 - - libgcc >=13 - - libuuid >=2.38.1,<3.0a0 + - libexpat >=2.7.4,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libgcc >=14 + - libuuid >=2.41.3,<3.0a0 - libzlib >=1.3.1,<2.0a0 license: MIT - license_family: MIT - size: 265599 - timestamp: 1730283881107 -- conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda - sha256: 61a9aa1d2dd115ffc1ab372966dc8b1ac7b69870e6b1744641da276b31ea5c0b - md5: 84ccec5ee37eb03dd352db0a3f89ada3 + size: 270705 + timestamp: 1771382710863 +- conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.17.1-h7a4440b_0.conda + sha256: a972a114e618891bb50e50d8b13f5accb0085847f3aab1cf208e4552c1ab9c24 + md5: 4646a20e8bbb54903d6b8e631ceb550d depends: - - __osx >=10.13 - - freetype >=2.12.1,<3.0a0 - - libexpat >=2.6.3,<3.0a0 + - __osx >=11.0 + - libexpat >=2.7.4,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 - libzlib >=1.3.1,<2.0a0 license: MIT - license_family: MIT - size: 232313 - timestamp: 1730283983397 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda - sha256: f79d3d816fafbd6a2b0f75ebc3251a30d3294b08af9bb747194121f5efa364bc - md5: 7b29f48742cea5d1ccb5edd839cb5621 + size: 237866 + timestamp: 1771382969241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.17.1-h2b252f5_0.conda + sha256: 851e9c778bfc54645dcab7038c0383445cbebf16f6bb2d3f62ce422b1605385a + md5: d06ae1a11b46cc4c74177ecd28de7c7a depends: - __osx >=11.0 - - freetype >=2.12.1,<3.0a0 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.7.4,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 - libzlib >=1.3.1,<2.0a0 license: MIT - license_family: MIT - size: 234227 - timestamp: 1730284037572 -- conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda - sha256: ed122fc858fb95768ca9ca77e73c8d9ddc21d4b2e13aaab5281e27593e840691 - md5: 9bb0026a2131b09404c59c4290c697cd + size: 237308 + timestamp: 1771382999247 +- conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.17.1-hd47e2ca_0.conda + sha256: ff2db9d305711854de430f946dc59bd40167940a1de38db29c5a78659f219d9c + md5: a0b1b87e871011ca3b783bbf410bc39f depends: - - freetype >=2.12.1,<3.0a0 - - libexpat >=2.6.3,<3.0a0 - - libiconv >=1.17,<2.0a0 + - libexpat >=2.7.4,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libiconv >=1.18,<2.0a0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: MIT - license_family: MIT - size: 192355 - timestamp: 1730284147944 + size: 195332 + timestamp: 1771382820659 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 md5: fee5683a3f04bd15cbd8318b096a27ab @@ -11550,6 +12024,35 @@ packages: license: LGPL-2.1-or-later size: 64394 timestamp: 1757438741305 +- conda: https://conda.anaconda.org/conda-forge/noarch/frictionless-5.18.1-pyhd8ed1ab_1.conda + sha256: 09c2bacb9e6215da2f7b893840639824c7ac5b87e5a6f53b637d6c8b056f7196 + md5: 4b2cae54d84f734c32837175d8ed2459 + depends: + - attrs >=22.2.0 + - chardet >=3.0 + - humanize >=4.2 + - isodate >=0.6 + - jinja2 >=3.0 + - jsonschema >=4.20 + - marko >=1.0 + - petl >=1.6 + - pydantic >=2.0 + - python >=3.9 + - python-dateutil >=2.8 + - python-slugify >=1.2 + - pyyaml >=5.3 + - requests >=2.10 + - rfc3986 >=1.4 + - simpleeval >=0.9.11 + - stringcase >=1.2 + - tabulate >=0.8.10 + - typer >=0.12 + - typing-extensions >=4.3 + - validators >=0.18 + license: MIT + license_family: MIT + size: 270421 + timestamp: 1746631371669 - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.7.0-py312h447239a_0.conda sha256: f4e0e6cd241bc24afb2d6d08e5d2ba170fad2475e522bdf297b7271bba268be6 md5: 63e20cf7b7460019b423fc06abb96c60 @@ -11652,15 +12155,15 @@ packages: license_family: APACHE size: 49129 timestamp: 1752167418796 -- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.1.0-pyhd8ed1ab_0.conda - sha256: bfba6c280366f48b00a6a7036988fc2bc3fea5ac1d8303152c9da69d72a22936 - md5: 1daaf94a304a27ba3446a306235a37ea +- conda: https://conda.anaconda.org/conda-forge/noarch/fsspec-2026.2.0-pyhd8ed1ab_0.conda + sha256: 239b67edf1c5e5caed52cf36e9bed47cb21b37721779828c130e6b3fd9793c1b + md5: 496c6c9411a6284addf55c898d6ed8d7 depends: - python >=3.10 license: BSD-3-Clause license_family: BSD - size: 148116 - timestamp: 1768000866082 + size: 148757 + timestamp: 1770387898414 - conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-h2b0a6b4_3.conda sha256: d8a9d0df91e1939b1fb952b5214e097d681c49faf215d1ad69a7f0acb03c8e08 md5: aeec474bd508d8aa6c015e2cc7d14651 @@ -11676,21 +12179,21 @@ packages: license_family: LGPL size: 579311 timestamp: 1754960116630 -- conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.4-h2b0a6b4_0.conda - sha256: f47222f58839bcc77c15f11a8814c1d8cb8080c5ca6ba83398a12b640fd3c85c - md5: c379d67c686fb83475c1a6ed41cc41ff +- conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.44.5-h2b0a6b4_0.conda + sha256: bd61bc71e6a21f3d8e1a362310789fc329fd45eab3c66f1204249253f9abd3d0 + md5: e3bcef76c3ecb25823c503ce11783d85 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - - libglib >=2.86.0,<3.0a0 - - libjpeg-turbo >=3.1.0,<4.0a0 - - liblzma >=5.8.1,<6.0a0 - - libpng >=1.6.50,<1.7.0a0 + - libglib >=2.86.3,<3.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.54,<1.7.0a0 - libtiff >=4.7.1,<4.8.0a0 license: LGPL-2.1-or-later license_family: LGPL - size: 572093 - timestamp: 1761082340749 + size: 575201 + timestamp: 1769891110279 - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-h5720e38_3.conda sha256: 17e804d758c898757209a7eac8073500b7b585a68789731a8a4ab3bc63d80cac md5: 34d25f5203c6c6e61fb5a40d2249b614 @@ -11706,21 +12209,21 @@ packages: license_family: LGPL size: 556549 timestamp: 1754960291328 -- conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.44.4-h07555a4_0.conda - sha256: f1d85cf18cba23f9fac3c01f5aaf0a8d44822b531d3fc132f81e7cf25f589a4e - md5: bb9e17e69566ded88342156e58de3f87 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.44.5-h49d54ea_0.conda + sha256: eb1304940126297abb57cf64d9f449797a480b4a660b95cec8cc948735f63ccf + md5: 75a6257426d97e17cc5af9ce96a60143 depends: - __osx >=10.13 - - libglib >=2.86.0,<3.0a0 + - libglib >=2.86.3,<3.0a0 - libintl >=0.25.1,<1.0a0 - - libjpeg-turbo >=3.1.0,<4.0a0 - - liblzma >=5.8.1,<6.0a0 - - libpng >=1.6.50,<1.7.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.54,<1.7.0a0 - libtiff >=4.7.1,<4.8.0a0 license: LGPL-2.1-or-later license_family: LGPL - size: 548999 - timestamp: 1761082565353 + size: 551809 + timestamp: 1769891375933 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7af3d76_3.conda sha256: b9a928be779da5ce90e4dbc1f70829ac6bb45c3b244d6913c71439ce6a0d631b md5: da68375a855e361d5833f84a7d012ef1 @@ -11736,21 +12239,21 @@ packages: license_family: LGPL size: 549845 timestamp: 1754960472079 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.4-h7542897_0.conda - sha256: 1164ba63360736439c6e50f2d390e93f04df86901e7711de41072a32d9b8bfc9 - md5: 0b349c0400357e701cf2fa69371e5d39 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.44.5-h5a2fd1c_0.conda + sha256: 2928d539222ab6b27ab3beafdfa9e35c54538be6b8c4b695cd04d916a2619aaa + md5: 72f87ce242847d6ab9568ef438330e07 depends: - __osx >=11.0 - - libglib >=2.86.0,<3.0a0 + - libglib >=2.86.3,<3.0a0 - libintl >=0.25.1,<1.0a0 - - libjpeg-turbo >=3.1.0,<4.0a0 - - liblzma >=5.8.1,<6.0a0 - - libpng >=1.6.50,<1.7.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.54,<1.7.0a0 - libtiff >=4.7.1,<4.8.0a0 license: LGPL-2.1-or-later license_family: LGPL - size: 544149 - timestamp: 1761082904334 + size: 545175 + timestamp: 1769891463923 - conda: https://conda.anaconda.org/conda-forge/noarch/geographiclib-2.1-pyhd8ed1ab_0.conda sha256: 4bcebe8f5f449b728bd0140e38c036060f22d31048e0c7980bf4cd6acdad2b62 md5: 43dd16b113cc7b244d923b630026ff4f @@ -12045,16 +12548,17 @@ packages: license: LGPL-2.1-or-later size: 116716 timestamp: 1754315054614 -- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.86.3-hf516916_0.conda - sha256: 591e948c56f40e7fbcbd63362814736d9c9a3f0cd3cf4284002eff0bec7abe4e - md5: fd6acbf37b40cbe919450fa58309fbe1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glib-tools-2.86.4-hf516916_0.conda + sha256: 20972d7770ccfb4cf9e77f5262195228e6f357626d172c195a9fa2a64f4818e8 + md5: 70a09b6817c7ad694ef4543204c59c25 depends: - __glibc >=2.17,<3.0.a0 + - libffi - libgcc >=14 - - libglib 2.86.3 h6548e54_0 + - libglib 2.86.4 h6548e54_0 license: LGPL-2.1-or-later - size: 116337 - timestamp: 1765221915390 + size: 214256 + timestamp: 1771291791256 - conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.84.3-h35d42e9_0.conda sha256: 7bcabd2a375b95a64288158a9125b4cae9879957f8c18a6406b0bf144f1f5ce8 md5: e904f2fdddbec55c387b9afc1aa90e79 @@ -12065,16 +12569,17 @@ packages: license: LGPL-2.1-or-later size: 102128 timestamp: 1754315404852 -- conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.86.3-h8650975_0.conda - sha256: f8563491a04c1aa2ccc2d730382949797316674d1c9bdde42f023924081e8295 - md5: 16ce4f8eddf8ad9233631f79404a4267 +- conda: https://conda.anaconda.org/conda-forge/osx-64/glib-tools-2.86.4-h8501676_0.conda + sha256: ab4dd3495ec97feb53efe4a02b52ef1e1afb66141afac4a4f334ade304c1b7f0 + md5: 0f1383d5427e74ff79d89b2d6bf8a979 depends: - - __osx >=10.13 - - libglib 2.86.3 hf241ffe_0 + - __osx >=11.0 + - libffi + - libglib 2.86.4 hec30fc1_0 - libintl >=0.25.1,<1.0a0 license: LGPL-2.1-or-later - size: 102445 - timestamp: 1765222621327 + size: 188528 + timestamp: 1771292593315 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.84.3-h857b2e6_0.conda sha256: c0cebe4a3e41e20bfadd9d7b9b93fe314c55f80d5bb2d45373e04a7878c856c3 md5: c018d74ec3d1c6d27e1e4714117b653a @@ -12085,16 +12590,17 @@ packages: license: LGPL-2.1-or-later size: 101984 timestamp: 1754315707816 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.86.3-hb9d6e3a_0.conda - sha256: a4630914a543d7ae6bdce031f63da32af039d4d7d76b445b4f5d09f0b6e4ddcb - md5: 07cf8a6e2d3f9c25ee3f123bf955b34b +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glib-tools-2.86.4-h60c1bae_0.conda + sha256: c2eb2e02858127fb1673e63d9feda1512bf1626c208653e75c8e8613c8f677fa + md5: fbffb85901084131bcc8b0592bbe39e5 depends: - __osx >=11.0 - - libglib 2.86.3 hfe11c1f_0 + - libffi + - libglib 2.86.4 he378b5c_0 - libintl >=0.25.1,<1.0a0 license: LGPL-2.1-or-later - size: 101482 - timestamp: 1765223225700 + size: 182997 + timestamp: 1771293723140 - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 md5: ff862eebdfeb2fd048ae9dc92510baca @@ -12219,23 +12725,23 @@ packages: license_family: APACHE size: 98400 timestamp: 1768122057220 -- conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.47.0-pyhcf101f3_0.conda - sha256: 04ebcd67144d9e554c32bf585b7a4bf70be41a30ba72b415132c3b203549c197 - md5: fa0d1dbb4ae73ca3636fe64ed0632a42 +- conda: https://conda.anaconda.org/conda-forge/noarch/google-auth-2.48.0-pyhcf101f3_0.conda + sha256: f9fd7cbfc6cea1b43c9e210f0042c5ca62ded641a83ed6e7c046ef08dfac4583 + md5: 6e643ba74997c8dddbaa98fc2fc3481b depends: - python >=3.10 - pyasn1-modules >=0.2.1 + - cryptography >=38.0.3 - rsa >=3.1.4,<5 - aiohttp >=3.6.2,<4.0.0 - requests >=2.20.0,<3.0.0 - pyopenssl >=20.0.0 - - cryptography >=38.0.3 - pyu2f >=0.1.5 - python license: Apache-2.0 license_family: APACHE - size: 141076 - timestamp: 1767775649306 + size: 141954 + timestamp: 1769604366349 - conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-core-2.5.0-pyhcf101f3_1.conda sha256: fcef1d51f6de304a23c19ea6b3114dcab9ce54482d9f506f9a3e0b48be514744 md5: 48fcccc0b579087018df0afc332b8bd6 @@ -12250,9 +12756,9 @@ packages: license_family: APACHE size: 33593 timestamp: 1768561863777 -- conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.8.0-pyhcf101f3_0.conda - sha256: d0e9ff3b7d4766cac36b49de6970ee55bcccf8ba31479c19f52d88463e7e6396 - md5: d05f7e8724ceb2a77edf3e39cc7760bb +- conda: https://conda.anaconda.org/conda-forge/noarch/google-cloud-storage-3.9.0-pyhcf101f3_0.conda + sha256: a42b7f24ded8a97ae18d46bbdf9485d951346e41c66b18f7f793d521c05a53d5 + md5: 71aa090f8647c9b9efa63994eaa0dc18 depends: - python >=3.10 - google-api-core >=2.27.0,<3.0.0 @@ -12262,12 +12768,11 @@ packages: - google-resumable-media >=2.7.2,<3.0.0 - requests >=2.22.0,<3.0.0 - protobuf >=3.20.2,<7.0.0 - - legacy-cgi - python license: Apache-2.0 license_family: APACHE - size: 197741 - timestamp: 1768397292344 + size: 201445 + timestamp: 1770056609761 - conda: https://conda.anaconda.org/conda-forge/linux-64/google-crc32c-1.8.0-py312h03f33d3_1.conda sha256: 3f962b2cbdc2aac3089a5c708477657266c0a665f0eed09981a34d1ab6793065 md5: 68f704ea294dcec9e09edd9c3d233846 @@ -12597,16 +13102,16 @@ packages: license_family: Other size: 1208526 timestamp: 1754732367050 -- conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-14.1.0-h4c50273_0.conda - sha256: c14e28d2dc405c58dc2094d98961bc6c0aab591fb074d36f7c9fefbd420ebfd6 - md5: c347e0f1819e771361861afc57e2f418 +- conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-14.1.2-h4c50273_0.conda + sha256: 58f83755509a19501a9efe40c484727ffa61fcfaf6a237870678a79638fa6982 + md5: afabed4c46b197b89eb974aa038d12db depends: - cairo >=1.18.4,<2.0a0 - getopt-win32 >=0.1,<0.1.1.0a0 - gts >=0.7.6,<0.8.0a0 - libexpat >=2.7.3,<3.0a0 - libgd >=2.3.3,<2.4.0a0 - - libglib >=2.86.2,<3.0a0 + - libglib >=2.86.3,<3.0a0 - libwebp-base >=1.6.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - pango >=1.56.4,<2.0a0 @@ -12615,8 +13120,8 @@ packages: - vc14_runtime >=14.44.35208 license: EPL-1.0 license_family: Other - size: 1218044 - timestamp: 1765099565970 + size: 1223547 + timestamp: 1769427507016 - conda: https://conda.anaconda.org/conda-forge/linux-64/grpcio-1.73.1-py312h6f3464c_1.conda sha256: 9b6ef222599d63ca23a9e292c35f454756e321cce52af9f5142303230f0c2762 md5: dca50c100d8d67882ada32756810372f @@ -12705,36 +13210,39 @@ packages: license_family: APACHE size: 796665 timestamp: 1761054284568 -- conda: https://conda.anaconda.org/conda-forge/win-64/grpcio-1.73.1-py312h9256aa6_1.conda - sha256: bfbe5d0d5c64a1958d4b72926638e93cd053178f087284d682a6c05955978186 - md5: fec8f13db0fdbeccbc3517dd4804253e +- conda: https://conda.anaconda.org/conda-forge/win-64/grpcio-1.73.1-py313h3c83859_1.conda + sha256: 6e95dfe3422c5c1ef7925ca78108778fc02a853a849b6590cc7490c9007bd79b + md5: 1c1c68305b8e4594f993846576318c46 depends: - libgrpc 1.73.1 h317e13b_1 - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: Apache-2.0 license_family: APACHE - size: 708691 - timestamp: 1761054048135 -- conda: https://conda.anaconda.org/conda-forge/win-64/grpcio-1.73.1-py313h3c83859_1.conda - sha256: 6e95dfe3422c5c1ef7925ca78108778fc02a853a849b6590cc7490c9007bd79b - md5: 1c1c68305b8e4594f993846576318c46 + size: 715357 + timestamp: 1761054125352 +- conda: https://conda.anaconda.org/conda-forge/win-64/grpcio-1.78.0-py312h5881051_1.conda + sha256: 253790d7a9d383f63acb351535ef60bb4bca520b638fb8e46716fcd0d5dd34e2 + md5: 2077ba1361f926ca3ecefb8531d72b8f depends: - - libgrpc 1.73.1 h317e13b_1 + - libabseil * cxx17* + - libabseil >=20260107.0,<20260108.0a0 + - libgrpc 1.78.0 h9ff2b3e_1 - libzlib >=1.3.1,<2.0a0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - typing-extensions >=4.12,<5 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: Apache-2.0 license_family: APACHE - size: 715357 - timestamp: 1761054125352 + size: 715033 + timestamp: 1770253995043 - conda: https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.73.1-pyhd8ed1ab_0.conda sha256: 040fbfe95f62f633869fad6e2069a4b12af3b2236cae1d28c79648a00e93af7f md5: 5a2944f868149ad5a2e6588be8eed838 @@ -12747,6 +13255,18 @@ packages: license_family: APACHE size: 18918 timestamp: 1751787690403 +- conda: https://conda.anaconda.org/conda-forge/noarch/grpcio-status-1.78.0-pyhd8ed1ab_0.conda + sha256: cab0cf75422ce7b3b21ad977e68035b093812070ea03ea4da84b460fdf19f376 + md5: 1239612d9082a423a1bde874a7ca130f + depends: + - googleapis-common-protos >=1.5.5 + - grpcio >=1.78.0 + - protobuf >=6.31.1,<7.0.0 + - python >=3.10 + license: Apache-2.0 + license_family: APACHE + size: 19238 + timestamp: 1770422777875 - conda: https://conda.anaconda.org/conda-forge/linux-64/gtk3-3.24.43-h0c6a113_5.conda sha256: d36263cbcbce34ec463ce92bd72efa198b55d987959eab6210cc256a0e79573b md5: 67d00e9cfe751cfe581726c5eff7c184 @@ -13030,6 +13550,7 @@ packages: - packaging - python >=3.9 license: BSD-3-Clause + license_family: BSD size: 57732 timestamp: 1769241877548 - conda: https://conda.anaconda.org/conda-forge/linux-64/h5py-3.15.1-nompi_py312ha4f8f14_101.conda @@ -13171,14 +13692,14 @@ packages: license_family: MIT size: 2402438 timestamp: 1756738217200 -- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-12.3.0-h6083320_0.conda - sha256: eb0ff4632c76d5840ad8f509dc55694f79d9ac9bea5529944640e28e490361b0 - md5: 1ea5ed29aea252072b975a232b195146 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-12.3.2-h6083320_0.conda + sha256: 92015faf283f9c0a8109e2761042cd47ae7a4505e24af42a53bc3767cb249912 + md5: d170a70fc1d5c605fcebdf16851bd54a depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 - graphite2 >=1.3.14,<2.0a0 - - icu >=78.1,<79.0a0 + - icu >=78.2,<79.0a0 - libexpat >=2.7.3,<3.0a0 - libfreetype >=2.14.1 - libfreetype6 >=2.14.1 @@ -13188,8 +13709,8 @@ packages: - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT - size: 2062122 - timestamp: 1766937132307 + size: 2035859 + timestamp: 1769445400168 - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-11.4.5-h0ffbb26_0.conda sha256: 2b5e8af8a457af825360b0aef0b9641a675ea9b0e0945d1e469d8a0f3e1ddc06 md5: 6dfe87116a746f3c2e93eec0df8386ec @@ -13208,14 +13729,14 @@ packages: license_family: MIT size: 1593280 timestamp: 1756738433915 -- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-12.3.0-h8b84c26_0.conda - sha256: fa0aa0ca5d0feb3cc798f571d11bb9f26db8a99617d434c07a3b1ec2762f835f - md5: a1abc59ee893b609e7df4e6df29a6743 +- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-12.3.2-h8b84c26_0.conda + sha256: aac46d01ee8ee8e7ca0e8faa69ad4babcffcc7100b5fdbd7ca3b20c8963900c7 + md5: 8f6cf0a04e0de00a0df87dd452a512ce depends: - __osx >=10.13 - cairo >=1.18.4,<2.0a0 - graphite2 >=1.3.14,<2.0a0 - - icu >=78.1,<79.0a0 + - icu >=78.2,<79.0a0 - libcxx >=19 - libexpat >=2.7.3,<3.0a0 - libfreetype >=2.14.1 @@ -13224,8 +13745,8 @@ packages: - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT - size: 1718278 - timestamp: 1766937132560 + size: 1552174 + timestamp: 1769445918360 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-11.4.5-hf4e55d4_0.conda sha256: 8106c2941f842dad81444bbc7f68b08b65c63adb5d0ba399d7180926a51f8829 md5: 0938e21caccd8fd5b30527396f8aaa82 @@ -13244,14 +13765,14 @@ packages: license_family: MIT size: 1551301 timestamp: 1756738697245 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-12.3.0-h3103d1b_0.conda - sha256: ba0b187c8203558c2eb6fb00dbcef3ab78afbc4e0859d57730c9febd43dfed5e - md5: 37697784e23febce8eecb9c8e2554079 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-12.3.2-h3103d1b_0.conda + sha256: f68c6704610396012124a3d86b087581174c2cf7968a46b6d95ba84cd87063c7 + md5: d0af4858d81c0c7abddc6b71fd8c0340 depends: - __osx >=11.0 - cairo >=1.18.4,<2.0a0 - graphite2 >=1.3.14,<2.0a0 - - icu >=78.1,<79.0a0 + - icu >=78.2,<79.0a0 - libcxx >=19 - libexpat >=2.7.3,<3.0a0 - libfreetype >=2.14.1 @@ -13260,8 +13781,8 @@ packages: - libzlib >=1.3.1,<2.0a0 license: MIT license_family: MIT - size: 1588871 - timestamp: 1766937395386 + size: 1441619 + timestamp: 1769446246348 - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-11.4.5-h5f2951f_0.conda sha256: e1aaf8cf922cb7c7dabc12ddcad16c218b926c5e43d845288a4a8a0910df1b18 md5: e9f9b4c46f6bc9b51adf57909b4d4652 @@ -13281,25 +13802,25 @@ packages: license_family: MIT size: 1134542 timestamp: 1756738659278 -- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-12.2.0-h5f2951f_0.conda - sha256: db73714c7f7e0c47b3b9db9302a83f2deb6f8d6081716d35710ef3c6756af6c3 - md5: e798ef748fc564e42f381d3d276850f0 +- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-12.3.2-h5a1b470_0.conda + sha256: f55c689dfb49a3778c2e3369a9103393f6cbd8efc9105753b8e081909dae74dd + md5: fb5d7b9527b418f83e3316f3e6daa8a2 depends: - cairo >=1.18.4,<2.0a0 - graphite2 >=1.3.14,<2.0a0 - - icu >=75.1,<76.0a0 - - libexpat >=2.7.1,<3.0a0 + - icu >=78.2,<79.0a0 + - libexpat >=2.7.3,<3.0a0 - libfreetype >=2.14.1 - libfreetype6 >=2.14.1 - - libglib >=2.86.1,<3.0a0 + - libglib >=2.86.3,<3.0a0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: MIT license_family: MIT - size: 1138900 - timestamp: 1762373626704 + size: 1127522 + timestamp: 1769445644521 - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda sha256: 0d09b6dc1ce5c4005ae1c6a19dc10767932ef9a5e9c755cfdbb5189ac8fb0684 md5: bd77f8da987968ec3927990495dc22e4 @@ -13347,70 +13868,107 @@ packages: license_family: BSD size: 779637 timestamp: 1695662145568 -- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h1b119a7_105.conda - sha256: aa85acd07b8f60d1760c6b3fa91dd8402572766e763f3989c759ecd266ed8e9f - md5: d58cd79121dd51128f2a5dab44edf1ea +- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.6-nompi_h19486de_106.conda + sha256: 1fc50ce3b86710fba3ec9c5714f1612b5ffa4230d70bfe43e2a1436eacba1621 + md5: c223ee1429ba538f3e48cfb4a0b97357 depends: - __glibc >=2.17,<3.0.a0 - - libaec >=1.1.4,<2.0a0 + - libaec >=1.1.5,<2.0a0 - libcurl >=8.18.0,<9.0a0 - libgcc >=14 - libgfortran - libgfortran5 >=14.3.0 - libstdcxx >=14 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 3722799 - timestamp: 1768858199331 -- conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.6-nompi_h4b07496_105.conda - sha256: e6e7d449e35318619cad887646a16536300d24fbf5475e3559773b217eb3622f - md5: bb19aadbe30c465c18c77678ac2eae09 + size: 3708864 + timestamp: 1770390337946 +- conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.6-nompi_hf563b80_106.conda + sha256: 4bcc7d54a011f1d515da2fb3406659574bae5f284bced126c756ed9ef151459f + md5: b74e900265ad3808337cd542cfad6733 depends: - __osx >=10.13 - - libaec >=1.1.4,<2.0a0 + - libaec >=1.1.5,<2.0a0 - libcurl >=8.18.0,<9.0a0 - libcxx >=19 - libgfortran - libgfortran5 >=14.3.0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 3531957 - timestamp: 1768859215229 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_h51e7c0a_105.conda - sha256: 94f0b1eb8f1142f3df37456cf4f0203f6bb3e82646a2ea3c47f7d00661e2ab1c - md5: 5630e3f53d61d87caff83e0e1c6eaf33 + size: 3526365 + timestamp: 1770391694712 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.6-nompi_had3affe_106.conda + sha256: e91c2b8fe62d73bb56bdb9b5adcdcbedbd164ced288e0f361b8eb3f017ddcd7b + md5: 2d1270d283403c542680e969bea70355 depends: - __osx >=11.0 - - libaec >=1.1.4,<2.0a0 + - libaec >=1.1.5,<2.0a0 - libcurl >=8.18.0,<9.0a0 - libcxx >=19 - libgfortran - libgfortran5 >=14.3.0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: BSD-3-Clause license_family: BSD - size: 3299483 - timestamp: 1768858142380 -- conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.6-nompi_h89f0904_105.conda - sha256: 52e5eb039289946a32aee305e6af777d77376dc0adcb2bdcc31633dcc48d21a5 - md5: c1caaf8a28c0eb3be85566e63a5fcb5a + size: 3299759 + timestamp: 1770390513189 +- conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.6-nompi_hae35d4c_106.conda + sha256: d9f8f202ee91ae93515b18c498970f178dfd061743f25a65a205f848e197437f + md5: e2fb54650b51dcd92dfcbf42d2222ff8 depends: - - libaec >=1.1.4,<2.0a0 + - libaec >=1.1.5,<2.0a0 - libcurl >=8.18.0,<9.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - size: 2028299 - timestamp: 1768857717770 + size: 2353172 + timestamp: 1770389952810 +- conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-country-4.1.1-pyh332efcf_0.conda + sha256: 04a08098a19b7d1fc9a5396d9b400cb6156a627be668a1f4164fb56ff792262e + md5: 241ca19104e3d7e7d985a06c025c879d + depends: + - hdx-python-utilities >=4.0.4,<5 + - python >=3.10 + - tenacity + license: MIT + license_family: MIT + size: 57117 + timestamp: 1770843258348 +- conda: https://conda.anaconda.org/conda-forge/noarch/hdx-python-utilities-4.0.6-pyh332efcf_0.conda + sha256: f47cca64883c028a6c3247c7cd8a4ba1a75789c35f357f815bb0fb4cd0814f2f + md5: 6736b5ff2394169e011a7bf926172d5c + depends: + - beautifulsoup4 + - email_validator + - frictionless >=5.18.0 + - html5lib + - ijson >=3.2.3 + - jsonlines >=4.0.0 + - loguru + - openpyxl >=3.1.2 + - pyphonetics + - python >=3.10 + - python-dateutil >=2.9.0 + - ratelimit + - requests-file + - ruamel.yaml + - tableschema-to-template >=0.0.13 + - xlrd >=2.0.1 + - xlsx2csv + - xlwt >=1.3.0 + license: MIT + license_family: MIT + size: 57097 + timestamp: 1771280189252 - conda: https://conda.anaconda.org/conda-forge/linux-64/hicolor-icon-theme-0.17-ha770c72_2.tar.bz2 sha256: 336f29ceea9594f15cc8ec4c45fdc29e10796573c697ee0d57ebb7edd7e92043 md5: bbf6f174dcd3254e19a2f5d2295ce808 @@ -13432,37 +13990,37 @@ packages: license_family: GPL size: 13800 timestamp: 1611053664863 -- conda: https://conda.anaconda.org/conda-forge/linux-64/highspy-1.12.0-np2py312h0f77346_0.conda - sha256: 1f54ba11febc2dbbb8772d60af3b70937b82c78f534c6ff2a8057f45e247de3a - md5: 209aecf319ad78f8ff9426571373844d +- conda: https://conda.anaconda.org/conda-forge/linux-64/highspy-1.13.1-np2py312h0f77346_0.conda + sha256: 79ec4df38d6a47198cf235c78956352140cf77f554300113df051eb55e1cf0c2 + md5: 1c9584a55d659bf29b7eba0897391e6f depends: - python - numpy - - __glibc >=2.17,<3.0.a0 - libstdcxx >=14 - libgcc >=14 + - __glibc >=2.17,<3.0.a0 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2317971 - timestamp: 1761555102034 -- conda: https://conda.anaconda.org/conda-forge/linux-64/highspy-1.12.0-np2py313h73dcb5b_0.conda - sha256: 953e5e4066a55bc70731ac3c94170c68989549f84671ee645253209bc0b934c9 - md5: 95abab2403527c4199e6daa94671d46a + size: 2337815 + timestamp: 1770878930913 +- conda: https://conda.anaconda.org/conda-forge/linux-64/highspy-1.13.1-np2py313h73dcb5b_0.conda + sha256: 44fec7e55546efd7b1577d2c4defdb1fb50c0e60931791847a9bce167972fba1 + md5: df8affd8e4be7451214b4e5e8c7071a8 depends: - python - numpy - - __glibc >=2.17,<3.0.a0 - libstdcxx >=14 - libgcc >=14 + - __glibc >=2.17,<3.0.a0 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT - size: 2318581 - timestamp: 1761555100513 -- conda: https://conda.anaconda.org/conda-forge/osx-64/highspy-1.12.0-np2py312h855832a_0.conda - sha256: 79dd0a490ac90821809ad1c923a99ac3b77597e6bc5d1b85c3be2a61ff69c4a5 - md5: 6680ff3c2fb8f30cd31f57c4a0c16338 + size: 2337172 + timestamp: 1770878931414 +- conda: https://conda.anaconda.org/conda-forge/osx-64/highspy-1.13.1-np2py312h834d234_0.conda + sha256: 46d51f26cb5c514e90f69cb96a63372d0f6ad2bfca135a0e99e245b6932e3b6a + md5: fda6cbb4da06b8770f170f9d9fdf5ac9 depends: - python - numpy @@ -13471,24 +14029,24 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2105053 - timestamp: 1761555279223 -- conda: https://conda.anaconda.org/conda-forge/osx-64/highspy-1.12.0-np2py313h77a8fbf_0.conda - sha256: de26c10277378610a22fc6c6d031d0f64632296b49444a1924d8b5558554f8bf - md5: ece793b4a6623b379969ac2277b7824f + size: 2137005 + timestamp: 1770879152894 +- conda: https://conda.anaconda.org/conda-forge/osx-64/highspy-1.13.1-np2py313h1160f3e_0.conda + sha256: 4420e125251506961aa7d48d99f704e50e5dd0bffd2f9ccef25bb9ad52607fe4 + md5: 3be5b5663b508472633564403c8d5f6a depends: - python - numpy - - libcxx >=19 - __osx >=10.13 + - libcxx >=19 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT - size: 2104732 - timestamp: 1761555266148 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/highspy-1.12.0-np2py312h5a6ab93_0.conda - sha256: f170b69bfca8f17fda140424390023342bad2711cce5ba4454ba8b7730ed1080 - md5: 1776611c8a9375154d061a82306d4fa3 + size: 2137734 + timestamp: 1770879027395 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/highspy-1.13.1-np2py312h60fbb24_0.conda + sha256: 6592bb6565a79a68c0086c0aedbcb16bfccee1bc5b7f225fdd34973c6cf881ed + md5: b2bb098c9b70b70f1962258d149c132b depends: - python - numpy @@ -13498,56 +14056,50 @@ packages: - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 1781733 - timestamp: 1761555209619 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/highspy-1.12.0-np2py313h9ce8dcc_0.conda - sha256: 835d5d280cb563df2ad1e12e34261c595f60c9e35efb311647110485318bb2b0 - md5: db9abb138afc8f175a5f7d6149074882 + size: 1799622 + timestamp: 1770879123701 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/highspy-1.13.1-np2py313hdc65ad0_0.conda + sha256: 3331738d4317dfdff88762d99b45922213eaf7c8de0dcd433befe0a062835c1d + md5: e80eae811792198397fdd4e8ec794be1 depends: - python - numpy + - python 3.13.* *_cp313 - __osx >=11.0 - libcxx >=19 - - python 3.13.* *_cp313 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT - size: 1782383 - timestamp: 1761555378597 -- conda: https://conda.anaconda.org/conda-forge/win-64/highspy-1.12.0-np2py312ha76dc74_0.conda - sha256: 007b038b1606a8f70e17d992d08ea35f136065b37bb0a8a9c84bd1eb8419c5bb - md5: e5dd31058a613880438cdc7d379efbad + size: 1799699 + timestamp: 1770879023628 +- conda: https://conda.anaconda.org/conda-forge/win-64/highspy-1.13.1-np2py312ha76dc74_0.conda + sha256: a0186fc49e2812aa19adb5817e3dab56a3a70a498945f3ae39f7bbe7e01d4297 + md5: 22cdf3a1e768112bf41981f65f961395 depends: - python - numpy - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - - ucrt >=10.0.20348.0 - python_abi 3.12.* *_cp312 license: MIT license_family: MIT - size: 2428628 - timestamp: 1761555169313 -- conda: https://conda.anaconda.org/conda-forge/win-64/highspy-1.12.0-np2py313h776c0ec_0.conda - sha256: 86028c6225ce972986bbe005766145effd1051de6bc2a17c02f057471d77321a - md5: 285e57df4d9f89d593a534fe528327b8 + size: 2475313 + timestamp: 1770878946542 +- conda: https://conda.anaconda.org/conda-forge/win-64/highspy-1.13.1-np2py313h776c0ec_0.conda + sha256: 86483f09b3a13b42bdd772230435ed9e44deb1b59bd53d31cb989754bc130234 + md5: e55bcb68478bbcb2ac075e67c1041b38 depends: - python - numpy - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - - ucrt >=10.0.20348.0 - python_abi 3.13.* *_cp313 license: MIT license_family: MIT - size: 2429460 - timestamp: 1761555152939 + size: 2476254 + timestamp: 1770878956164 - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.1.0-pyhd8ed1ab_0.conda sha256: 6ad78a180576c706aabeb5b4c8ceb97c0cb25f1e112d76495bff23e3779948ba md5: 0a802cb9888dd14eeefc611f05c40b6e @@ -13557,6 +14109,17 @@ packages: license_family: MIT size: 30731 timestamp: 1737618390337 +- conda: https://conda.anaconda.org/conda-forge/noarch/html5lib-1.1-pyhd8ed1ab_2.conda + sha256: 8027e436ad59e2a7392f6036392ef9d6c223798d8a1f4f12d5926362def02367 + md5: cf25bfddbd3bc275f3d3f9936cee1dd3 + depends: + - python >=3.9 + - six >=1.9 + - webencodings + license: MIT + license_family: MIT + size: 94853 + timestamp: 1734075276288 - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.9-pyh29332c3_0.conda sha256: 04d49cb3c42714ce533a8553986e1642d0549a05dc5cc48e0d43ff5be6679a5b md5: 4f14640d58e2cc0aa0819d9d8ba125bb @@ -13606,6 +14169,15 @@ packages: license_family: MIT size: 74084 timestamp: 1733928364561 +- conda: https://conda.anaconda.org/conda-forge/noarch/humanize-4.15.0-pyhd8ed1ab_0.conda + sha256: 6c4343b376d0b12a4c75ab992640970d36c933cad1fd924f6a1181fa91710e80 + md5: daddf757c3ecd6067b9af1df1f25d89e + depends: + - python >=3.10 + license: MIT + license_family: MIT + size: 67994 + timestamp: 1766267728652 - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.1.0-pyhd8ed1ab_0.conda sha256: 77af6f5fe8b62ca07d09ac60127a30d9069fdc3c68d6b256754d0ffb1f7779f8 md5: 8e6923fc12f1fe8f8c4e5c9f343256ac @@ -13684,6 +14256,17 @@ packages: license_family: MIT size: 14544252 timestamp: 1720853966338 +- conda: https://conda.anaconda.org/conda-forge/win-64/icu-78.2-h637d24d_0.conda + sha256: 5a41fb28971342e293769fc968b3414253a2f8d9e30ed7c31517a15b4887246a + md5: 0ee3bb487600d5e71ab7d28951b2016a + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: MIT + license_family: MIT + size: 13222158 + timestamp: 1767970128854 - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.16-pyhd8ed1ab_0.conda sha256: 6a88cdde151469131df1948839ac2315ada99cf8d38aaacc9a7a5984e9cd8c19 md5: 8bc5851c415865334882157127e75799 @@ -13703,6 +14286,15 @@ packages: license_family: BSD size: 50721 timestamp: 1760286526795 +- conda: https://conda.anaconda.org/conda-forge/noarch/ijson-3.4.0.post0-pyhd8ed1ab_0.conda + sha256: f08532d84f5086cf16b0f5a16eef8566ea2210daacd970c40f6c6bf5d079a823 + md5: 38823b779f206a231a6e6c6870bc2829 + depends: + - python >=3.10 + license: BSD-3-Clause + license_family: BSD + size: 31990 + timestamp: 1760081827965 - conda: https://conda.anaconda.org/conda-forge/noarch/imagesize-1.4.1-pyhd8ed1ab_0.tar.bz2 sha256: c2bfd7043e0c4c12d8b5593de666c1e81d67b83c474a0a79282cc5c4ef845460 md5: 7de5386c8fea29e76b303f37dde4c352 @@ -13712,6 +14304,21 @@ packages: license_family: MIT size: 10164 timestamp: 1656939625410 +- conda: https://conda.anaconda.org/conda-forge/noarch/imf-reader-1.4.1-pyhcf101f3_0.conda + sha256: c07c7040d608e5c682d676559f5c1b47bff95cc81c48d43ad960ca1e8673ae99 + md5: 13049ef4ba48cc9a8919ab6bf5eb4afe + depends: + - python >=3.10 + - pandas >=2.2.2 + - requests >=2.32.1 + - chardet >=5.2.0 + - beautifulsoup4 >=4.12.3 + - diskcache >=5.6.0 + - python + license: MIT + license_family: MIT + size: 22345 + timestamp: 1770983754127 - conda: https://conda.anaconda.org/conda-forge/linux-64/immutables-0.21-py313h07c4f96_2.conda sha256: 536bb4df2a3c6659d486b253ccac5237d2920dc366ebf7229a1646bbcd849bf4 md5: 68ad0cf3b5c557b70e06e901f7dd3d6a @@ -13807,127 +14414,125 @@ packages: license: EPL-1.0 size: 1023755 timestamp: 1753899099198 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ipopt-3.14.19-h69634d0_1.conda - sha256: 563c66f53198e375175fc371a193cc831999940125cb371fbad0e474450fe903 - md5: ff8e5c98773bb34d5e2d8852833b66d5 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ipopt-3.14.19-h97b3f9f_2.conda + sha256: 3f6ed44f11129c423cc1d3aaf9f6f3354b89019a734bc4c501ba0632b6d8ad05 + md5: 89cad9af206d489b89a08b16648882b8 depends: - - __osx >=10.13 + - __osx >=11.0 - ampl-asl >=1.0.0,<1.0.1.0a0 - libblas >=3.9.0,<4.0a0 - libcxx >=19 - liblapack >=3.9.0,<4.0a0 - - mumps-seq >=5.8.1,<5.8.2.0a0 + - mumps-seq >=5.8.2,<5.8.3.0a0 license: EPL-1.0 - size: 800707 - timestamp: 1755500881455 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ipopt-3.14.19-hd6b6db2_1.conda - sha256: d129df2d49dd52c4e78e138f50e312be4a5b3285ec212839e998cea9c14b05ec - md5: c9034bfd68d92e728233449e1bbfefc3 + size: 800458 + timestamp: 1771291880717 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ipopt-3.14.19-h9191b9b_2.conda + sha256: 1d0738a2592d2f0aff0289f5fd5ba58985734cbd1e2327f001fe31f3a34e965d + md5: d7ce0fa8a1d1840691a12bbf409f29c6 depends: - __osx >=11.0 - ampl-asl >=1.0.0,<1.0.1.0a0 - libblas >=3.9.0,<4.0a0 - libcxx >=19 - liblapack >=3.9.0,<4.0a0 - - mumps-seq >=5.8.1,<5.8.2.0a0 + - mumps-seq >=5.8.2,<5.8.3.0a0 license: EPL-1.0 - size: 732494 - timestamp: 1755500825210 -- conda: https://conda.anaconda.org/conda-forge/win-64/ipopt-3.14.19-h75e447d_1.conda - sha256: befa6b06463fa82f07ab2651cec506e47000b9ec2d795329e385b66d75cd88db - md5: 82a54b93381f739b6e0b2c3c4080c11e + size: 733594 + timestamp: 1771291978620 +- conda: https://conda.anaconda.org/conda-forge/win-64/ipopt-3.14.19-he5a0f77_2.conda + sha256: 08147c943ee3573cc4e9763d1f4a614d1584a5cbf777f43cc0adc17a45f05869 + md5: 5133f79da4d0ec982733acfcb3c03e97 depends: - ampl-asl >=1.0.0,<1.0.1.0a0 - libblas >=3.9.0,<4.0a0 - liblapack >=3.9.0,<4.0a0 - - mumps-seq >=5.8.1,<5.8.2.0a0 + - mumps-seq >=5.8.2,<5.8.3.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 license: EPL-1.0 - size: 945205 - timestamp: 1755501029990 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.1.0-pyh5552912_0.conda - sha256: b5f7eaba3bb109be49d00a0a8bda267ddf8fa66cc1b54fc5944529ed6f3e8503 - md5: 1849eec35b60082d2bd66b4e36dec2b6 + size: 942450 + timestamp: 1771292115587 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyh5552912_1.conda + sha256: 5c1f3e874adaf603449f2b135d48f168c5d510088c78c229bda0431268b43b27 + md5: 4b53d436f3fbc02ce3eeaf8ae9bebe01 depends: - appnope - __osx - comm >=0.1.1 - debugpy >=1.6.5 - ipython >=7.23.1 - - jupyter_client >=8.0.0 - - jupyter_core >=4.12,!=5.0.* + - jupyter_client >=8.8.0 + - jupyter_core >=5.1,!=6.0.* - matplotlib-inline >=0.1 - nest-asyncio >=1.4 - packaging >=22 - psutil >=5.7 - python >=3.10 - pyzmq >=25 - - tornado >=6.2 + - tornado >=6.4.1 - traitlets >=5.4.0 - python constrains: - appnope >=0.1.2 license: BSD-3-Clause license_family: BSD - size: 132289 - timestamp: 1761567969884 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.1.0-pyh6dadd2b_0.conda - sha256: 75e42103bc3350422896f727041e24767795b214a20f50bf39c371626b8aae8b - md5: f22cb16c5ad68fd33d0f65c8739b6a06 + size: 132260 + timestamp: 1770566135697 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyh6dadd2b_1.conda + sha256: 9cdadaeef5abadca4113f92f5589db19f8b7df5e1b81cb0225f7024a3aedefa3 + md5: b3a7d5842f857414d9ae831a799444dd depends: - - python - __win - comm >=0.1.1 - debugpy >=1.6.5 - ipython >=7.23.1 - - jupyter_client >=8.0.0 - - jupyter_core >=4.12,!=5.0.* + - jupyter_client >=8.8.0 + - jupyter_core >=5.1,!=6.0.* - matplotlib-inline >=0.1 - nest-asyncio >=1.4 - packaging >=22 - psutil >=5.7 - python >=3.10 - pyzmq >=25 - - tornado >=6.2 + - tornado >=6.4.1 - traitlets >=5.4.0 - python constrains: - appnope >=0.1.2 license: BSD-3-Clause license_family: BSD - size: 132418 - timestamp: 1761567966860 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.1.0-pyha191276_0.conda - sha256: a9d6b74115dbd62e19017ff8fa4885b07b5164427f262cc15b5307e5aaf3ee73 - md5: c6f63cfe66adaa5650788e3106b6683a + size: 132382 + timestamp: 1770566174387 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-7.2.0-pyha191276_1.conda + sha256: b77ed58eb235e5ad80e742b03caeed4bbc2a2ef064cb9a2deee3b75dfae91b2a + md5: 8b267f517b81c13594ed68d646fd5dcb depends: - - python - __linux - comm >=0.1.1 - debugpy >=1.6.5 - ipython >=7.23.1 - - jupyter_client >=8.0.0 - - jupyter_core >=4.12,!=5.0.* + - jupyter_client >=8.8.0 + - jupyter_core >=5.1,!=6.0.* - matplotlib-inline >=0.1 - nest-asyncio >=1.4 - packaging >=22 - psutil >=5.7 - python >=3.10 - pyzmq >=25 - - tornado >=6.2 + - tornado >=6.4.1 - traitlets >=5.4.0 - python constrains: - appnope >=0.1.2 license: BSD-3-Clause license_family: BSD - size: 133820 - timestamp: 1761567932044 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.9.0-pyh53cf698_0.conda - sha256: 4ff1733c59b72cf0c8ed9ddb6e948e99fc6b79b76989282c0c7a46aab56e6176 - md5: 8481978caa2f108e6ddbf8008a345546 + size: 133644 + timestamp: 1770566133040 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyh53cf698_0.conda + sha256: 12cb4db242ea1a2e5e60a51b20f16e9c8120a9eb5d013c641cbf827bf3bb78e1 + md5: 441ca4e203a62f7db2f29f190c02b9cf depends: - __unix - pexpect >4.3 @@ -13944,11 +14549,11 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 646242 - timestamp: 1767621166614 -- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.9.0-pyhe2676ad_0.conda - sha256: 1697fae5859f61938ab44af38126115ad18fc059462bb370c5f8740d7bc4a803 - md5: fe785355648dec69d2f06fa14c9e6e84 + size: 647436 + timestamp: 1770040907512 +- conda: https://conda.anaconda.org/conda-forge/noarch/ipython-9.10.0-pyhe2676ad_0.conda + sha256: 89e39c69cb3b8b0d11930968d66dca6f7c3dff3ad8c520ac10af11f53a10fae4 + md5: d44777fc7219cb62865dfdcba308ea0d depends: - __win - colorama >=0.4.4 @@ -13965,8 +14570,8 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 645119 - timestamp: 1767621201570 + size: 646337 + timestamp: 1770040952821 - conda: https://conda.anaconda.org/conda-forge/noarch/ipython_genutils-0.2.0-pyhd8ed1ab_2.conda sha256: 45821a8986b4cb2421f766b240dbe6998a3c3123f012dd566720c1322e9b6e18 md5: 2f0ba4bc12af346bc6c99bdc377e8944 @@ -14001,6 +14606,15 @@ packages: license_family: BSD size: 104860 timestamp: 1729599554932 +- conda: https://conda.anaconda.org/conda-forge/noarch/isodate-0.7.2-pyhd8ed1ab_1.conda + sha256: 845fc87dfaf3f96245ad6ad69c5e5b31b084979f64f9e32157888ee0a08f39ba + md5: 14c42a6334f38c412449f5a5e4043a5a + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 23778 + timestamp: 1733230826126 - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed md5: 0b0154421989637d424ccf0f104be51a @@ -14021,6 +14635,15 @@ packages: license_family: MIT size: 74876 timestamp: 1760192714356 +- conda: https://conda.anaconda.org/conda-forge/noarch/itsdangerous-2.2.0-pyhd8ed1ab_1.conda + sha256: 1684b7b16eec08efef5302ce298c606b163c18272b69a62b666fbaa61516f170 + md5: 7ac5f795c15f288984e32add616cdc59 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 19180 + timestamp: 1733308353037 - conda: https://conda.anaconda.org/conda-forge/linux-64/jasper-4.2.8-he3c4edf_0.conda sha256: 0e919ec86d980901d8cbb665e91f5e9bddb5ff662178f25aed6d63f999fd9afc md5: a04073db11c2c86c555fb088acc8f8c1 @@ -14196,6 +14819,17 @@ packages: license_family: APACHE size: 34017 timestamp: 1767325114901 +- conda: https://conda.anaconda.org/conda-forge/noarch/jsonlines-4.0.0-pyhd8ed1ab_0.conda + sha256: ba99c97cff6534f5ad5e724a074a1204e4a0c73cc8cca21a0fc2d4e92f25b89c + md5: df32eb56c2a48a5ca9465aef29dd46bc + depends: + - attrs >=19.2.0 + - python >=3.6 + - typing_extensions + license: BSD-3-Clause + license_family: BSD + size: 14375 + timestamp: 1693576426176 - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpointer-3.0.0-pyhcf101f3_3.conda sha256: 1a1328476d14dfa8b84dbacb7f7cd7051c175498406dc513ca6c679dc44f3981 md5: cd2214824e36b0180141d422aba01938 @@ -14340,9 +14974,9 @@ packages: license_family: BSD size: 65503 timestamp: 1760643864586 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyh29332c3_0.conda - sha256: 37e6ac3ccf7afcc730c3b93cb91a13b9ae827fd306f35dd28f958a74a14878b5 - md5: f56000b36f09ab7533877e695e4e8cb0 +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.12.0-pyhe01879c_0.conda + sha256: e9964aaaf6d24a685cd5ce9d75731b643ed7f010fb979574a6580cd2f974c6cd + md5: 31e11c30bbee1682a55627f953c6725a depends: - jsonschema-with-format-nongpl >=4.18.0 - packaging @@ -14356,8 +14990,8 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 23647 - timestamp: 1738765986736 + size: 24306 + timestamp: 1770937604863 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.17.0-pyhcf101f3_0.conda sha256: 74c4e642be97c538dae1895f7052599dfd740d8bd251f727bce6453ce8d6cd9a md5: d79a87dcfa726bcea8e61275feed6f83 @@ -14397,9 +15031,9 @@ packages: license_family: BSD size: 22052 timestamp: 1768574057200 -- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.3-pyhd8ed1ab_0.conda - sha256: 18b5bff46717023ef5e81ae6ba71b254c1aca474db32c6dc21897c46ea26fa75 - md5: 106f4e36e14797b9c2abfc3849d9e92f +- conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.5.4-pyhd8ed1ab_0.conda + sha256: 393286d44caf54ff321306be88d3f5b926b0a7b87cc34ae10dd94da71a572008 + md5: b555f252a0796e00ce9d8ec318196da7 depends: - async-lru >=1.0.0 - httpx >=0.25.0,<1 @@ -14418,8 +15052,8 @@ packages: - traitlets license: BSD-3-Clause license_family: BSD - size: 8554335 - timestamp: 1769190054941 + size: 7911153 + timestamp: 1770773538140 - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 md5: fd312693df06da3578383232528c468d @@ -14591,32 +15225,32 @@ packages: license_family: MIT size: 1370023 timestamp: 1719463201255 -- conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - sha256: 83b52685a4ce542772f0892a0f05764ac69d57187975579a0835ff255ae3ef9c - md5: d4765c524b1d91567886bde656fb514b +- conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.22.2-h207b36a_0.conda + sha256: df009385e8262c234c0dae9016540b86dad3d299f0d9366d08e327e8e7731634 + md5: e66e2c52d2fdddcf314ad750fb4ebb4a depends: - __osx >=10.13 - - libcxx >=16 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - openssl >=3.3.1,<4.0a0 + - libcxx >=19 + - libedit >=3.1.20250104,<3.2.0a0 + - libedit >=3.1.20250104,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT - size: 1185323 - timestamp: 1719463492984 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 + size: 1193620 + timestamp: 1769770267475 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-h385eeb1_0.conda + sha256: c0a0bf028fe7f3defcdcaa464e536cf1b202d07451e18ad83fdd169d15bef6ed + md5: e446e1822f4da8e5080a9de93474184d depends: - __osx >=11.0 - - libcxx >=16 - - libedit >=3.1.20191231,<3.2.0a0 - - libedit >=3.1.20191231,<4.0a0 - - openssl >=3.3.1,<4.0a0 + - libcxx >=19 + - libedit >=3.1.20250104,<3.2.0a0 + - libedit >=3.1.20250104,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: MIT license_family: MIT - size: 1155530 - timestamp: 1719463474401 + size: 1160828 + timestamp: 1769770119811 - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda sha256: 18e8b3430d7d232dad132f574268f56b3eb1a19431d6d5de8c53c29e6c18fa81 md5: 31aec030344e962fbd7dbbbbd68e60a9 @@ -14695,38 +15329,18 @@ packages: license_family: MIT size: 522238 timestamp: 1768184858107 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45-default_hbd61a6d_105.conda - sha256: 1027bd8aa0d5144e954e426ab6218fd5c14e54a98f571985675468b339c808ca - md5: 3ec0aa5037d39b06554109a01e6fb0c6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-default_hbd61a6d_101.conda + sha256: 565941ac1f8b0d2f2e8f02827cbca648f4d18cd461afc31f15604cd291b5c5f3 + md5: 12bd9a3f089ee6c9266a37dab82afabd depends: - __glibc >=2.17,<3.0.a0 - zstd >=1.5.7,<1.6.0a0 constrains: - - binutils_impl_linux-64 2.45 + - binutils_impl_linux-64 2.45.1 license: GPL-3.0-only license_family: GPL - size: 730831 - timestamp: 1766513089214 -- conda: https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyh742d864_0.conda - sha256: acc3fb5f377468bacc94181a7c4466f1e37754a08e4df31979614c7c6ea20888 - md5: 9d2a54ab80a5cc8138b8adb1e146ac20 - depends: - - python >=3.13,<4 - - python - license: PSF-2.0 - license_family: PSF - size: 31856 - timestamp: 1761574456615 -- conda: https://conda.anaconda.org/conda-forge/noarch/legacy-cgi-2.6.4-pyhcf101f3_0.conda - sha256: 403f11e1a3a9f539aceb009c6f0939098075d2b2efdc6dd9c0d0dd02eb404fc4 - md5: b22fe9a3d53bc833659823e48f879db9 - depends: - - python >=3.10,<3.13 - - python - license: PSF-2.0 - license_family: PSF - size: 19854 - timestamp: 1761574469157 + size: 725507 + timestamp: 1770267139900 - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda sha256: 412381a43d5ff9bbed82cd52a0bbca5b90623f62e41007c9c42d3870c60945ff md5: 9344155d33912347b37f0ae6c410a835 @@ -14933,6 +15547,20 @@ packages: license_family: Apache size: 1615210 timestamp: 1750194549591 +- conda: https://conda.anaconda.org/conda-forge/win-64/libabseil-20260107.1-cxx17_h0eb2380_0.conda + sha256: 7e7f3754f8afaabd946dc11d7c00fd1dc93f0388a2d226a7abf1bf07deab0e2b + md5: 60da39dd5fd93b2a4a0f986f3acc2520 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - libabseil-static =20260107.1=cxx17* + - abseil-cpp =20260107.1 + license: Apache-2.0 + license_family: Apache + size: 1884784 + timestamp: 1770863303486 - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.5-h088129d_0.conda sha256: 822e4ae421a7e9c04e841323526321185f6659222325e1a9aedec811c686e688 md5: 86f7414544ae606282352fa1e116b41f @@ -15162,15 +15790,16 @@ packages: license_family: APACHE size: 6199233 timestamp: 1759481842048 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.0-h2c50142_0_cpu.conda - sha256: 96b32fdc4c597c3d5b5029da7a15aceb055f380255d00e9424f640280fe7ae17 - md5: ef47efe8884347ab96f0d26399e83229 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-23.0.0-h258748b_2_cuda.conda + build_number: 2 + sha256: 6443b25aaae157d4bd767de0e73faf40334d2f11bde8732f876216291eb939e6 + md5: c364f39d8a924797157da59d8cdd6b97 depends: - __glibc >=2.17,<3.0.a0 - aws-crt-cpp >=0.35.4,<0.35.5.0a0 - aws-sdk-cpp >=1.11.606,<1.11.607.0a0 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 - - azure-identity-cpp >=1.13.2,<1.13.3.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - azure-identity-cpp >=1.13.3,<1.13.4.0a0 - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0 - azure-storage-files-datalake-cpp >=12.14.0,<12.14.1.0a0 - bzip2 >=1.0.8,<2.0a0 @@ -15191,12 +15820,13 @@ packages: - snappy >=1.2.2,<1.3.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: - - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - - apache-arrow-proc =*=cpu + - apache-arrow-proc =*=cuda + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 6465556 - timestamp: 1769258291169 + license_family: APACHE + size: 6486895 + timestamp: 1770440459831 - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-21.0.0-h3202d62_8_cpu.conda build_number: 8 sha256: f65944106f287042f24f1ea1099a2f1572231b588bab0317ea8a8fc5015c0a28 @@ -15233,15 +15863,16 @@ packages: license_family: APACHE size: 4170815 timestamp: 1759483300750 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-23.0.0-h8071b21_0_cpu.conda - sha256: c2515297e108a07154a718b4767b7f239b5e827c5afa503b47bdb49617e9226d - md5: 65956d60494884c45e3f0952de391e08 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-23.0.0-h72f758e_2_cpu.conda + build_number: 2 + sha256: a771cacb2d047359ce5cd672cd6af974391ed51f8a00601e92eb412ceb9f2845 + md5: 0ca5462ee03e2b8e7a506b1b4a0926ce depends: - __osx >=11.0 - aws-crt-cpp >=0.35.4,<0.35.5.0a0 - aws-sdk-cpp >=1.11.606,<1.11.607.0a0 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 - - azure-identity-cpp >=1.13.2,<1.13.3.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - azure-identity-cpp >=1.13.3,<1.13.4.0a0 - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0 - azure-storage-files-datalake-cpp >=12.14.0,<12.14.1.0a0 - bzip2 >=1.0.8,<2.0a0 @@ -15261,12 +15892,13 @@ packages: - snappy >=1.2.2,<1.3.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: + - arrow-cpp <0.0a0 - parquet-cpp <0.0a0 - apache-arrow-proc =*=cpu - - arrow-cpp <0.0a0 license: Apache-2.0 - size: 4362941 - timestamp: 1769256370266 + license_family: APACHE + size: 4366400 + timestamp: 1770433396034 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-21.0.0-hd43feaf_8_cpu.conda build_number: 8 sha256: 0086d59c4bcdce61cc2ada047995bfdf047d635e77c97cf4720d084b647c08c1 @@ -15303,15 +15935,16 @@ packages: license_family: APACHE size: 4070104 timestamp: 1759481958097 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-23.0.0-h4365f54_0_cpu.conda - sha256: b41ea6b49706a26a10062117ddad80c002fcec7f137218773e8a88956609ec0c - md5: 4cabd181be9d09c0f89150d8ace35bbe +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-23.0.0-h585ae05_2_cpu.conda + build_number: 2 + sha256: 26854bc0409c487b79abe406f3f5c3a93db8ec6e0adf57d64a24e57542fc1df0 + md5: 8cbb6099377c13f1932c6a04d5da013f depends: - __osx >=11.0 - aws-crt-cpp >=0.35.4,<0.35.5.0a0 - aws-sdk-cpp >=1.11.606,<1.11.607.0a0 - - azure-core-cpp >=1.16.1,<1.16.2.0a0 - - azure-identity-cpp >=1.13.2,<1.13.3.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - azure-identity-cpp >=1.13.3,<1.13.4.0a0 - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0 - azure-storage-files-datalake-cpp >=12.14.0,<12.14.1.0a0 - bzip2 >=1.0.8,<2.0a0 @@ -15332,17 +15965,23 @@ packages: - zstd >=1.5.7,<1.6.0a0 constrains: - apache-arrow-proc =*=cpu - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 license: Apache-2.0 - size: 4246195 - timestamp: 1769255079919 -- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-23.0.0-hcf7e2ff_0_cpu.conda - sha256: 60df1505c0e14fc1aa1832f57f6802854559f718531101dfb0835b45a6cd3cf2 - md5: b6f129fd980b012c234b455219f31a6d + license_family: APACHE + size: 4265020 + timestamp: 1770431176545 +- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-23.0.0-hfcfc620_2_cpu.conda + build_number: 2 + sha256: 616381f1da4bc8b8bd66462cb8c9ccd8ccb311433572e93046f93e302d270cf2 + md5: 0f527bc994fd2fe1e82447e6f2f35d83 depends: - aws-crt-cpp >=0.35.4,<0.35.5.0a0 - aws-sdk-cpp >=1.11.606,<1.11.607.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - azure-identity-cpp >=1.13.3,<1.13.4.0a0 + - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0 + - azure-storage-files-datalake-cpp >=12.14.0,<12.14.1.0a0 - bzip2 >=1.0.8,<2.0a0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 @@ -15362,12 +16001,49 @@ packages: - vc14_runtime >=14.44.35208 - zstd >=1.5.7,<1.6.0a0 constrains: - - parquet-cpp <0.0a0 - arrow-cpp <0.0a0 - apache-arrow-proc =*=cpu + - parquet-cpp <0.0a0 + license: Apache-2.0 + license_family: APACHE + size: 4291175 + timestamp: 1770435649751 +- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-23.0.1-hde9e798_0_cpu.conda + sha256: dafb6e2e5442bbaff287eac65c2a45144473984ea378f6508c44408e1c14a5c3 + md5: d13ca464803c4c4b3e4d4f9834b3e75a + depends: + - aws-crt-cpp >=0.35.4,<0.35.5.0a0 + - aws-sdk-cpp >=1.11.606,<1.11.607.0a0 + - azure-core-cpp >=1.16.2,<1.16.3.0a0 + - azure-identity-cpp >=1.13.3,<1.13.4.0a0 + - azure-storage-blobs-cpp >=12.16.0,<12.16.1.0a0 + - azure-storage-files-datalake-cpp >=12.14.0,<12.14.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libbrotlidec >=1.2.0,<1.3.0a0 + - libbrotlienc >=1.2.0,<1.3.0a0 + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl >=8.18.0,<9.0a0 + - libgoogle-cloud >=2.39.0,<2.40.0a0 + - libgoogle-cloud-storage >=2.39.0,<2.40.0a0 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.2.2,<2.2.3.0a0 + - snappy >=1.2.2,<1.3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + - arrow-cpp <0.0a0 license: Apache-2.0 - size: 4149744 - timestamp: 1769259187888 + license_family: APACHE + size: 4298177 + timestamp: 1771288862168 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-21.0.0-h635bf11_8_cpu.conda build_number: 8 sha256: f00a955134401585ed75d6e9d76d48f9512d1e4f56a2a9260c69008ffc4a6851 @@ -15382,18 +16058,20 @@ packages: license_family: APACHE size: 581216 timestamp: 1759482031187 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.0-h635bf11_0_cpu.conda - sha256: bfcd0aac7c9cfdb7896e110898bec17e41e253b851a00f9a4c9f960d2d487d83 - md5: 0e1d44a4759116c17c77cdead68bb2d6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-23.0.0-h635bf11_2_cuda.conda + build_number: 2 + sha256: 2d375ae77653ef0cc9b70ebc9d87e7d3bd6cc4cb2700c5c538521931f3483efd + md5: b1f327dae633933118765c113fd3ecd0 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 23.0.0 h2c50142_0_cpu - - libarrow-compute 23.0.0 h8c2c5c3_0_cpu + - libarrow 23.0.0 h258748b_2_cuda + - libarrow-compute 23.0.0 h8c2c5c3_2_cuda - libgcc >=14 - libstdcxx >=14 license: Apache-2.0 - size: 609841 - timestamp: 1769258520430 + license_family: APACHE + size: 612384 + timestamp: 1770440620357 - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-21.0.0-h2db2d7d_8_cpu.conda build_number: 8 sha256: 45ce2e464256060c193720e0feaebcfed4df4dd0fc2a2f4ddf249cc0747583bd @@ -15411,21 +16089,23 @@ packages: license_family: APACHE size: 552278 timestamp: 1759484126007 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-23.0.0-h9737151_0_cpu.conda - sha256: 26e7b08c0e945a5a825b13069f4f3a8855ffc18d8f953a800bda6c9dcfdf11b8 - md5: dcaf0d16d780e9d89f9d9bfd6fc21241 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-acero-23.0.0-h9737151_2_cpu.conda + build_number: 2 + sha256: 91e650183aeb0294d4e003e67aadfbf70afeb33c201242e305251697a0253dc0 + md5: df07a0e8ed601a2f272ab0f17f0c25b5 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 23.0.0 h8071b21_0_cpu - - libarrow-compute 23.0.0 hc26cc94_0_cpu + - libarrow 23.0.0 h72f758e_2_cpu + - libarrow-compute 23.0.0 hc26cc94_2_cpu - libcxx >=21 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - libprotobuf >=6.31.1,<6.31.2.0a0 license: Apache-2.0 - size: 562566 - timestamp: 1769256944293 + license_family: APACHE + size: 566771 + timestamp: 1770434135449 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-21.0.0-hc317990_8_cpu.conda build_number: 8 sha256: c2566bb6f399cc61fcf54736f71bf29c96199a61ffbb8fc30e029b7eac0826e7 @@ -15443,33 +16123,50 @@ packages: license_family: APACHE size: 517544 timestamp: 1759482466808 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-23.0.0-h6de58dd_0_cpu.conda - sha256: 59b883e7a8e36864323570e4c6a98b626eec81f0e9263dd3de176bb2ad652230 - md5: 6adb634c0d1fea4834910a76b42388e8 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-acero-23.0.0-h6de58dd_2_cpu.conda + build_number: 2 + sha256: 58bfc6a3ce5a07e95c333036ca07b548cb1b504bf29a84a5834667130240fb5c + md5: db14af88015df0dbd660a5eb814a1b23 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 23.0.0 h4365f54_0_cpu - - libarrow-compute 23.0.0 h45df96a_0_cpu + - libarrow 23.0.0 h585ae05_2_cpu + - libarrow-compute 23.0.0 h45df96a_2_cpu - libcxx >=21 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - libprotobuf >=6.31.1,<6.31.2.0a0 license: Apache-2.0 - size: 541064 - timestamp: 1769255474820 -- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-23.0.0-h7d8d6a5_0_cpu.conda - sha256: fe073960e60389dff5649ad108dd9aa767cf2a9acd05cabd51b099867d394cea - md5: 540182c554868cef4ead05206147705b + license_family: APACHE + size: 544305 + timestamp: 1770431508372 +- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-23.0.0-h7d8d6a5_2_cpu.conda + build_number: 2 + sha256: ce411d8cfbe9025e2d5c69f47800805b01c671d3b2ecd9eb93235f36906ca5ec + md5: 88c1bf9589eaa3c7416c1f4706dd9312 + depends: + - libarrow 23.0.0 hfcfc620_2_cpu + - libarrow-compute 23.0.0 h2db994a_2_cpu + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: APACHE + size: 468526 + timestamp: 1770435951152 +- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-acero-23.0.1-h7d8d6a5_0_cpu.conda + sha256: f1399d4b8fc80bdff346a53384dc8fd12c3c26ef86eb7bc765a36e65b77e2e09 + md5: 81ba31694794c0cc3f2d9260a88d4412 depends: - - libarrow 23.0.0 hcf7e2ff_0_cpu - - libarrow-compute 23.0.0 h2db994a_0_cpu + - libarrow 23.0.1 hde9e798_0_cpu + - libarrow-compute 23.0.1 h081cd8e_0_cpu - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: Apache-2.0 - size: 464816 - timestamp: 1769259495722 + license_family: APACHE + size: 463624 + timestamp: 1771289166253 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-21.0.0-h8c2c5c3_8_cpu.conda build_number: 8 sha256: a4e2ca70b727f9699f09a5e9c77ca73e555aa2555d9742da9790a0ac71e5ecce @@ -15486,20 +16183,22 @@ packages: license_family: APACHE size: 3071770 timestamp: 1759481909971 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.0-h8c2c5c3_0_cpu.conda - sha256: 78c8ea0bcc3a0fd730af4be18ee51f96ec83e38f821aec8910cf273e68a4265a - md5: fa2c484e95ba37950f926bd797c51dc4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-compute-23.0.0-h8c2c5c3_2_cuda.conda + build_number: 2 + sha256: 0a87b2d585e1f2c37161d3c15881f6d123e383813a5cefc61899447b5c3c2416 + md5: 7846ea1f43ef6beb04749b5dffd6e4da depends: - __glibc >=2.17,<3.0.a0 - - libarrow 23.0.0 h2c50142_0_cpu + - libarrow 23.0.0 h258748b_2_cuda - libgcc >=14 - libre2-11 >=2025.8.12 - libstdcxx >=14 - libutf8proc >=2.11.3,<2.12.0a0 - re2 license: Apache-2.0 - size: 3004155 - timestamp: 1769258376407 + license_family: APACHE + size: 3007830 + timestamp: 1770440521926 - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-21.0.0-h7751554_8_cpu.conda build_number: 8 sha256: bf58e7f7d5a3328f4a19e579aaa8d249b517c0f8ce9d218de94b013f314ac7bd @@ -15519,14 +16218,15 @@ packages: license_family: APACHE size: 2450908 timestamp: 1759483628040 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-23.0.0-hc26cc94_0_cpu.conda - sha256: 51c8c7c3e5fc0532d33c2464b985548a683476b38976c9bdab9e46e77452919e - md5: 529e738c9f7641f742e458b5dd903a87 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-compute-23.0.0-hc26cc94_2_cpu.conda + build_number: 2 + sha256: 77d8a716a342f2b64d6e257faa49178ac85e647ff3ca88c1742000163d65211d + md5: 278d25b7f2903d53483b0a11dc26dec0 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 23.0.0 h8071b21_0_cpu + - libarrow 23.0.0 h72f758e_2_cpu - libcxx >=21 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - libprotobuf >=6.31.1,<6.31.2.0a0 @@ -15534,8 +16234,9 @@ packages: - libutf8proc >=2.11.3,<2.12.0a0 - re2 license: Apache-2.0 - size: 2403204 - timestamp: 1769256571727 + license_family: APACHE + size: 2407238 + timestamp: 1770433661971 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-21.0.0-h75845d1_8_cpu.conda build_number: 8 sha256: d778d7df8123a542c0f8c4b028eb7855c4ac139c8b12d98b20cbea01a30db0b7 @@ -15555,14 +16256,15 @@ packages: license_family: APACHE size: 2213962 timestamp: 1759482132558 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-23.0.0-h45df96a_0_cpu.conda - sha256: c1068da02a93c369fbe15a6d8bde778c81103e64cf692c7a18a14517d8e88478 - md5: 2e789cb0973deba788f9d349a9d1b494 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-compute-23.0.0-h45df96a_2_cpu.conda + build_number: 2 + sha256: 300333f8fc6af6859fcaa8012146ddf9120dc9ca86778d81cba807dccc3aa871 + md5: 605c1d25d6ea55f0d110a15cb7c95dfe depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 23.0.0 h4365f54_0_cpu + - libarrow 23.0.0 h585ae05_2_cpu - libcxx >=21 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - libprotobuf >=6.31.1,<6.31.2.0a0 @@ -15570,13 +16272,15 @@ packages: - libutf8proc >=2.11.3,<2.12.0a0 - re2 license: Apache-2.0 - size: 2258820 - timestamp: 1769255222237 -- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-23.0.0-h2db994a_0_cpu.conda - sha256: 522d7f674a6768c1f57456ce9f241be6282a532d9affb16bb73d3cc23c1712da - md5: 3dc0dfb46631dc00a44c4ed869e54cfa + license_family: APACHE + size: 2261676 + timestamp: 1770431301633 +- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-23.0.0-h2db994a_2_cpu.conda + build_number: 2 + sha256: 10d13a0c4dd7c2bb144ac778b524e177d147d73134c6b7df5ebb9ca2e8d9a7f4 + md5: af83df2f71f7ca552ee5ad0a31c9c9ef depends: - - libarrow 23.0.0 hcf7e2ff_0_cpu + - libarrow 23.0.0 hfcfc620_2_cpu - libre2-11 >=2025.8.12 - libutf8proc >=2.11.3,<2.12.0a0 - re2 @@ -15584,8 +16288,24 @@ packages: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: Apache-2.0 - size: 1774422 - timestamp: 1769259309856 + license_family: APACHE + size: 1774227 + timestamp: 1770435760973 +- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-compute-23.0.1-h081cd8e_0_cpu.conda + sha256: d2b2d34efe1c49f4ed5b8274b053efcc059147acdb77654743ef8d0c542b81e2 + md5: 224991e8d135a1bbbe358ffa98122502 + depends: + - libarrow 23.0.1 hde9e798_0_cpu + - libre2-11 >=2025.11.5 + - libutf8proc >=2.11.3,<2.12.0a0 + - re2 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: APACHE + size: 1771556 + timestamp: 1771288968673 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-21.0.0-h635bf11_8_cpu.conda build_number: 8 sha256: 2f801c87f34bc7e93adb4f4d1ac54adf778d9d0ed7c0425dee2e8ffbe1c2d428 @@ -15602,20 +16322,22 @@ packages: license_family: APACHE size: 579388 timestamp: 1759482107976 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.0-h635bf11_0_cpu.conda - sha256: 5ba3d5b2422939c8b4f8af28969d80e92f99f523c4383c0cacc3793e9a40b8b6 - md5: a373b33a7a1c9f57ef6273e886e91fe1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-23.0.0-h635bf11_2_cuda.conda + build_number: 2 + sha256: bc14166ef76974c7bf4587baab2d95acd223ccf2d875f7885cce9b6e621973b8 + md5: fa0aa202043167a22dd7638c08004cb2 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 23.0.0 h2c50142_0_cpu - - libarrow-acero 23.0.0 h635bf11_0_cpu - - libarrow-compute 23.0.0 h8c2c5c3_0_cpu + - libarrow 23.0.0 h258748b_2_cuda + - libarrow-acero 23.0.0 h635bf11_2_cuda + - libarrow-compute 23.0.0 h8c2c5c3_2_cuda - libgcc >=14 - - libparquet 23.0.0 h7376487_0_cpu + - libparquet 23.0.0 h7376487_2_cuda - libstdcxx >=14 license: Apache-2.0 - size: 609032 - timestamp: 1769258619672 + license_family: APACHE + size: 611958 + timestamp: 1770440686787 - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-21.0.0-h2db2d7d_8_cpu.conda build_number: 8 sha256: 902200ce5a94a962d6b0bd6df847bc350ca75050d21db187f788990599eb4f80 @@ -15635,23 +16357,25 @@ packages: license_family: APACHE size: 534087 timestamp: 1759484554656 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-23.0.0-h9737151_0_cpu.conda - sha256: 54e9f65b484ce5b3164fdce7002a98c48d49a786bcbd5a3069def50c2f6fd342 - md5: 29bcbe4c43773e9c75b9ce72fd93ee34 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-dataset-23.0.0-h9737151_2_cpu.conda + build_number: 2 + sha256: c6c2eaa42d2c6c085715dd1f002a7544e221113c757ef0a52d842030bebb4a00 + md5: 49a5fb4fbf3e0aa6e234ca9c4ee03594 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 23.0.0 h8071b21_0_cpu - - libarrow-acero 23.0.0 h9737151_0_cpu - - libarrow-compute 23.0.0 hc26cc94_0_cpu + - libarrow 23.0.0 h72f758e_2_cpu + - libarrow-acero 23.0.0 h9737151_2_cpu + - libarrow-compute 23.0.0 hc26cc94_2_cpu - libcxx >=21 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - - libparquet 23.0.0 ha0d2768_0_cpu + - libparquet 23.0.0 ha0d2768_2_cpu - libprotobuf >=6.31.1,<6.31.2.0a0 license: Apache-2.0 - size: 552421 - timestamp: 1769257199184 + license_family: APACHE + size: 555173 + timestamp: 1770434504150 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-21.0.0-hc317990_8_cpu.conda build_number: 8 sha256: cb549cbeb43478261c99c50d38249d30e93b7aa25f4786496daa80fba430f4c4 @@ -15671,37 +16395,56 @@ packages: license_family: APACHE size: 514947 timestamp: 1759482675333 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-23.0.0-h6de58dd_0_cpu.conda - sha256: d5f02adce52fad0d0e67a610fde042f074295839e3160bd8753d2b59721cfa1f - md5: d2f5c4e548556c58eff3691eb1e70907 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-dataset-23.0.0-h6de58dd_2_cpu.conda + build_number: 2 + sha256: 991570eebd1b7bbb050fcc3a1264d57d7e6c1f71d5d1794ce6cd323144bd221b + md5: 3da2f4cd4f855e2bcbd668038a5fcd13 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 23.0.0 h4365f54_0_cpu - - libarrow-acero 23.0.0 h6de58dd_0_cpu - - libarrow-compute 23.0.0 h45df96a_0_cpu + - libarrow 23.0.0 h585ae05_2_cpu + - libarrow-acero 23.0.0 h6de58dd_2_cpu + - libarrow-compute 23.0.0 h45df96a_2_cpu - libcxx >=21 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - - libparquet 23.0.0 hcc2992d_0_cpu + - libparquet 23.0.0 hcc2992d_2_cpu - libprotobuf >=6.31.1,<6.31.2.0a0 license: Apache-2.0 - size: 537398 - timestamp: 1769255642708 -- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-23.0.0-h7d8d6a5_0_cpu.conda - sha256: 026b8e67e8dcd9a8cd11e7ac6670c4d2896ab6dde4b1203b46b55fe96a1c253f - md5: 9636a9e56e2884a13af82b52f40e3335 + license_family: APACHE + size: 540965 + timestamp: 1770431651908 +- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-23.0.0-h7d8d6a5_2_cpu.conda + build_number: 2 + sha256: cd4c24f4cdf3ff19b9c1e81ee348c5db0e6d8dca3b31afd8ed3207b2dfeb8479 + md5: b2031f0c71cbeec465a47fe988f726a6 + depends: + - libarrow 23.0.0 hfcfc620_2_cpu + - libarrow-acero 23.0.0 h7d8d6a5_2_cpu + - libarrow-compute 23.0.0 h2db994a_2_cpu + - libparquet 23.0.0 h7051d1f_2_cpu + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: APACHE + size: 450625 + timestamp: 1770436078161 +- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-dataset-23.0.1-h7d8d6a5_0_cpu.conda + sha256: 3fa564c2738c3048cac00aa27070824aa16e101c17f8041c5fecacb02fc7cb3f + md5: 8d9da87c24bff207fcab71b628340f9d depends: - - libarrow 23.0.0 hcf7e2ff_0_cpu - - libarrow-acero 23.0.0 h7d8d6a5_0_cpu - - libarrow-compute 23.0.0 h2db994a_0_cpu - - libparquet 23.0.0 h7051d1f_0_cpu + - libarrow 23.0.1 hde9e798_0_cpu + - libarrow-acero 23.0.1 h7d8d6a5_0_cpu + - libarrow-compute 23.0.1 h081cd8e_0_cpu + - libparquet 23.0.1 h7051d1f_0_cpu - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: Apache-2.0 - size: 446822 - timestamp: 1769259620882 + license_family: APACHE + size: 446341 + timestamp: 1771289293452 - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-21.0.0-h3f74fd7_8_cpu.conda build_number: 8 sha256: 83fcb14f742e34aad34f007a62f8b414543d20feee7485a74ed3d525148fca50 @@ -15720,22 +16463,24 @@ packages: license_family: APACHE size: 483116 timestamp: 1759482133380 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.0-h3f74fd7_0_cpu.conda - sha256: 2cb7bd9c1a282fded4b698fdd27fe92cec986a7a84d2968a22645f08dee4417f - md5: 618c4d7d323f9b3ec4fdb0b3a5e5df1d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-23.0.0-h3f74fd7_2_cuda.conda + build_number: 2 + sha256: f1cdff662d277039e8b70ebbaae0572ce97ddd35a065313da09a234acca48003 + md5: cf0b0682dadc05c597b11ff24ae6c0b7 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 23.0.0 h2c50142_0_cpu - - libarrow-acero 23.0.0 h635bf11_0_cpu - - libarrow-dataset 23.0.0 h635bf11_0_cpu + - libarrow 23.0.0 h258748b_2_cuda + - libarrow-acero 23.0.0 h635bf11_2_cuda + - libarrow-dataset 23.0.0 h635bf11_2_cuda - libgcc >=14 - libprotobuf >=6.31.1,<6.31.2.0a0 - libstdcxx >=14 license: Apache-2.0 - size: 517046 - timestamp: 1769258652681 + license_family: APACHE + size: 520453 + timestamp: 1770440708760 - conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-21.0.0-h4653b8a_8_cpu.conda build_number: 8 sha256: 78fc6d5d6144af5efb4329e643e29733567d96658708f12885fc251c16a71d2e @@ -15753,21 +16498,23 @@ packages: license_family: APACHE size: 448256 timestamp: 1759484680404 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-23.0.0-h7f2e36e_0_cpu.conda - sha256: ce2185282b8fa0b507d278afb5cfd97964faa917784123e9cb20aa3aedb9f396 - md5: 863dc1e33bafc3288f32098ab5ea9efc +- conda: https://conda.anaconda.org/conda-forge/osx-64/libarrow-substrait-23.0.0-h7f2e36e_2_cpu.conda + build_number: 2 + sha256: 716e5f235065c22903a0a1ec1bb2a66e2e71477bece3d78f6f420dc27c4bbba8 + md5: 8196497a3bc332336078391692ede27b depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 23.0.0 h8071b21_0_cpu - - libarrow-acero 23.0.0 h9737151_0_cpu - - libarrow-dataset 23.0.0 h9737151_0_cpu + - libarrow 23.0.0 h72f758e_2_cpu + - libarrow-acero 23.0.0 h9737151_2_cpu + - libarrow-dataset 23.0.0 h9737151_2_cpu - libcxx >=21 - libprotobuf >=6.31.1,<6.31.2.0a0 license: Apache-2.0 - size: 465745 - timestamp: 1769257286608 + license_family: APACHE + size: 468292 + timestamp: 1770434625608 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-21.0.0-h144af7f_8_cpu.conda build_number: 8 sha256: b1933afbf52d01a31dfe8a78405081e222a8749f69cdd44c87de445916325415 @@ -15785,37 +16532,58 @@ packages: license_family: APACHE size: 452889 timestamp: 1759482755723 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-23.0.0-hb5627e6_0_cpu.conda - sha256: c5d0352ac56d0e43fc0be61594eee3c0588c8e154a6c07f3d245d8a3f3cc41f2 - md5: 16bc8883988ca21cddf7e8efe7479e76 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarrow-substrait-23.0.0-hb5627e6_2_cpu.conda + build_number: 2 + sha256: 1d39899591ab7f1837294a3f894178b47f677e8c69d1e1a9f12979824c6a1c74 + md5: 6b25f000c0719ee305470f62147bfdc6 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 23.0.0 h4365f54_0_cpu - - libarrow-acero 23.0.0 h6de58dd_0_cpu - - libarrow-dataset 23.0.0 h6de58dd_0_cpu + - libarrow 23.0.0 h585ae05_2_cpu + - libarrow-acero 23.0.0 h6de58dd_2_cpu + - libarrow-dataset 23.0.0 h6de58dd_2_cpu - libcxx >=21 - libprotobuf >=6.31.1,<6.31.2.0a0 license: Apache-2.0 - size: 472092 - timestamp: 1769255724125 -- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-23.0.0-hf865cc0_0_cpu.conda - sha256: eaf10b91f78d048db073367289706dceea442cd392182da4ebd18e1ab1f88952 - md5: a0822fb8692ae257f0cbba0003aa4e62 + license_family: APACHE + size: 474601 + timestamp: 1770431716301 +- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-23.0.0-hf865cc0_2_cpu.conda + build_number: 2 + sha256: 3fc01537d51d6d3f8afafac61967cc46b3038b85e97168c43dc51e9caf2836f0 + md5: 7e4ef91357330c200f640c198cac50dd depends: - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 23.0.0 hcf7e2ff_0_cpu - - libarrow-acero 23.0.0 h7d8d6a5_0_cpu - - libarrow-dataset 23.0.0 h7d8d6a5_0_cpu + - libarrow 23.0.0 hfcfc620_2_cpu + - libarrow-acero 23.0.0 h7d8d6a5_2_cpu + - libarrow-dataset 23.0.0 h7d8d6a5_2_cpu - libprotobuf >=6.31.1,<6.31.2.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: Apache-2.0 - size: 375788 - timestamp: 1769259661708 + license_family: APACHE + size: 379196 + timestamp: 1770436121320 +- conda: https://conda.anaconda.org/conda-forge/win-64/libarrow-substrait-23.0.1-h524e9bd_0_cpu.conda + sha256: 09dd898b9204fcef7213f8f95c3962f88aa5b7a5f2abd0c15eab6e9c714851de + md5: 9196e6bc8349fe2e81c5e7e2e3b61ed8 + depends: + - libabseil * cxx17* + - libabseil >=20260107.1,<20260108.0a0 + - libarrow 23.0.1 hde9e798_0_cpu + - libarrow-acero 23.0.1 h7d8d6a5_0_cpu + - libarrow-dataset 23.0.1 h7d8d6a5_0_cpu + - libprotobuf >=6.33.5,<6.33.6.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: APACHE + size: 379520 + timestamp: 1771289334931 - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.11.0-5_h4a7cf45_openblas.conda build_number: 5 sha256: 18c72545080b86739352482ba14ba2c4815e19e26a7417ca21a95b76ec8da24c @@ -16187,9 +16955,9 @@ packages: license_family: Apache size: 21291311 timestamp: 1768845917554 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_2.conda - sha256: ee878abf2ecbba378525a900a1ebe773ce2313fffeba6e8aca85f6fc62d0a0e1 - md5: 3c71daed530c0c26671a1b1b7010e746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp21.1-21.1.8-default_h99862b1_3.conda + sha256: de512ce246faec2d4f7766774769921a85b5aa053a74abd2f8c97ad50b393aac + md5: 24a2802074d26aecfdbc9b3f1d8168d1 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -16197,8 +16965,8 @@ packages: - libstdcxx >=14 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 21054598 - timestamp: 1769313958672 + size: 21066639 + timestamp: 1770190428756 - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.0-default_h746c552_1.conda sha256: e6c0123b888d6abf03c66c52ed89f9de1798dde930c5fd558774f26e994afbc6 md5: 327c78a8ce710782425a89df851392f7 @@ -16211,9 +16979,9 @@ packages: license_family: Apache size: 12358102 timestamp: 1757383373129 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.8-default_h746c552_2.conda - sha256: 77102b261874b35f37a12e79bab2272596e8bfda9e94cf13d1ae480ccd8d2e87 - md5: 0ad9019bb10eda915fb0ce5f78fef13b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-21.1.8-default_h746c552_3.conda + sha256: 8215f7553e2640461c1d9564147db4d0b31169cc31bb65c9db9fd38ccd73146e + md5: b4277f5a09d458a0306db3147bd0171c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -16221,11 +16989,11 @@ packages: - libstdcxx >=14 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 12346110 - timestamp: 1769314238631 -- conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-21.1.8-default_ha2db4b5_2.conda - sha256: ca513e2a98ff35855a0f6594632846b62a584369ff12a0cca66466a88f37e9a3 - md5: 511af9070467adf0e8af89ce18d516cf + size: 12349894 + timestamp: 1770190719381 +- conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-21.1.8-default_ha2db4b5_3.conda + sha256: 77ac3fa55fdc5ba0e3709c5830a99dd1abd8f13fd96845768f72ea64ff1baf14 + md5: 06e385238457018ad1071179b67e39d1 depends: - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 @@ -16234,8 +17002,8 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 28997951 - timestamp: 1769320556440 + size: 28993850 + timestamp: 1770197403573 - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 md5: c965a5aa0d5c1c37ffc62dff36e28400 @@ -16303,36 +17071,36 @@ packages: license_family: MIT size: 462942 timestamp: 1767821743793 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.18.0-h9348e2b_0.conda - sha256: 1a0af3b7929af3c5893ebf50161978f54ae0256abb9532d4efba2735a0688325 - md5: de1910529f64ba4a9ac9005e0be78601 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.18.0-h9a2545f_1.conda + sha256: e2d8cb7c6d8dfb6c277eddbb9cf099805f40957877a48347cafddeade02f143a + md5: a6c0494188638d4bfe767f195619bb93 depends: - __osx >=10.13 - - krb5 >=1.21.3,<1.22.0a0 + - krb5 >=1.22.2,<1.23.0a0 - libnghttp2 >=1.67.0,<2.0a0 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - zstd >=1.5.7,<1.6.0a0 license: curl license_family: MIT - size: 419089 - timestamp: 1767822218800 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.18.0-he38603e_0.conda - sha256: 11c78b3e89bc332933386f0a11ac60d9200afb7a811b9e3bec98aef8d4a6389b - md5: 36190179a799f3aee3c2d20a8a2b970d + size: 419351 + timestamp: 1770893388507 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.18.0-hd5a2499_1.conda + sha256: dbc34552fc6f040bbcd52b4246ec068ce8d82be0e76bfe45c6984097758d37c2 + md5: 2742a933ef07e91f38e3d33ad6fe937c depends: - __osx >=11.0 - - krb5 >=1.21.3,<1.22.0a0 + - krb5 >=1.22.2,<1.23.0a0 - libnghttp2 >=1.67.0,<2.0a0 - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - zstd >=1.5.7,<1.6.0a0 license: curl license_family: MIT - size: 402681 - timestamp: 1767822693908 + size: 402616 + timestamp: 1770893178846 - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.18.0-h43ecb02_0.conda sha256: 86258e30845571ea13855e8a0605275905781476f3edf8ae5df90a06fcada93a md5: 2688214a9bee5d5650cd4f5f6af5c8f2 @@ -16347,24 +17115,24 @@ packages: license_family: MIT size: 383261 timestamp: 1767821977053 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h3d58e20_0.conda - sha256: cbd8e821e97436d8fc126c24b50df838b05ba4c80494fbb93ccaf2e3b2d109fb - md5: 9f8a60a77ecafb7966ca961c94f33bd1 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-21.1.8-h4fb565c_2.conda + sha256: 2619d471c50c466320e2aea906a4363e34efe181e61346e4453bc68264c5185f + md5: 1ac756454e65fb3fd7bc7de599526e43 depends: - __osx >=10.13 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 569777 - timestamp: 1765919624323 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-hf598326_0.conda - sha256: 82e228975fd491bcf1071ecd0a6ec2a0fcc5f57eb0bd1d52cb13a18d57c67786 - md5: 780f0251b757564e062187044232c2b7 + size: 571912 + timestamp: 1770237202404 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-21.1.8-h55c6f16_2.conda + sha256: 5fbeb2fc2673f0455af6079abf93faaf27f11a92574ad51565fa1ecac9a4e2aa + md5: 4cb5878bdb9ebfa65b7cdff5445087c5 depends: - __osx >=11.0 license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 569118 - timestamp: 1765919724254 + size: 570068 + timestamp: 1770238262922 - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda sha256: 8420748ea1cc5f18ecc5068b4f24c7a023cc9b20971c99c824ba10641fb95ddf md5: 64f0c503da58ec25ebd359e4d990afa8 @@ -16571,53 +17339,53 @@ packages: license_family: BSD size: 410555 timestamp: 1685726568668 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.3-hecca717_0.conda - sha256: 1e1b08f6211629cbc2efe7a5bca5953f8f6b3cae0eeb04ca4dacee1bd4e2db2f - md5: 8b09ae86839581147ef2e5c5e229d164 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.7.4-hecca717_0.conda + sha256: d78f1d3bea8c031d2f032b760f36676d87929b18146351c4464c66b0869df3f5 + md5: e7f7ce06ec24cfcfb9e36d28cf82ba57 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 constrains: - - expat 2.7.3.* + - expat 2.7.4.* license: MIT license_family: MIT - size: 76643 - timestamp: 1763549731408 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.3-heffb93a_0.conda - sha256: d11b3a6ce5b2e832f430fd112084533a01220597221bee16d6c7dc3947dffba6 - md5: 222e0732a1d0780a622926265bee14ef + size: 76798 + timestamp: 1771259418166 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.7.4-h991f03e_0.conda + sha256: 8d9d79b2de7d6f335692391f5281607221bf5d040e6724dad4c4d77cd603ce43 + md5: a684eb8a19b2aa68fde0267df172a1e3 depends: - __osx >=10.13 constrains: - - expat 2.7.3.* + - expat 2.7.4.* license: MIT license_family: MIT - size: 74058 - timestamp: 1763549886493 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.3-haf25636_0.conda - sha256: fce22610ecc95e6d149e42a42fbc3cc9d9179bd4eb6232639a60f06e080eec98 - md5: b79875dbb5b1db9a4a22a4520f918e1a + size: 74578 + timestamp: 1771260142624 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.7.4-hf6b4638_0.conda + sha256: 03887d8080d6a8fe02d75b80929271b39697ecca7628f0657d7afaea87761edf + md5: a92e310ae8dfc206ff449f362fc4217f depends: - __osx >=11.0 constrains: - - expat 2.7.3.* + - expat 2.7.4.* license: MIT license_family: MIT - size: 67800 - timestamp: 1763549994166 -- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.3-hac47afa_0.conda - sha256: 844ab708594bdfbd7b35e1a67c379861bcd180d6efe57b654f482ae2f7f5c21e - md5: 8c9e4f1a0e688eef2e95711178061a0f + size: 68199 + timestamp: 1771260020767 +- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.7.4-hac47afa_0.conda + sha256: b31f6fb629c4e17885aaf2082fb30384156d16b48b264e454de4a06a313b533d + md5: 1c1ced969021592407f16ada4573586d depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 constrains: - - expat 2.7.3.* + - expat 2.7.4.* license: MIT license_family: MIT - size: 70137 - timestamp: 1763550049107 + size: 70323 + timestamp: 1771259521393 - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda sha256: 764432d32db45466e87f10621db5b74363a9f847d2b8b1f9743746cd160f06ab md5: ede4673863426c0883c0063d853bbd85 @@ -16628,16 +17396,16 @@ packages: license_family: MIT size: 57433 timestamp: 1743434498161 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda - sha256: 25cbdfa65580cfab1b8d15ee90b4c9f1e0d72128f1661449c9a999d341377d54 - md5: 35f29eec58405aaf55e01cb470d8c26a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda + sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 + md5: a360c33a5abe61c07959e449fa1453eb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 license: MIT license_family: MIT - size: 57821 - timestamp: 1760295480630 + size: 58592 + timestamp: 1769456073053 - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.6-h281671d_1.conda sha256: 6394b1bc67c64a21a5cc73d1736d1d4193a64515152e861785c44d2cfc49edf3 md5: 4ca9ea59839a9ca8df84170fab4ceb41 @@ -16647,15 +17415,15 @@ packages: license_family: MIT size: 51216 timestamp: 1743434595269 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-h750e83c_0.conda - sha256: 277dc89950f5d97f1683f26e362d6dca3c2efa16cb2f6fdb73d109effa1cd3d0 - md5: d214916b24c625bcc459b245d509f22e +- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda + sha256: 951958d1792238006fdc6fce7f71f1b559534743b26cc1333497d46e5903a2d6 + md5: 66a0dc7464927d0853b590b6f53ba3ea depends: - __osx >=10.13 license: MIT license_family: MIT - size: 52573 - timestamp: 1760295626449 + size: 53583 + timestamp: 1769456300951 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.6-h1da3d7d_1.conda sha256: c6a530924a9b14e193ea9adfe92843de2a806d1b7dbfd341546ece9653129e60 md5: c215a60c2935b517dcda8cad4705734d @@ -16665,15 +17433,15 @@ packages: license_family: MIT size: 39839 timestamp: 1743434670405 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda - sha256: 9b8acdf42df61b7bfe8bdc545c016c29e61985e79748c64ad66df47dbc2e295f - md5: 411ff7cd5d1472bba0f55c0faf04453b +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda + sha256: 6686a26466a527585e6a75cc2a242bf4a3d97d6d6c86424a441677917f28bec7 + md5: 43c04d9cb46ef176bb2a4c77e324d599 depends: - __osx >=11.0 license: MIT license_family: MIT - size: 40251 - timestamp: 1760295839166 + size: 40979 + timestamp: 1769456747661 - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.6-h537db12_1.conda sha256: d3b0b8812eab553d3464bbd68204f007f1ebadf96ce30eb0cbc5159f72e353f5 md5: 85d8fa5e55ed8f93f874b3b23ed54ec6 @@ -16685,17 +17453,17 @@ packages: license_family: MIT size: 44978 timestamp: 1743435053850 -- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h52bdfb6_0.conda - sha256: ddff25aaa4f0aa535413f5d831b04073789522890a4d8626366e43ecde1534a3 - md5: ba4ad812d2afc22b9a34ce8327a0930f +- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.5.2-h3d046cb_0.conda + sha256: 59d01f2dfa8b77491b5888a5ab88ff4e1574c9359f7e229da254cdfe27ddc190 + md5: 720b39f5ec0610457b725eb3f396219a depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: MIT license_family: MIT - size: 44866 - timestamp: 1760295760649 + size: 45831 + timestamp: 1769456418774 - conda: https://conda.anaconda.org/conda-forge/linux-64/libfreetype-2.14.1-ha770c72_0.conda sha256: 4641d37faeb97cf8a121efafd6afd040904d4bca8c46798122f417c31d5dfbec md5: f4084e4e6577797150f9b04a4560ceb0 @@ -16779,66 +17547,61 @@ packages: license: GPL-2.0-only OR FTL size: 340264 timestamp: 1757946133889 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_16.conda - sha256: 6eed58051c2e12b804d53ceff5994a350c61baf117ec83f5f10c953a3f311451 - md5: 6d0363467e6ed84f11435eb309f2ff06 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_18.conda + sha256: faf7d2017b4d718951e3a59d081eb09759152f93038479b768e3d612688f83f5 + md5: 0aa00f03f9e39fb9876085dee11a85d4 depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 constrains: - - libgcc-ng ==15.2.0=*_16 - - libgomp 15.2.0 he0feb66_16 + - libgcc-ng ==15.2.0=*_18 + - libgomp 15.2.0 he0feb66_18 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1042798 - timestamp: 1765256792743 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_15.conda - sha256: e04b115ae32f8cbf95905971856ff557b296511735f4e1587b88abf519ff6fb8 - md5: c816665789d1e47cdfd6da8a81e1af64 + size: 1041788 + timestamp: 1771378212382 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgcc-15.2.0-h08519bb_18.conda + sha256: 83366f11615ab234aa1e0797393f9e07b78124b5a24c4a9f8af0113d02df818e + md5: 9a5cb96e43f5c2296690186e15b3296f depends: - _openmp_mutex constrains: - - libgomp 15.2.0 15 - - libgcc-ng ==15.2.0=*_15 + - libgcc-ng ==15.2.0=*_18 + - libgomp 15.2.0 18 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 422960 - timestamp: 1764839601296 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_16.conda - sha256: 646c91dbc422fe92a5f8a3a5409c9aac66549f4ce8f8d1cab7c2aa5db789bb69 - md5: 8b216bac0de7a9d60f3ddeba2515545c + size: 423025 + timestamp: 1771378225170 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgcc-15.2.0-hcbb3090_18.conda + sha256: 1d9c4f35586adb71bcd23e31b68b7f3e4c4ab89914c26bed5f2859290be5560e + md5: 92df6107310b1fff92c4cc84f0de247b depends: - _openmp_mutex constrains: - - libgcc-ng ==15.2.0=*_16 - - libgomp 15.2.0 16 + - libgcc-ng ==15.2.0=*_18 + - libgomp 15.2.0 18 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 402197 - timestamp: 1765258985740 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.2.0-h8ee18e1_16.conda - sha256: 24984e1e768440ba73021f08a1da0c1ec957b30d7071b9a89b877a273d17cae8 - md5: 1edb8bd8e093ebd31558008e9cb23b47 + size: 401974 + timestamp: 1771378877463 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgcc-15.2.0-h8ee18e1_18.conda + sha256: da2c96563c76b8c601746f03e03ac75d2b4640fa2ee017cb23d6c9fc31f1b2c6 + md5: b085746891cca3bd2704a450a7b4b5ce depends: - _openmp_mutex >=4.5 - libwinpthread >=12.0.0.r4.gg4f2fc60ca constrains: - - libgomp 15.2.0 h8ee18e1_16 - - libgcc-ng ==15.2.0=*_16 + - libgcc-ng ==15.2.0=*_18 - msys2-conda-epoch <0.0a0 + - libgomp 15.2.0 h8ee18e1_18 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 819696 - timestamp: 1765260437409 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_16.conda - sha256: 5f07f9317f596a201cc6e095e5fc92621afca64829785e483738d935f8cab361 - md5: 5a68259fac2da8f2ee6f7bfe49c9eb8b + size: 820022 + timestamp: 1771382190160 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_18.conda + sha256: e318a711400f536c81123e753d4c797a821021fb38970cebfb3f454126016893 + md5: d5e96b1ed75ca01906b3d2469b4ce493 depends: - - libgcc 15.2.0 he0feb66_16 + - libgcc 15.2.0 he0feb66_18 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 27256 - timestamp: 1765256804124 + size: 27526 + timestamp: 1771378224552 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-h5fbf134_12.conda sha256: 245be793e831170504f36213134f4c24eedaf39e634679809fd5391ad214480b md5: 88c1c66987cd52a712eea89c27104be6 @@ -16962,7 +17725,30 @@ packages: license_family: BSD size: 156868 timestamp: 1737548290283 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h4974f7c_12.conda + sha256: 9ab562c718bd3fcef5f6189c8e2730c3d9321e05f13749a611630475d41207fc + md5: 3a5b40267fcd31f1ba3a24014fe92044 + depends: + - fontconfig >=2.15.0,<3.0a0 + - fonts-conda-ecosystem + - icu >=78.1,<79.0a0 + - libexpat >=2.7.3,<3.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libpng >=1.6.53,<1.7.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - xorg-libxpm >=3.5.17,<4.0a0 + license: GD + license_family: BSD + size: 166711 + timestamp: 1766331770351 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h7208af6_11.conda sha256: 485a30af9e710feeda8d5b537b2db1e32e41f29ef24683bbe7deb6f7fd915825 md5: 2070a706123b2d5e060b226a00e96488 depends: @@ -17024,9 +17810,9 @@ packages: license_family: MIT size: 11007446 timestamp: 1755813512112 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.1-hf05ffb4_0.conda - sha256: ccd1a4a1b8d15f71589bea49e68042fa34ee4fe4c11f053db1e06ea7b4ac1a8c - md5: 6ce4ad29c3ae0b74df813409433457ff +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-core-3.12.2-hc2c0581_1.conda + sha256: 8e3b5a88a114a0a23caf12cd049f21f1554b721438731721889d2404fd026cfd + md5: c8ca404aeab8e32c9d6d82a82aeb6511 depends: - __glibc >=2.17,<3.0.a0 - blosc >=1.21.6,<2.0a0 @@ -17034,19 +17820,19 @@ packages: - giflib >=5.2.2,<5.3.0a0 - json-c >=0.18,<0.19.0a0 - lerc >=4.0.0,<5.0a0 - - libarchive >=3.8.2,<3.9.0a0 - - libcurl >=8.17.0,<9.0a0 + - libarchive >=3.8.5,<3.9.0a0 + - libcurl >=8.18.0,<9.0a0 - libdeflate >=1.25,<1.26.0a0 - - libexpat >=2.7.3,<3.0a0 + - libexpat >=2.7.4,<3.0a0 - libgcc >=14 - libiconv >=1.18,<2.0a0 - libjpeg-turbo >=3.1.2,<4.0a0 - - libjxl >=0.11,<0.12.0a0 + - libjxl >=0.11,<1.0a0 - libkml >=1.3.0,<1.4.0a0 - - liblzma >=5.8.1,<6.0a0 - - libpng >=1.6.53,<1.7.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.55,<1.7.0a0 - libspatialite >=5.1.0,<5.2.0a0 - - libsqlite >=3.51.1,<4.0a0 + - libsqlite >=3.51.2,<4.0a0 - libstdcxx >=14 - libwebp-base >=1.6.0,<2.0a0 - libxml2 @@ -17054,17 +17840,16 @@ packages: - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - muparser >=2.3.5,<2.4.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - pcre2 >=10.47,<10.48.0a0 - proj >=9.7.1,<9.8.0a0 - xerces-c >=3.3.0,<3.4.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: - - libgdal 3.12.1.* + - libgdal 3.12.2.* license: MIT - license_family: MIT - size: 12923442 - timestamp: 1766092633429 + size: 12962357 + timestamp: 1771393493666 - conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-core-3.10.3-h55ca5b3_13.conda sha256: 2f97f2381214aaac551b5774a25c030c9f760adcfa28e2d36beb680903c12518 md5: 96495dc8bed9b6ca13ba4d5f5af422e8 @@ -17104,46 +17889,45 @@ packages: license_family: MIT size: 9213226 timestamp: 1755814469068 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-core-3.12.1-hc010f1d_0.conda - sha256: c290f76783e7fb7480bc43eb1c8b5c2388d3bb7b554ca2324e3514114f937591 - md5: 5fedeef42dca8c3bba696092097d3d73 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-core-3.12.2-hbf8631d_1.conda + sha256: bc0f5e1275da95d91f59e39539056b527292a1f126fe44a3c84ca465c330b06f + md5: c0f41c8a932df0fcdb8f2bfe0bb124db depends: - - __osx >=10.13 + - __osx >=11.0 - blosc >=1.21.6,<2.0a0 - geos >=3.14.1,<3.14.2.0a0 - giflib >=5.2.2,<5.3.0a0 - json-c >=0.18,<0.19.0a0 - lerc >=4.0.0,<5.0a0 - - libarchive >=3.8.2,<3.9.0a0 - - libcurl >=8.17.0,<9.0a0 + - libarchive >=3.8.5,<3.9.0a0 + - libcurl >=8.18.0,<9.0a0 - libcxx >=19 - libdeflate >=1.25,<1.26.0a0 - - libexpat >=2.7.3,<3.0a0 + - libexpat >=2.7.4,<3.0a0 - libiconv >=1.18,<2.0a0 - libjpeg-turbo >=3.1.2,<4.0a0 - - libjxl >=0.11,<0.12.0a0 + - libjxl >=0.11,<1.0a0 - libkml >=1.3.0,<1.4.0a0 - - liblzma >=5.8.1,<6.0a0 - - libpng >=1.6.53,<1.7.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.55,<1.7.0a0 - libspatialite >=5.1.0,<5.2.0a0 - - libsqlite >=3.51.1,<4.0a0 + - libsqlite >=3.51.2,<4.0a0 - libwebp-base >=1.6.0,<2.0a0 - libxml2 - libxml2-16 >=2.14.6 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - muparser >=2.3.5,<2.4.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - pcre2 >=10.47,<10.48.0a0 - - proj >=9.7.0,<9.8.0a0 + - proj >=9.7.1,<9.8.0a0 - xerces-c >=3.3.0,<3.4.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: - - libgdal 3.12.1.* + - libgdal 3.12.2.* license: MIT - license_family: MIT - size: 10730106 - timestamp: 1766093828044 + size: 10774393 + timestamp: 1771394024659 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-core-3.10.3-hef24e92_13.conda sha256: b225d1f7343693dae975ba18a77fa64f7a1a6906531aa98f8d101f98beb8db3c md5: 88b8ebd6c260daeaee3a7b0790186207 @@ -17183,9 +17967,9 @@ packages: license_family: MIT size: 8509314 timestamp: 1755814377889 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-core-3.12.1-ha937536_0.conda - sha256: 170b4c2f7a4f8f3775192d14eff9ca6ccbbd7363e43d27902c4830760e47a5da - md5: 46f2059e34c6a6142ecbe2c5e4c8cf5c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-core-3.12.2-h779b996_1.conda + sha256: ebec0f2466bc46f65d5738574a209aa5d75026f85f254a7b75a502606e4199c5 + md5: 7b1495aaf715847f1483b13712d2ca2b depends: - __osx >=11.0 - blosc >=1.21.6,<2.0a0 @@ -17193,36 +17977,35 @@ packages: - giflib >=5.2.2,<5.3.0a0 - json-c >=0.18,<0.19.0a0 - lerc >=4.0.0,<5.0a0 - - libarchive >=3.8.2,<3.9.0a0 - - libcurl >=8.17.0,<9.0a0 + - libarchive >=3.8.5,<3.9.0a0 + - libcurl >=8.18.0,<9.0a0 - libcxx >=19 - libdeflate >=1.25,<1.26.0a0 - - libexpat >=2.7.3,<3.0a0 + - libexpat >=2.7.4,<3.0a0 - libiconv >=1.18,<2.0a0 - libjpeg-turbo >=3.1.2,<4.0a0 - - libjxl >=0.11,<0.12.0a0 + - libjxl >=0.11,<1.0a0 - libkml >=1.3.0,<1.4.0a0 - - liblzma >=5.8.1,<6.0a0 - - libpng >=1.6.53,<1.7.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.55,<1.7.0a0 - libspatialite >=5.1.0,<5.2.0a0 - - libsqlite >=3.51.1,<4.0a0 + - libsqlite >=3.51.2,<4.0a0 - libwebp-base >=1.6.0,<2.0a0 - libxml2 - libxml2-16 >=2.14.6 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - muparser >=2.3.5,<2.4.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - pcre2 >=10.47,<10.48.0a0 - proj >=9.7.1,<9.8.0a0 - xerces-c >=3.3.0,<3.4.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: - - libgdal 3.12.1.* + - libgdal 3.12.2.* license: MIT - license_family: MIT - size: 9882361 - timestamp: 1766092928658 + size: 9876702 + timestamp: 1771394217278 - conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-core-3.10.3-h228a343_13.conda sha256: f37f125e192de1a2a08bf74efeec68194b7fcd18f6fe5a86000c46ea27ed0778 md5: 9da0330748ecb59ebb337952930a60af @@ -17261,291 +18044,271 @@ packages: license_family: MIT size: 8439600 timestamp: 1755815497434 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-core-3.11.5-h9732b15_0.conda - sha256: 881af24206091deacf3379f033b53916bfc6aafc8aa3ad5839cccf50b3386a62 - md5: be76c1e1814d584fab99d4828cd25da6 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-core-3.12.2-h9774fe2_1.conda + sha256: a84fe9c5c4ffe360bde5ede10d388570851ba6fcd4f84e99816a6c2f20e809cb + md5: 9f22154b122af399b220678d35edcc9d depends: - blosc >=1.21.6,<2.0a0 - geos >=3.14.1,<3.14.2.0a0 - lerc >=4.0.0,<5.0a0 - - libarchive >=3.8.2,<3.9.0a0 - - libcurl >=8.16.0,<9.0a0 + - libarchive >=3.8.5,<3.9.0a0 + - libcurl >=8.18.0,<9.0a0 - libdeflate >=1.25,<1.26.0a0 - - libexpat >=2.7.1,<3.0a0 + - libexpat >=2.7.4,<3.0a0 - libiconv >=1.18,<2.0a0 - libjpeg-turbo >=3.1.2,<4.0a0 - - libjxl >=0.11,<0.12.0a0 + - libjxl >=0.11,<1.0a0 - libkml >=1.3.0,<1.4.0a0 - - liblzma >=5.8.1,<6.0a0 - - libpng >=1.6.50,<1.7.0a0 + - liblzma >=5.8.2,<6.0a0 + - libpng >=1.6.55,<1.7.0a0 - libspatialite >=5.1.0,<5.2.0a0 - - libsqlite >=3.50.4,<4.0a0 + - libsqlite >=3.51.2,<4.0a0 - libwebp-base >=1.6.0,<2.0a0 - libxml2 - libxml2-16 >=2.14.6 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.10.0,<1.11.0a0 - muparser >=2.3.5,<2.4.0a0 - - openssl >=3.5.4,<4.0a0 - - pcre2 >=10.46,<10.47.0a0 - - proj >=9.7.0,<9.8.0a0 + - openssl >=3.5.5,<4.0a0 + - pcre2 >=10.47,<10.48.0a0 + - proj >=9.7.1,<9.8.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - xerces-c >=3.3.0,<3.4.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: - - libgdal 3.11.5.* + - libgdal 3.12.2.* license: MIT - license_family: MIT - size: 9261187 - timestamp: 1762278694916 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf4-3.12.1-ha810028_0.conda - sha256: d04ac3994a0fb3bcb91ab6c9eb96ead861e6825e46ee45393a5c28c6c6766a48 - md5: 3e8adce1a37012c233a68789594e29cf + size: 9816282 + timestamp: 1771395249315 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf4-3.12.2-hf70aa56_1.conda + sha256: 062b2d4c436b5b5e2b1b956b208dc053c7da480b36a909d6ef79017daed4650c + md5: ecf7b755370673d8d116ce45f7c8bbaa depends: - __glibc >=2.17,<3.0.a0 - hdf4 >=4.2.15,<4.2.16.0a0 - - libaec >=1.1.4,<2.0a0 + - libaec >=1.1.5,<2.0a0 - libgcc >=14 - - libgdal-core 3.12.1 hf05ffb4_0 + - libgdal-core 3.12.2 hc2c0581_1 - libstdcxx >=14 license: MIT - license_family: MIT - size: 562215 - timestamp: 1766093880116 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf4-3.12.1-h303b8bb_0.conda - sha256: 95e31985ea209ccee0b2eb8eda8ea18050a8910fb9153b9347e287f55ba33ecc - md5: 4ad7576c163cafe85f1444c7f42668de + size: 562852 + timestamp: 1771394821155 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf4-3.12.2-h2f08c0b_1.conda + sha256: d4ea393ba74f89ef295b9248388d2dd1a31096143139241219017d8a31b4e54b + md5: 2f3c40860f85bf02205e5b782b5be0bd depends: - - __osx >=10.13 + - __osx >=11.0 - hdf4 >=4.2.15,<4.2.16.0a0 - - libaec >=1.1.4,<2.0a0 + - libaec >=1.1.5,<2.0a0 - libcxx >=19 - - libgdal-core 3.12.1 hc010f1d_0 + - libgdal-core 3.12.2 hbf8631d_1 license: MIT - license_family: MIT - size: 551370 - timestamp: 1766096817427 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf4-3.12.1-hc515886_0.conda - sha256: a16ee9582f733a0624021c0dcda08e6695160b1c156da8aece980cbb38bb509b - md5: ae3152198164cce944fb4f4698c9d633 + size: 551459 + timestamp: 1771397020089 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf4-3.12.2-h44e20f9_1.conda + sha256: 6a65a02026713f03e371f50b0092b6379dfe7bfbddd7fe74b427f32382b59725 + md5: 47e896a67e8246c6ef98f9dc13181ef1 depends: - __osx >=11.0 - hdf4 >=4.2.15,<4.2.16.0a0 - - libaec >=1.1.4,<2.0a0 + - libaec >=1.1.5,<2.0a0 - libcxx >=19 - - libgdal-core 3.12.1 ha937536_0 + - libgdal-core 3.12.2 h779b996_1 license: MIT - license_family: MIT - size: 543971 - timestamp: 1766095097044 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf4-3.11.5-ha47b6c4_0.conda - sha256: 5282694341cedf88642f57fdecf372ec98edfbde9af0b26e3bc1696197252f48 - md5: ce8be6b16668ec653b5564c0dcd1a0aa + size: 544595 + timestamp: 1771397140733 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf4-3.12.2-h5bd48a5_1.conda + sha256: 2dc401a74cbda6432633ab3cd86e9bdbf30dc834b90534475f75921afae9895a + md5: 861e471b9d7df1eed52ea9a25f227951 depends: - hdf4 >=4.2.15,<4.2.16.0a0 - - libaec >=1.1.4,<2.0a0 - - libgdal-core 3.11.5 h9732b15_0 + - libaec >=1.1.5,<2.0a0 + - libgdal-core 3.12.2 h9774fe2_1 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: MIT - license_family: MIT - size: 565264 - timestamp: 1762282878339 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf5-3.12.1-h966a9c2_0.conda - sha256: 051bc7c3eea0cbb0a3487db9673345cd9e4f17307768d6cd19345008a2a1a5ca - md5: c7b8e4edbc3674c4b54c9daee0a8345b + size: 566768 + timestamp: 1771398131827 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-hdf5-3.12.2-hcaab353_1.conda + sha256: f5aa2ef73644ec614ff46ae4c8402d73f00f1d4a3e571e247635a0a14ebb448e + md5: ebc9b2164b2e599d5375361e230a1540 depends: - __glibc >=2.17,<3.0.a0 - hdf5 >=1.14.6,<1.14.7.0a0 - libgcc >=14 - - libgdal-core 3.12.1 hf05ffb4_0 + - libgdal-core 3.12.2 hc2c0581_1 - libstdcxx >=14 license: MIT - license_family: MIT - size: 672758 - timestamp: 1766093946498 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf5-3.12.1-ha756dc0_0.conda - sha256: 98c2080254a448c172423728b3c3031eefbb37b7dc58117581ec29bec5901f21 - md5: e9dcff4b3ae49b64325fcadd39d0d9fb + size: 673369 + timestamp: 1771394889641 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-hdf5-3.12.2-hd721b9a_1.conda + sha256: 6eac5630269c86f3f08f1417bd066385e50595bf9ea1b62c5d490685436b4300 + md5: 157c42a38b3a6c6cd8816babe2376c09 depends: - - __osx >=10.13 + - __osx >=11.0 - hdf5 >=1.14.6,<1.14.7.0a0 - libcxx >=19 - - libgdal-core 3.12.1 hc010f1d_0 + - libgdal-core 3.12.2 hbf8631d_1 license: MIT - license_family: MIT - size: 623998 - timestamp: 1766097048951 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf5-3.12.1-h2d8dc51_0.conda - sha256: 8370e8ea0dc23a974805e5fae8f884d1f7499f7834564e5e7b4561bacadab529 - md5: b356e3d1c3ef181ae558c9615114113c + size: 624061 + timestamp: 1771397252507 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-hdf5-3.12.2-h48d8a21_1.conda + sha256: 86d4deca8bd72c5d402c0a89905952f6fa51246f718d05fced80efb5dc4c864c + md5: 54fc1bd391970992305aa62e753992f5 depends: - __osx >=11.0 - hdf5 >=1.14.6,<1.14.7.0a0 - libcxx >=19 - - libgdal-core 3.12.1 ha937536_0 + - libgdal-core 3.12.2 h779b996_1 license: MIT - license_family: MIT - size: 611708 - timestamp: 1766095246456 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf5-3.11.5-h0f01001_0.conda - sha256: 6106b944979bf3545270429d962f0320444950ac2b42b5042fd8c36126e6a4d5 - md5: 9991f3ace1325cb675bc6acd36734bc6 + size: 612371 + timestamp: 1771397379542 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-hdf5-3.12.2-h5260803_1.conda + sha256: c9211ed92d9862fc6e2ffc9a8db86ef18aaa759ca9a1ec250eb11d97f3ecfb18 + md5: 150230ce593ad139e1ab1437954b81e2 depends: - hdf5 >=1.14.6,<1.14.7.0a0 - - libgdal-core 3.11.5 h9732b15_0 + - libgdal-core 3.12.2 h9774fe2_1 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: MIT - license_family: MIT - size: 628800 - timestamp: 1762283131267 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-netcdf-3.12.1-ha526aae_0.conda - sha256: 95e8d39bd98c51a34a80c4ab36b4ee9dd241f2cd6212abab565e9c8c2e195bb7 - md5: 7985a2b9b8434e9a20f2edecc326bb1a + size: 643803 + timestamp: 1771398296860 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgdal-netcdf-3.12.2-h03ef1cf_1.conda + sha256: 8738ba6b64077ba579786c8b902262394b778d1d2cf11e3baf75e3b97a7dc47e + md5: ed2754a12c4fcc929bb39d6b6cc8729c depends: - __glibc >=2.17,<3.0.a0 - hdf4 >=4.2.15,<4.2.16.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - libgcc >=14 - - libgdal-core 3.12.1 hf05ffb4_0 - - libgdal-hdf4 3.12.1.* - - libgdal-hdf5 3.12.1.* + - libgdal-core 3.12.2 hc2c0581_1 + - libgdal-hdf4 3.12.2.* + - libgdal-hdf5 3.12.2.* - libnetcdf >=4.9.3,<4.9.4.0a0 - libstdcxx >=14 license: MIT - license_family: MIT - size: 745304 - timestamp: 1766094483467 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-netcdf-3.12.1-h73de3a7_0.conda - sha256: 72c828da1040f071de45ab33fe7baeddf2ffe8698697a0b61bf92d36bbe072d8 - md5: d65b4b768eb89c3d5f97027a8723f237 + size: 745903 + timestamp: 1771395436997 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgdal-netcdf-3.12.2-ha19e286_1.conda + sha256: 392b20756d3c284212d32d623e483ec93f061f5d9fec08b3d5f0ac3d7e308913 + md5: 17ed908c9fe48af590929b9959adfd75 depends: - - __osx >=10.13 + - __osx >=11.0 - hdf4 >=4.2.15,<4.2.16.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - libcxx >=19 - - libgdal-core 3.12.1 hc010f1d_0 - - libgdal-hdf4 3.12.1.* - - libgdal-hdf5 3.12.1.* + - libgdal-core 3.12.2 hbf8631d_1 + - libgdal-hdf4 3.12.2.* + - libgdal-hdf5 3.12.2.* - libnetcdf >=4.9.3,<4.9.4.0a0 license: MIT - license_family: MIT - size: 695176 - timestamp: 1766098593156 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-netcdf-3.12.1-hd244936_0.conda - sha256: cee8eccfbd87523efb7cf9d16a8525cee27e74a3fc70cad4ae012a8c5d5f2e0c - md5: 3285d660e4bbb867ea8083566c3ce080 + size: 695157 + timestamp: 1771399111486 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgdal-netcdf-3.12.2-h4eb6350_1.conda + sha256: 16312eb415f4ac623edc367a3e313dc4bb6ff8cf7bda0bda6177105838b70d5d + md5: 655acd448c73740abdb3716407a3a650 depends: - __osx >=11.0 - hdf4 >=4.2.15,<4.2.16.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - libcxx >=19 - - libgdal-core 3.12.1 ha937536_0 - - libgdal-hdf4 3.12.1.* - - libgdal-hdf5 3.12.1.* + - libgdal-core 3.12.2 h779b996_1 + - libgdal-hdf4 3.12.2.* + - libgdal-hdf5 3.12.2.* - libnetcdf >=4.9.3,<4.9.4.0a0 license: MIT - license_family: MIT - size: 672926 - timestamp: 1766096525240 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-netcdf-3.11.5-hbb26ad1_0.conda - sha256: a25781dab25b1f44f9e2cd924cdbec4eb62804ee397b944598fd4fcdc1317e94 - md5: 3103aa7b336025b8d7765543c0b7a0c5 + size: 673336 + timestamp: 1771399384417 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgdal-netcdf-3.12.2-h1c765f5_1.conda + sha256: 080eb227d80120b4c93d71efc881bfdbd11bed90c3707cb536893ba15fa52c01 + md5: 300ec561b23a4018262b90995350061a depends: - hdf4 >=4.2.15,<4.2.16.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - - libgdal-core 3.11.5 h9732b15_0 - - libgdal-hdf4 3.11.5.* - - libgdal-hdf5 3.11.5.* + - libgdal-core 3.12.2 h9774fe2_1 + - libgdal-hdf4 3.12.2.* + - libgdal-hdf5 3.12.2.* - libnetcdf >=4.9.3,<4.9.4.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: MIT - license_family: MIT - size: 682322 - timestamp: 1762285421263 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_16.conda - sha256: 8a7b01e1ee1c462ad243524d76099e7174ebdd94ff045fe3e9b1e58db196463b - md5: 40d9b534410403c821ff64f00d0adc22 + size: 690068 + timestamp: 1771399686055 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-15.2.0-h69a702a_18.conda + sha256: d2c9fad338fd85e4487424865da8e74006ab2e2475bd788f624d7a39b2a72aee + md5: 9063115da5bc35fdc3e1002e69b9ef6e depends: - - libgfortran5 15.2.0 h68bc16d_16 + - libgfortran5 15.2.0 h68bc16d_18 constrains: - - libgfortran-ng ==15.2.0=*_16 + - libgfortran-ng ==15.2.0=*_18 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 27215 - timestamp: 1765256845586 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_15.conda - sha256: 7bb4d51348e8f7c1a565df95f4fc2a2021229d42300aab8366eda0ea1af90587 - md5: a089323fefeeaba2ae60e1ccebf86ddc + size: 27523 + timestamp: 1771378269450 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-15.2.0-h7e5c614_18.conda + sha256: fb06c2a2ef06716a0f2a6550f5d13cdd1d89365993068512b7ae3c34e6e665d9 + md5: 34a9f67498721abcfef00178bcf4b190 depends: - - libgfortran5 15.2.0 hd16e46c_15 + - libgfortran5 15.2.0 hd16e46c_18 constrains: - - libgfortran-ng ==15.2.0=*_15 + - libgfortran-ng ==15.2.0=*_18 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 139002 - timestamp: 1764839892631 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_16.conda - sha256: 68a6c1384d209f8654112c4c57c68c540540dd8e09e17dd1facf6cf3467798b5 - md5: 11e09edf0dde4c288508501fe621bab4 + size: 139761 + timestamp: 1771378423828 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-15.2.0-h07b0088_18.conda + sha256: 63f89087c3f0c8621c5c89ecceec1e56e5e1c84f65fc9c5feca33a07c570a836 + md5: 26981599908ed2205366e8fc91b37fc6 depends: - - libgfortran5 15.2.0 hdae7583_16 + - libgfortran5 15.2.0 hdae7583_18 constrains: - - libgfortran-ng ==15.2.0=*_16 + - libgfortran-ng ==15.2.0=*_18 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 138630 - timestamp: 1765259217400 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_16.conda - sha256: dc13ce4ceecb5b3aaca4133731e459d1111961288a1e071cc18bd71d5a47e976 - md5: e5eb2ddedabd0063e442f230755d2062 + size: 138973 + timestamp: 1771379054939 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-15.2.0-h69a702a_18.conda + sha256: cdc147bb0966be39b697b28d40b1ab5a2cd57fb29aff0fb0406598d419bddd70 + md5: 26d7b228de99d6fb032ba4d5c1679040 depends: - - libgfortran 15.2.0 h69a702a_16 + - libgfortran 15.2.0 h69a702a_18 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 27300 - timestamp: 1765257039455 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_16.conda - sha256: d0e974ebc937c67ae37f07a28edace978e01dc0f44ee02f29ab8a16004b8148b - md5: 39183d4e0c05609fd65f130633194e37 + size: 27532 + timestamp: 1771378479717 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-15.2.0-h68bc16d_18.conda + sha256: 539b57cf50ec85509a94ba9949b7e30717839e4d694bc94f30d41c9d34de2d12 + md5: 646855f357199a12f02a87382d429b75 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=15.2.0 constrains: - libgfortran 15.2.0 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 2480559 - timestamp: 1765256819588 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_15.conda - sha256: 456385a7d3357d5fdfc8e11bf18dcdf71753c4016c440f92a2486057524dd59a - md5: c2a6149bf7f82774a0118b9efef966dd + size: 2482475 + timestamp: 1771378241063 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-15.2.0-hd16e46c_18.conda + sha256: ddaf9dcf008c031b10987991aa78643e03c24a534ad420925cbd5851b31faa11 + md5: ca52daf58cea766656266c8771d8be81 depends: - libgcc >=15.2.0 constrains: - libgfortran 15.2.0 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1061950 - timestamp: 1764839609607 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_16.conda - sha256: 9fb7f4ff219e3fb5decbd0ee90a950f4078c90a86f5d8d61ca608c913062f9b0 - md5: 265a9d03461da24884ecc8eb58396d57 + size: 1062274 + timestamp: 1771378232014 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-15.2.0-hdae7583_18.conda + sha256: 91033978ba25e6a60fb86843cf7e1f7dc8ad513f9689f991c9ddabfaf0361e7e + md5: c4a6f7989cffb0544bfd9207b6789971 depends: - libgcc >=15.2.0 constrains: - libgfortran 15.2.0 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 598291 - timestamp: 1765258993165 + size: 598634 + timestamp: 1771378886363 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda sha256: dc2752241fa3d9e40ce552c1942d0a4b5eeb93740c9723873f6fcf8d39ef8d2d md5: 928b8be80851f5d8ffb016f9c81dae7a @@ -17581,9 +18344,9 @@ packages: license: LGPL-2.1-or-later size: 3961899 timestamp: 1754315006443 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.3-h6548e54_0.conda - sha256: 82d6c2ee9f548c84220fb30fb1b231c64a53561d6e485447394f0a0eeeffe0e6 - md5: 034bea55a4feef51c98e8449938e9cee +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.86.4-h6548e54_0.conda + sha256: 0d8cf491cb00aeb35fcfb68dfcb5b0ad188a98fb35c21c2421d2b2acc128cbf5 + md5: b7113551db5a3e2403cdd052c66e9999 depends: - __glibc >=2.17,<3.0.a0 - libffi >=3.5.2,<3.6.0a0 @@ -17592,10 +18355,10 @@ packages: - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.47,<10.48.0a0 constrains: - - glib 2.86.3 *_0 + - glib 2.86.4 *_0 license: LGPL-2.1-or-later - size: 3946542 - timestamp: 1765221858705 + size: 4432190 + timestamp: 1771291719860 - conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.84.3-h5fed8df_0.conda sha256: 28d60cfaa74dd5427b35941ea28069bfd87d4dfdaaae79b13e569b4b4c21098d md5: 2bb92de7159f9c47a4455eb3c08484d8 @@ -17611,21 +18374,21 @@ packages: license: LGPL-2.1-or-later size: 3735183 timestamp: 1754315274931 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.86.3-hf241ffe_0.conda - sha256: d205ecdd0873dd92f7b55ac9b266b2eb09236ff5f3b26751579e435bbaed499c - md5: 584ce14b08050d3f1a25ab429b9360bc +- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.86.4-hec30fc1_0.conda + sha256: 4158f8e4473be55730a2c6612c871a3f8fd343ddc3512a2c8386714794f4ffb2 + md5: 138aefa25f4d5efec2ac224745ee82f6 depends: - - __osx >=10.13 + - __osx >=11.0 - libffi >=3.5.2,<3.6.0a0 - libiconv >=1.18,<2.0a0 - libintl >=0.25.1,<1.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.47,<10.48.0a0 constrains: - - glib 2.86.3 *_0 + - glib 2.86.4 *_0 license: LGPL-2.1-or-later - size: 3708599 - timestamp: 1765222438844 + size: 4164823 + timestamp: 1771292404681 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.84.3-h587fa63_0.conda sha256: a30510a18f0b85a036f99c744750611b5f26b972cfa70cc9f130b9f42e5bbc18 md5: bb98995c244b6038892fd59a694a93ed @@ -17641,9 +18404,9 @@ packages: license: LGPL-2.1-or-later size: 3661135 timestamp: 1754315631978 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.86.3-hfe11c1f_0.conda - sha256: 801c1835aa35a4f6e45e2192ad668bd7238d95c90ef8f02c52ce859c20117285 - md5: 057c7247514048ebdaf89373b263ebee +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.86.4-he378b5c_0.conda + sha256: e305f7b1f2202d4efcdb8856abb28d79dc012d85a2155fbfbfee96069e017073 + md5: 2d02b60ec23066e45c578c1524e9ca12 depends: - __osx >=11.0 - libffi >=3.5.2,<3.6.0a0 @@ -17652,10 +18415,10 @@ packages: - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.47,<10.48.0a0 constrains: - - glib 2.86.3 *_0 + - glib 2.86.4 *_0 license: LGPL-2.1-or-later - size: 3670602 - timestamp: 1765223125237 + size: 4124444 + timestamp: 1771293559119 - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.84.3-h1c1036b_0.conda sha256: bd322efaebc369e188a1dd93030325a40753a4c009e92c1f82ec481a20f0d232 md5: 2bcc00752c158d4a70e1eaccbf6fe8ae @@ -17673,23 +18436,23 @@ packages: license: LGPL-2.1-or-later size: 3826069 timestamp: 1754315362939 -- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.86.2-hd9c3897_0.conda - sha256: 60fa317d11a6f5d4bc76be5ff89b9ac608171a00b206c688e3cc4f65c73b1bc4 - md5: fbd144e60009d93f129f0014a76512d3 +- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.86.4-h0c9aed9_0.conda + sha256: 8ac945b308908e1eae9dcfeacba7f7a4163a9ae823c29dcf2335ec100e5aebee + md5: 275eb125dd1490f287e85ffd544b6403 depends: - libffi >=3.5.2,<3.6.0a0 - libiconv >=1.18,<2.0a0 - libintl >=0.22.5,<1.0a0 - libzlib >=1.3.1,<2.0a0 - - pcre2 >=10.46,<10.47.0a0 + - pcre2 >=10.47,<10.48.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 constrains: - - glib 2.86.2 *_0 + - glib 2.86.4 *_0 license: LGPL-2.1-or-later - size: 3793396 - timestamp: 1763672587079 + size: 4080064 + timestamp: 1771291641559 - conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h5888daf_1.conda sha256: a0105eb88f76073bbb30169312e797ed5449ebb4e964a756104d6e54633d17ef md5: 8422fcc9e5e172c91e99aef703b3ce65 @@ -17730,26 +18493,24 @@ packages: license: LicenseRef-libglvnd size: 26388 timestamp: 1731331003255 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_16.conda - sha256: 5b3e5e4e9270ecfcd48f47e3a68f037f5ab0f529ccb223e8e5d5ac75a58fc687 - md5: 26c46f90d0e727e95c6c9498a33a09f3 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_18.conda + sha256: 21337ab58e5e0649d869ab168d4e609b033509de22521de1bfed0c031bfc5110 + md5: 239c5e9546c38a1e884d69effcf4c882 depends: - __glibc >=2.17,<3.0.a0 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 603284 - timestamp: 1765256703881 -- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.2.0-h8ee18e1_16.conda - sha256: 9c86aadc1bd9740f2aca291da8052152c32dd1c617d5d4fd0f334214960649bb - md5: ab8189163748f95d4cb18ea1952943c3 + size: 603262 + timestamp: 1771378117851 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgomp-15.2.0-h8ee18e1_18.conda + sha256: 94981bc2e42374c737750895c6fdcfc43b7126c4fc788cad0ecc7281745931da + md5: 939fb173e2a4d4e980ef689e99b35223 depends: - libwinpthread >=12.0.0.r4.gg4f2fc60ca constrains: - msys2-conda-epoch <0.0a0 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 663567 - timestamp: 1765260367147 + size: 663864 + timestamp: 1771382118742 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.39.0-hdb79228_0.conda sha256: d3341cf69cb02c07bbd1837968f993da01b7bd467e816b1559a3ca26c1ff14c5 md5: a2e30ccd49f753fd30de0d30b1569789 @@ -17805,6 +18566,24 @@ packages: license_family: Apache size: 876283 timestamp: 1752047598741 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-2.39.0-h01c467a_1.conda + sha256: 098ac4abc51752a1c56c1c05ed4220e88daa7d0e18922b0d355056d5b305f167 + md5: 453d3a0347fe049b922a2a851c1c0110 + depends: + - libabseil * cxx17* + - libabseil >=20260107.0,<20260108.0a0 + - libcurl >=8.18.0,<9.0a0 + - libgrpc >=1.78.0,<1.79.0a0 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - libgoogle-cloud 2.39.0 *_1 + license: Apache-2.0 + license_family: Apache + size: 15218 + timestamp: 1770462467767 - conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-2.39.0-h19ee442_0.conda sha256: 8f5b26e9ea985c819a67e41664da82219534f9b9c8ba190f7d3c440361e5accb md5: c2c512f98c5c666782779439356a1713 @@ -17888,6 +18667,22 @@ packages: license_family: Apache size: 14904 timestamp: 1752049852815 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgoogle-cloud-storage-2.39.0-he04ea4c_1.conda + sha256: 127bd4becdd1abace1f99520b53440450ff3974468c90afa5aad68c25e7707b0 + md5: 88ebaa9b98c04cd5ad7b042b7e4f49c9 + depends: + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgoogle-cloud 2.39.0 h01c467a_1 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: Apache + size: 15235 + timestamp: 1770462799291 - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.73.1-h3288cfb_1.conda sha256: bc9d32af6167b1f5bcda216dc44eddcb27f3492440571ab12f6e577472a05e34 md5: ff63bb12ac31c176ff257e3289f20770 @@ -17970,6 +18765,27 @@ packages: license_family: APACHE size: 14433486 timestamp: 1761053760632 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgrpc-1.78.0-h9ff2b3e_1.conda + sha256: 329c6f44cbc4963eddcef81ba18b9f1885055ff66fd320da9d0e69c8a923fb85 + md5: c60e3003fb813f8f5bd0593e47721541 + depends: + - c-ares >=1.34.6,<2.0a0 + - libabseil * cxx17* + - libabseil >=20260107.0,<20260108.0a0 + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libre2-11 >=2025.11.5 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + - re2 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - grpc-cpp =1.78.0 + license: Apache-2.0 + license_family: APACHE + size: 11509765 + timestamp: 1770253565257 - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.12.1-default_hafda6a7_1003.conda sha256: b9e6340da35245d5f3b7b044b4070b4980809d340bddf16c942a97a83f146aa4 md5: 4fe840c6d6b3719b4231ed89d389bb17 @@ -18163,60 +18979,60 @@ packages: license: IJG AND BSD-3-Clause AND Zlib size: 841783 timestamp: 1762094814336 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.1-ha09017c_8.conda - sha256: 1b9eda9cf595313cf093d40dfbe5aa1ff55c97a04cc024cf80a35dad527f7a54 - md5: 6e9bf4ce797d0216bd2a58298b6290b5 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjxl-0.11.2-ha09017c_0.conda + sha256: 0c2399cef02953b719afe6591223fb11d287d5a108ef8bb9a02dd509a0f738d7 + md5: 1df8c1b1d6665642107883685db6cf37 depends: - - libstdcxx >=14 - - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libstdcxx >=14 + - libhwy >=1.3.0,<1.4.0a0 - libbrotlienc >=1.2.0,<1.3.0a0 - libbrotlidec >=1.2.0,<1.3.0a0 - - libhwy >=1.3.0,<1.4.0a0 license: BSD-3-Clause license_family: BSD - size: 1912600 - timestamp: 1768821967254 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libjxl-0.11.1-hde0fb83_8.conda - sha256: fa5ee8b83d7d87e7bd3bfd4623c5e50a7135ccbcbbebf247b992df284c85d679 - md5: 5e478d37b1027d73872f7c8d579dc314 + size: 1883476 + timestamp: 1770801977654 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libjxl-0.11.2-hde0fb83_0.conda + sha256: 4c7fd37ccdb49bfc947307367693701b040e78333896e0db3effd90dee64549b + md5: fb86ff643e4f58119644c0c8d0b1d785 depends: - - __osx >=10.13 - libcxx >=19 + - __osx >=10.13 + - libhwy >=1.3.0,<1.4.0a0 - libbrotlienc >=1.2.0,<1.3.0a0 - libbrotlidec >=1.2.0,<1.3.0a0 - - libhwy >=1.3.0,<1.4.0a0 license: BSD-3-Clause license_family: BSD - size: 1761909 - timestamp: 1768822114809 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.1-h913acd8_8.conda - sha256: cb3713aa91c9271e1992d2a7234447f6da84ec0d59a5cf2f92ba850f808becb9 - md5: c41ad4bd5cb936fd7662426753ff1784 + size: 1740498 + timestamp: 1770802213315 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjxl-0.11.2-h913acd8_0.conda + sha256: 44fdcae8ab3958f371565198f82d0748714dccc8a897ca202e54e18bde096f0d + md5: bec365333f77af833f8e46f6de96e2a2 depends: - libcxx >=19 - __osx >=11.0 - - libhwy >=1.3.0,<1.4.0a0 - libbrotlienc >=1.2.0,<1.3.0a0 - libbrotlidec >=1.2.0,<1.3.0a0 + - libhwy >=1.3.0,<1.4.0a0 license: BSD-3-Clause license_family: BSD - size: 1030574 - timestamp: 1768822131848 -- conda: https://conda.anaconda.org/conda-forge/win-64/libjxl-0.11.1-hf3f85d1_8.conda - sha256: 53cdc0e894cf1f622fcd08a447da473cfe7f9edeffa0882b41eadb3b0a67b1d3 - md5: 60ca4943052b9634a92d841e1860b8d6 + size: 1032335 + timestamp: 1770802059749 +- conda: https://conda.anaconda.org/conda-forge/win-64/libjxl-0.11.2-hf3f85d1_0.conda + sha256: 525c5382eb32a43e7baf45b452079bf23daf8f8bf19fee7c8dafa8c731ada8bd + md5: 869e71fcf2135212c51a96f7f7dbd00d depends: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - libhwy >=1.3.0,<1.4.0a0 - libbrotlienc >=1.2.0,<1.3.0a0 - libbrotlidec >=1.2.0,<1.3.0a0 + - libhwy >=1.3.0,<1.4.0a0 license: BSD-3-Clause license_family: BSD - size: 1317273 - timestamp: 1768821992120 + size: 1317916 + timestamp: 1770801992810 - conda: https://conda.anaconda.org/conda-forge/linux-64/libkml-1.3.0-haa4a5bd_1022.conda sha256: aa55f5779d6bc7bf24dc8257f053d5a0708b5910b6bc6ea1396f15febf812c98 md5: 00f0f4a9d2eb174015931b1a234d61ca @@ -18467,77 +19283,48 @@ packages: license: 0BSD size: 465085 timestamp: 1768752643506 -- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.2-h11316ed_0.conda - sha256: 2835fa6890acb70fd83f2365123f8bc19fb6843e7f70f671bb7f6cc94f2a211d - md5: 21ec03957f30412305e639a93b343915 - depends: - - __osx >=10.13 - - liblzma 5.8.2 h11316ed_0 - license: 0BSD - size: 117482 - timestamp: 1768753441559 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.8.2-h8088a28_0.conda - sha256: 755db226a10a0b7776d4019f76c7dfe1eb6b495bc6791a143d2db88dec32ea52 - md5: ffd253880bfba4a94d048661d57e4f79 - depends: - - __osx >=11.0 - - liblzma 5.8.2 h8088a28_0 - license: 0BSD - size: 117463 - timestamp: 1768753005332 -- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.8.2-hfd05255_0.conda - sha256: d4cfee861c08a67af3b9a686a129d4ac710df6c89773d492ad5922d039c07d2f - md5: 8ff636be3b5f0e935649803a2d6eeeff - depends: - - liblzma 5.8.2 hfd05255_0 - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - license: 0BSD - size: 130280 - timestamp: 1768752786768 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb9d3cd8_0.conda - sha256: 3aa92d4074d4063f2a162cd8ecb45dccac93e543e565c01a787e16a43501f7ee - md5: c7e925f37e3b40d893459e625f6a53f1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-hb03c661_1.conda + sha256: fe171ed5cf5959993d43ff72de7596e8ac2853e9021dec0344e583734f1e0843 + md5: 2c21e66f50753a083cbe6b80f38268fa depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 license: BSD-2-Clause license_family: BSD - size: 91183 - timestamp: 1748393666725 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-h6e16a3a_0.conda - sha256: 98299c73c7a93cd4f5ff8bb7f43cd80389f08b5a27a296d806bdef7841cc9b9e - md5: 18b81186a6adb43f000ad19ed7b70381 + size: 92400 + timestamp: 1769482286018 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hf3981d6_1.conda + sha256: 1096c740109386607938ab9f09a7e9bca06d86770a284777586d6c378b8fb3fd + md5: ec88ba8a245855935b871a7324373105 depends: - __osx >=10.13 license: BSD-2-Clause license_family: BSD - size: 77667 - timestamp: 1748393757154 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h5505292_0.conda - sha256: 0a1875fc1642324ebd6c4ac864604f3f18f57fbcf558a8264f6ced028a3c75b2 - md5: 85ccccb47823dd9f7a99d2c7f530342f + size: 79899 + timestamp: 1769482558610 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_1.conda + sha256: 1089c7f15d5b62c622625ec6700732ece83be8b705da8c6607f4dabb0c4bd6d2 + md5: 57c4be259f5e0b99a5983799a228ae55 depends: - __osx >=11.0 license: BSD-2-Clause license_family: BSD - size: 71829 - timestamp: 1748393749336 -- conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda - sha256: fc529fc82c7caf51202cc5cec5bb1c2e8d90edbac6d0a4602c966366efe3c7bf - md5: 74860100b2029e2523cf480804c76b9b + size: 73690 + timestamp: 1769482560514 +- conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-hfd05255_1.conda + sha256: 40dcd0b9522a6e0af72a9db0ced619176e7cfdb114855c7a64f278e73f8a7514 + md5: e4a9fc2bba3b022dad998c78856afe47 depends: - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: BSD-2-Clause license_family: BSD - size: 88657 - timestamp: 1723861474602 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_h11f7409_103.conda - sha256: e9a8668212719a91a6b0348db05188dfc59de5a21888db13ff8510918a67b258 - md5: 3ccff1066c05a1e6c221356eecc40581 + size: 89411 + timestamp: 1769482314283 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_h81b047f_102.conda + sha256: fe32865925d3d193ad894fc8bccb1badc745796487a0bf55a85591661e8eafe2 + md5: b2431965f6c2a49384e6d3b36bb44e45 depends: - __glibc >=2.17,<3.0.a0 - attr >=2.5.2,<2.6.0a0 @@ -18549,8 +19336,7 @@ packages: - libcurl >=8.14.1,<9.0a0 - libgcc >=14 - libstdcxx >=14 - - libxml2 - - libxml2-16 >=2.14.6 + - libxml2 >=2.13.8,<2.14.0a0 - libzip >=1.11.2,<2.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.5.2,<4.0a0 @@ -18558,11 +19344,11 @@ packages: - zstd >=1.5.7,<1.6.0a0 license: MIT license_family: MIT - size: 871447 - timestamp: 1757977084313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_h81b047f_102.conda - sha256: fe32865925d3d193ad894fc8bccb1badc745796487a0bf55a85591661e8eafe2 - md5: b2431965f6c2a49384e6d3b36bb44e45 + size: 872799 + timestamp: 1757401949915 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.3-nompi_hbf2fc22_104.conda + sha256: cae2f8fe5258fc1a1d2b61cbc9190ed2c0a1b7cdf5d4aac98da071ade6dac152 + md5: a2956b63b1851e9d5eb9f882d02fa3a9 depends: - __glibc >=2.17,<3.0.a0 - attr >=2.5.2,<2.6.0a0 @@ -18570,43 +19356,42 @@ packages: - bzip2 >=1.0.8,<2.0a0 - hdf4 >=4.2.15,<4.2.16.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - - libaec >=1.1.4,<2.0a0 - - libcurl >=8.14.1,<9.0a0 + - libaec >=1.1.5,<2.0a0 + - libcurl >=8.18.0,<9.0a0 - libgcc >=14 - libstdcxx >=14 - - libxml2 >=2.13.8,<2.14.0a0 + - libxml2 + - libxml2-16 >=2.14.6 - libzip >=1.11.2,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.2,<4.0a0 - - zlib + - openssl >=3.5.5,<4.0a0 - zstd >=1.5.7,<1.6.0a0 license: MIT license_family: MIT - size: 872799 - timestamp: 1757401949915 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.3-nompi_habf9e57_103.conda - sha256: 6e8bd953ce27e10d0c029badbe3a60510f6724b59ed63d79dd8fdd1a795719ea - md5: 0c48ab0a8d7c3af9f592d33c3d99f7d6 + size: 870788 + timestamp: 1770718321021 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.3-nompi_h29b767a_104.conda + sha256: 5f6a88ed35bfa7e67f30ff4bc96f49a31fc46b2cc28518ad2898a853584e5bc2 + md5: 6515420f8cc50150e846b779ad1b3f8b depends: - __osx >=10.13 - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - hdf4 >=4.2.15,<4.2.16.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - - libaec >=1.1.4,<2.0a0 - - libcurl >=8.14.1,<9.0a0 + - libaec >=1.1.5,<2.0a0 + - libcurl >=8.18.0,<9.0a0 - libcxx >=19 - libxml2 - libxml2-16 >=2.14.6 - libzip >=1.11.2,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.2,<4.0a0 - - zlib + - openssl >=3.5.5,<4.0a0 - zstd >=1.5.7,<1.6.0a0 license: MIT license_family: MIT - size: 728471 - timestamp: 1757977549393 + size: 729168 + timestamp: 1770719020674 - conda: https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.3-nompi_hd7ff75f_102.conda sha256: fca64970eb3e2f51603bc301981df90192668155c27c2375081873c2c4c3a662 md5: 7ca7db567e97c4f0e13f0ab710b973b8 @@ -18651,39 +19436,38 @@ packages: license_family: MIT size: 684477 timestamp: 1757402380009 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.3-nompi_h80c4520_103.conda - sha256: 60b5eff8d2347b20d7c435ba9b8e724bafb3ea9cc21da99b4339c6458dc48328 - md5: 926f5ea75a8e4ad5e8c026c07eab75ba +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.3-nompi_h7a8d41e_104.conda + sha256: 14d895f8c07201cd88ca2aada641c7e1db55c9b8e44b3f2579a7608b9d12cec2 + md5: 82a39939eb22d375750b85ed42cdbaba depends: - __osx >=11.0 - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - hdf4 >=4.2.15,<4.2.16.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - - libaec >=1.1.4,<2.0a0 - - libcurl >=8.14.1,<9.0a0 + - libaec >=1.1.5,<2.0a0 + - libcurl >=8.18.0,<9.0a0 - libcxx >=19 - libxml2 - libxml2-16 >=2.14.6 - libzip >=1.11.2,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.2,<4.0a0 - - zlib + - openssl >=3.5.5,<4.0a0 - zstd >=1.5.7,<1.6.0a0 license: MIT license_family: MIT - size: 685237 - timestamp: 1757977534772 -- conda: https://conda.anaconda.org/conda-forge/win-64/libnetcdf-4.9.3-nompi_h7d90bef_103.conda - sha256: 675b55d2b9d5ad2d2fb8c1c2cc06b65c48b958d1faf7b8116a6bc352696ef8f0 - md5: 0c157867805749ddbf608766f1350e11 + size: 687626 + timestamp: 1770718748118 +- conda: https://conda.anaconda.org/conda-forge/win-64/libnetcdf-4.9.3-nompi_h3948bcf_104.conda + sha256: 70bc463082e8c861a2cd22b419fffd74aec98e43052be254c4fd0d51305742b3 + md5: 3747feaeeb94d1f7654bd10596360d21 depends: - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - hdf4 >=4.2.15,<4.2.16.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - - libaec >=1.1.4,<2.0a0 - - libcurl >=8.14.1,<9.0a0 + - libaec >=1.1.5,<2.0a0 + - libcurl >=8.18.0,<9.0a0 - libxml2 - libxml2-16 >=2.14.6 - libzip >=1.11.2,<2.0a0 @@ -18691,12 +19475,11 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - - zlib - zstd >=1.5.7,<1.6.0a0 license: MIT license_family: MIT - size: 678411 - timestamp: 1757977349918 + size: 679613 + timestamp: 1770718488654 - conda: https://conda.anaconda.org/conda-forge/win-64/libnetcdf-4.9.3-nompi_ha45073a_102.conda sha256: c5312fe1026960a931e0f0be046a44acc43ab46d059a1f82c0b7881a3af8ff49 md5: e70b5fae7a9b638d65fe226c0639b14a @@ -18928,19 +19711,21 @@ packages: license_family: APACHE size: 1318386 timestamp: 1759482004172 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.0-h7376487_0_cpu.conda - sha256: 95badcfa2b806186071be43e3700435db5dd5c50ffbe33d58aab66fb40846318 - md5: be2161a27537cb288a5634daf768af00 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-23.0.0-h7376487_2_cuda.conda + build_number: 2 + sha256: b97e076c60f017810d38a411547f4fd7ae014e1b8c6a0ec189ffcb531319a41a + md5: 1e2a463be2b1248c214b246fa14b72f6 depends: - __glibc >=2.17,<3.0.a0 - - libarrow 23.0.0 h2c50142_0_cpu + - libarrow 23.0.0 h258748b_2_cuda - libgcc >=14 - libstdcxx >=14 - libthrift >=0.22.0,<0.22.1.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: Apache-2.0 - size: 1390827 - timestamp: 1769258485804 + license_family: APACHE + size: 1391834 + timestamp: 1770440597070 - conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-21.0.0-ha67a804_8_cpu.conda build_number: 8 sha256: da4b38051288fc06c577bce4b397f53e0ff1309b6e2e83af7a4496791724c682 @@ -18959,22 +19744,24 @@ packages: license_family: APACHE size: 1061306 timestamp: 1759483989578 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-23.0.0-ha0d2768_0_cpu.conda - sha256: 6d725561a295e51125f76a0bf62caba33359e599f543d9cd91b800afc8e922bf - md5: 291f3afc764f78ea4a83516585a1e7c3 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libparquet-23.0.0-ha0d2768_2_cpu.conda + build_number: 2 + sha256: 7bcdca6f68c17e1b154c39bcc5ea8be65a555e8c7c562b291df0bd290523fd2a + md5: 174b6059fc1102dbe2a784d732e919b4 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 23.0.0 h8071b21_0_cpu + - libarrow 23.0.0 h72f758e_2_cpu - libcxx >=21 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - libprotobuf >=6.31.1,<6.31.2.0a0 - libthrift >=0.22.0,<0.22.1.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: Apache-2.0 - size: 1095286 - timestamp: 1769256845564 + license_family: APACHE + size: 1098263 + timestamp: 1770434021021 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-21.0.0-h45c8936_8_cpu.conda build_number: 8 sha256: c336c67cdab92f99ad40e3d41571b880bd6d54ba06aaabb5187b23c799458da5 @@ -18993,35 +19780,53 @@ packages: license_family: APACHE size: 1021610 timestamp: 1759482399167 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-23.0.0-hcc2992d_0_cpu.conda - sha256: 6c257cdd8ef2a9b2bf905f39fa211a79131788b0b5a3530cc6946bbb9db54d34 - md5: fe86c75e6da6eb1b34f7d75935e3767b +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libparquet-23.0.0-hcc2992d_2_cpu.conda + build_number: 2 + sha256: 8a73ec8dd63d993ba4d0daa366470d0b68f3fcda7386362ec10a0e1abae5a9b8 + md5: 7b877b0e610ca5a58a8947eadb1f6191 depends: - __osx >=11.0 - libabseil * cxx17* - libabseil >=20250512.1,<20250513.0a0 - - libarrow 23.0.0 h4365f54_0_cpu + - libarrow 23.0.0 h585ae05_2_cpu - libcxx >=21 - libopentelemetry-cpp >=1.21.0,<1.22.0a0 - libprotobuf >=6.31.1,<6.31.2.0a0 - libthrift >=0.22.0,<0.22.1.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: Apache-2.0 - size: 1072806 - timestamp: 1769255417818 -- conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-23.0.0-h7051d1f_0_cpu.conda - sha256: 7b29537fdd29351a36f8817fb1959b3f13259a4b68b2c448b8793f620cc25571 - md5: fa8b0d1f7d292d01a78dcc370d903ba3 + license_family: APACHE + size: 1076058 + timestamp: 1770431459752 +- conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-23.0.0-h7051d1f_2_cpu.conda + build_number: 2 + sha256: 10b1562bc1d7195c46134b2f53a7091b979c45e4117a60e1c4be0a0ce05c6171 + md5: 15dbe221357e3854b02ecc34f047cf40 depends: - - libarrow 23.0.0 hcf7e2ff_0_cpu + - libarrow 23.0.0 hfcfc620_2_cpu - libthrift >=0.22.0,<0.22.1.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: Apache-2.0 + license_family: APACHE + size: 949664 + timestamp: 1770435907454 +- conda: https://conda.anaconda.org/conda-forge/win-64/libparquet-23.0.1-h7051d1f_0_cpu.conda + sha256: cb76545874944de088e4c4f7231a18f4c45d13ceee96fb16a91f7bc5a09d5f10 + md5: f85dfd137b02f8f65ad934c70c595503 + depends: + - libarrow 23.0.1 hde9e798_0_cpu + - libthrift >=0.22.0,<0.22.1.0a0 + - openssl >=3.5.5,<4.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: Apache-2.0 - size: 948280 - timestamp: 1769259453124 + license_family: APACHE + size: 945529 + timestamp: 1771289123240 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hb9d3cd8_0.conda sha256: 0bd91de9b447a2991e666f284ae8c722ffb1d84acb594dbd0c031bd656fa32b2 md5: 70e3400cbbfa03e96dcde7fc13e38c7b @@ -19032,45 +19837,45 @@ packages: license_family: MIT size: 28424 timestamp: 1749901812541 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.54-h421ea60_0.conda - sha256: 5de60d34aac848a9991a09fcdea7c0e783d00024aefec279d55e87c0c44742cd - md5: d361fa2a59e53b61c2675bfa073e5b7e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.55-h421ea60_0.conda + sha256: 36ade759122cdf0f16e2a2562a19746d96cf9c863ffaa812f2f5071ebbe9c03c + md5: 5f13ffc7d30ffec87864e678df9957b4 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=14 + - __glibc >=2.17,<3.0.a0 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 317435 - timestamp: 1768285668880 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.54-h07817ec_0.conda - sha256: c0efdf9b34132e7d4e0051bf65a97f1b9e1125c7f8a9067a35ec119af367eb38 - md5: 3d43dcdfcc3971939c80f855cf2df235 + size: 317669 + timestamp: 1770691470744 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.55-h07817ec_0.conda + sha256: 75755fa305f7c944d911bf00593e283ebb83dac1e9c54dc1e016cf591e57d808 + md5: 4fc7ed44d55aaf1d72b8fbc18774b90c depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 298894 - timestamp: 1768285676981 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.54-h132b30e_0.conda - sha256: 1c271c0ec73b69f7570c5da67d0e47ddf7ff079bc1ca2dfaccd267ea39314b06 - md5: 1b80fd1eecb98f1cb7de4239f5d7dc15 + size: 298943 + timestamp: 1770691469850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.55-h132b30e_0.conda + sha256: 7a4fd29a6ee2d7f7a6e610754dfdf7410ed08f40d8d8b488a27bc0f9981d5abb + md5: 871dc88b0192ac49b6a5509932c31377 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 288910 - timestamp: 1768285694469 -- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.54-h7351971_0.conda - sha256: 6e269361aa18a57bd2e593e480d83d93fc5f839d33d3bfc31b4ffe10edf6751c - md5: 638ecb69e44b6a588afd5633e81f9e61 + size: 288950 + timestamp: 1770691485950 +- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.55-h7351971_0.conda + sha256: db23f281fa80597a0dc0445b18318346862602d7081ed76244df8cc4418d6d68 + md5: 43f47a9151b9b8fc100aeefcf350d1a0 depends: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - libzlib >=1.3.1,<2.0a0 license: zlib-acknowledgement - size: 383094 - timestamp: 1768285706434 + size: 383155 + timestamp: 1770691504832 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-17.7-h5c52fec_1.conda sha256: 06a8ace6cc5ee47b85a5e64fad621e5912a12a0202398f54f302eb4e8b9db1fd md5: a4769024afeab4b32ac8167c2f92c7ac @@ -19084,19 +19889,19 @@ packages: license: PostgreSQL size: 2649881 timestamp: 1763565297202 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.1-hb80d175_3.conda - sha256: 21adefed86a36622dd500d7862cb980c5bdaab6ed3f4930a9b9afceabc7a6d58 - md5: c39da2ad0e7dd600d1eb3146783b057d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-18.2-hb80d175_0.conda + sha256: 5f857281d53334f1a400afae7ae915161eb8f796ddadb11c082839a4c47de6da + md5: fa63c385ddb50957d93bdb394e355be8 depends: - __glibc >=2.17,<3.0.a0 - - icu >=78.1,<79.0a0 + - icu >=78.2,<79.0a0 - krb5 >=1.21.3,<1.22.0a0 - libgcc >=14 - openldap >=2.6.10,<2.7.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 license: PostgreSQL - size: 2761692 - timestamp: 1766448056465 + size: 2809023 + timestamp: 1770915404394 - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-6.31.1-h49aed37_4.conda sha256: 0ef142ac31e6fd59b4af89ac800acb6deb3fbd9cc4ccf070c03cc2c784dc7296 md5: 07479fc04ba3ddd5d9f760ef1635cfa7 @@ -19151,6 +19956,20 @@ packages: license_family: BSD size: 7488966 timestamp: 1766316540495 +- conda: https://conda.anaconda.org/conda-forge/win-64/libprotobuf-6.33.5-h61fc761_0.conda + sha256: 73e2ac7ff32b635b9f6a485dfd5ec1968b7f4bd49f21350e919b2ed8966edaa3 + md5: 69e5855826e56ea4b67fb888ef879afd + depends: + - libabseil * cxx17* + - libabseil >=20260107.0,<20260108.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: BSD-3-Clause + license_family: BSD + size: 7117788 + timestamp: 1769749718218 - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2025.11.05-h7b12aa8_0.conda sha256: eb5d5ef4d12cdf744e0f728b35bca910843c8cf1249f758cf15488ca04a21dbb md5: a30848ebf39327ea078cf26d114cff53 @@ -19194,6 +20013,21 @@ packages: license_family: BSD size: 165593 timestamp: 1762398300610 +- conda: https://conda.anaconda.org/conda-forge/win-64/libre2-11-2025.11.05-h04e5de1_1.conda + sha256: 7e26b7868b10e40bc441e00c558927835eacef7e5a39611c2127558edd660c8f + md5: 3d863f1a19f579ca511f6ac02038ab5a + depends: + - libabseil * cxx17* + - libabseil >=20260107.0,<20260108.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - re2 2025.11.05.* + license: BSD-3-Clause + license_family: BSD + size: 266062 + timestamp: 1768190189553 - conda: https://conda.anaconda.org/conda-forge/win-64/libre2-11-2025.11.05-h0eb2380_0.conda sha256: 8eb2c205588e6d751fe387e90f1321ac8bbaef0a12d125a1dd898e925327f8ae md5: 960713477ad3d7f82e5199fa1b940495 @@ -19228,22 +20062,22 @@ packages: license: LGPL-2.1-or-later size: 6543651 timestamp: 1743368725313 -- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.60.0-h61e6d4b_0.conda - sha256: 960b137673b2b8293e2a12d194add72967b3bf12fcdf691e7ad8bd5c8318cec3 - md5: 91e6d4d684e237fba31b9815c4b40edf +- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.60.2-h61e6d4b_0.conda + sha256: 38b3189cf246f7265e06917f32d046ac375117c88834d045efe73ec48ceacc59 + md5: d62da3d560992bfa2feb611d7be813b8 depends: - __glibc >=2.17,<3.0.a0 - cairo >=1.18.4,<2.0a0 - - gdk-pixbuf >=2.44.3,<3.0a0 + - gdk-pixbuf >=2.44.5,<3.0a0 - libgcc >=14 - - libglib >=2.86.0,<3.0a0 + - libglib >=2.86.4,<3.0a0 - libxml2-16 >=2.14.6 - pango >=1.56.4,<2.0a0 constrains: - __glibc >=2.17 license: LGPL-2.1-or-later - size: 3421977 - timestamp: 1759327942156 + size: 4011590 + timestamp: 1771399906142 - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_3.conda sha256: 87432fca28ddfaaf82b3cd12ce4e31fcd963428d1f2c5e2a3aef35dd30e56b71 md5: 213dcdb373bf108d1beb18d33075f51d @@ -19259,21 +20093,21 @@ packages: license: LGPL-2.1-or-later size: 4946543 timestamp: 1743368938616 -- conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.60.0-h2da6fc3_0.conda - sha256: 9ac53c255af84a3913015796797785f6a94e12ea991e1c36735c5aefaf70ebca - md5: 0e5609c0f8e5421e43301bcc3c5e1985 +- conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.60.0-h99749c4_1.conda + sha256: 007872d3fac8aa95323b5bc8b704eb92d1ac03b7c62c882f7f917b9b8c35492b + md5: 6477841b81291fb8573d0244816bde19 depends: - - __osx >=10.13 + - __osx >=11.0 - cairo >=1.18.4,<2.0a0 - - gdk-pixbuf >=2.44.3,<3.0a0 - - libglib >=2.86.0,<3.0a0 + - gdk-pixbuf >=2.44.5,<3.0a0 + - libglib >=2.86.4,<3.0a0 - libxml2-16 >=2.14.6 - pango >=1.56.4,<2.0a0 constrains: - __osx >=10.13 license: LGPL-2.1-or-later - size: 2431321 - timestamp: 1759328795502 + size: 2384779 + timestamp: 1771302537173 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_3.conda sha256: 0ec066d7f22bcd9acb6ca48b2e6a15e9be4f94e67cb55b0a2c05a37ac13f9315 md5: 95d6ad8fb7a2542679c08ce52fafbb6c @@ -19289,21 +20123,21 @@ packages: license: LGPL-2.1-or-later size: 4607782 timestamp: 1743369546790 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.60.0-h5c55ec3_0.conda - sha256: ca5a2de5d3f68e8d6443ea1bf193c1596a278e6f86018017c0ccd4928eaf8971 - md5: 05ad1d6b6fb3b384f7a07128025725cb +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.60.0-h9001022_1.conda + sha256: 9ba1531b46c75313736e2ef8ba1a4d3ef7d3ffd22efe8d593bfa99da7143a1cb + md5: b6c81d5b3324b9ff9fe8f39d25d8be66 depends: - __osx >=11.0 - cairo >=1.18.4,<2.0a0 - - gdk-pixbuf >=2.44.3,<3.0a0 - - libglib >=2.86.0,<3.0a0 + - gdk-pixbuf >=2.44.5,<3.0a0 + - libglib >=2.86.4,<3.0a0 - libxml2-16 >=2.14.6 - pango >=1.56.4,<2.0a0 constrains: - __osx >=11.0 license: LGPL-2.1-or-later - size: 2344343 - timestamp: 1759328503184 + size: 2357137 + timestamp: 1771302195666 - conda: https://conda.anaconda.org/conda-forge/linux-64/librttopo-1.1.0-h46dd2a8_20.conda sha256: eb4082a5135102f5ba9c302da13164d4ed1181d5f0db9d49e5e11a815a7b526f md5: df81fd57eacf341588d728c97920e86d @@ -19410,34 +20244,32 @@ packages: license: CECILL-C size: 341039 timestamp: 1717069891622 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libscotch-7.0.10-int64_h5eb5a6d_2.conda - sha256: 8c1ad91bebffdd8f81653f299a2d1532ac19178947d784572bc1983c5ed10118 - md5: 0488564246090e18a1b4a03d4aef4ef1 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libscotch-7.0.11-int64_h80fc1e8_0.conda + sha256: 6b9218717d30455e45ece017b442915424b61cf01797b9f17e4afe54b2de2296 + md5: dc72637c55980d4cd9dc6365f8a04666 depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - libgfortran - libgfortran5 >=14.3.0 - - libgfortran5 >=15.2.0 - - liblzma >=5.8.1,<6.0a0 + - liblzma >=5.8.2,<6.0a0 - libzlib >=1.3.1,<2.0a0 license: CECILL-C - size: 305094 - timestamp: 1763424259348 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libscotch-7.0.10-int64_ha305a69_2.conda - sha256: 93b44473bb6ae29e4d9860a8d0636d0484f8b92bcd4dcfa2f581bb9530bc3336 - md5: 3df6158b6cddf8e444f08e280fc8573d + size: 305278 + timestamp: 1770962096860 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libscotch-7.0.11-int64_hd8baee2_0.conda + sha256: 6cdc832e4bee581193dad7388e0b986a96e63605c4f4d57f899bdf3cc2d3847d + md5: 1f2167640af4b8e61c5333963071d047 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - libgfortran - libgfortran5 >=14.3.0 - - libgfortran5 >=15.2.0 - - liblzma >=5.8.1,<6.0a0 + - liblzma >=5.8.2,<6.0a0 - libzlib >=1.3.1,<2.0a0 license: CECILL-C - size: 282183 - timestamp: 1763424467872 + size: 282864 + timestamp: 1770962036023 - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 md5: a587892d3c13b6621a6091be690dbca2 @@ -19446,22 +20278,18 @@ packages: license: ISC size: 205978 timestamp: 1716828628198 -- conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.20-hfdf4475_0.conda - sha256: d3975cfe60e81072666da8c76b993af018cf2e73fe55acba2b5ba0928efaccf5 - md5: 6af4b059e26492da6013e79cbcb4d069 - depends: - - __osx >=10.13 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsodium-1.0.18-hbcb3906_1.tar.bz2 + sha256: 2da45f14e3d383b4b9e3a8bacc95cd2832aac2dbf9fbc70d255d384a310c5660 + md5: 24632c09ed931af617fe6d5292919cab license: ISC - size: 210249 - timestamp: 1716828641383 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.20-h99b78c6_0.conda - sha256: fade8223e1e1004367d7101dd17261003b60aa576df6d7802191f8972f7470b1 - md5: a7ce36e284c5faaf93c220dfc39e3abd - depends: - - __osx >=11.0 + size: 528765 + timestamp: 1605135849110 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsodium-1.0.18-h27ca646_1.tar.bz2 + sha256: 1d95fe5e5e6a0700669aab454b2a32f97289c9ed8d1f7667c2ba98327a6f05bc + md5: 90859688dbca4735b74c02af14c4c793 license: ISC - size: 164972 - timestamp: 1716828607917 + size: 324912 + timestamp: 1605135878892 - conda: https://conda.anaconda.org/conda-forge/win-64/libsodium-1.0.20-hc70643c_0.conda sha256: 7bcb3edccea30f711b6be9601e083ecf4f435b9407d70fc48fbcf9e5d69a0fc6 md5: 198bb594f202b205c7d18b936fa4524f @@ -19773,27 +20601,25 @@ packages: license_family: BSD size: 292785 timestamp: 1745608759342 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_16.conda - sha256: 813427918316a00c904723f1dfc3da1bbc1974c5cfe1ed1e704c6f4e0798cbc6 - md5: 68f68355000ec3f1d6f26ea13e8f525f +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_18.conda + sha256: 78668020064fdaa27e9ab65cd2997e2c837b564ab26ce3bf0e58a2ce1a525c6e + md5: 1b08cd684f34175e4514474793d44bcb depends: - __glibc >=2.17,<3.0.a0 - - libgcc 15.2.0 he0feb66_16 + - libgcc 15.2.0 he0feb66_18 constrains: - - libstdcxx-ng ==15.2.0=*_16 + - libstdcxx-ng ==15.2.0=*_18 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 5856456 - timestamp: 1765256838573 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_16.conda - sha256: 81f2f246c7533b41c5e0c274172d607829019621c4a0823b5c0b4a8c7028ee84 - md5: 1b3152694d236cf233b76b8c56bf0eae + size: 5852330 + timestamp: 1771378262446 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_18.conda + sha256: 3c902ffd673cb3c6ddde624cdb80f870b6c835f8bf28384b0016e7d444dd0145 + md5: 6235adb93d064ecdf3d44faee6f468de depends: - - libstdcxx 15.2.0 h934c35e_16 + - libstdcxx 15.2.0 h934c35e_18 license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 27300 - timestamp: 1765256885128 + size: 27575 + timestamp: 1771378314494 - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.22.0-h454ac66_1.conda sha256: 4888b9ea2593c36ca587a5ebe38d0a56a0e6d6a9e4bb7da7d9a326aaaca7c336 md5: 8ed82d90e6b1686f5e98f8b7825a15ef @@ -20027,37 +20853,34 @@ packages: license_family: BSD size: 40311 timestamp: 1766271528534 -- conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.328.1-h5279c79_0.conda - sha256: bbabc5c48b63ff03f440940a11d4648296f5af81bb7630d98485405cd32ac1ce - md5: 372a62464d47d9e966b630ffae3abe73 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvulkan-loader-1.4.341.0-h5279c79_0.conda + sha256: a68280d57dfd29e3d53400409a39d67c4b9515097eba733aa6fe00c880620e2b + md5: 31ad065eda3c2d88f8215b1289df9c89 depends: - __glibc >=2.17,<3.0.a0 - libstdcxx >=14 - libgcc >=14 - xorg-libx11 >=1.8.12,<2.0a0 - - xorg-libxrandr >=1.5.4,<2.0a0 + - xorg-libxrandr >=1.5.5,<2.0a0 constrains: - - libvulkan-headers 1.4.328.1.* + - libvulkan-headers 1.4.341.0.* license: Apache-2.0 license_family: APACHE - size: 197672 - timestamp: 1759972155030 -- conda: https://conda.anaconda.org/conda-forge/win-64/libvulkan-loader-1.4.328.1-h477610d_0.conda - sha256: 934d676c445c1ea010753dfa98680b36a72f28bec87d15652f013c91a1d8d171 - md5: 4403eae6c81f448d63a7f66c0b330536 + size: 199795 + timestamp: 1770077125520 +- conda: https://conda.anaconda.org/conda-forge/win-64/libvulkan-loader-1.4.341.0-h477610d_0.conda + sha256: 0f0965edca8b255187604fc7712c53fe9064b31a1845a7dfb2b63bf660de84a7 + md5: 804880b2674119b84277d6c16b01677d depends: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - - ucrt >=10.0.20348.0 constrains: - - libvulkan-headers 1.4.328.1.* + - libvulkan-headers 1.4.341.0.* license: Apache-2.0 license_family: APACHE - size: 280488 - timestamp: 1759972163692 + size: 282251 + timestamp: 1770077165680 - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda sha256: 3aed21ab28eddffdaf7f804f49be7a7d701e8f0e46c856d801270b470820a37b md5: aea31d2e5b1091feca96fcfe945c3cf9 @@ -20302,22 +21125,22 @@ packages: license_family: MIT size: 1521446 timestamp: 1761766307746 -- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.1-ha29bfb0_0.conda - sha256: fb51b91a01eac9ee5e26c67f4e081f09f970c18a3da5231b8172919a1e1b3b6b - md5: 87116b9de9c1825c3fd4ef92c984877b +- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.15.1-h779ef1b_1.conda + sha256: 8b47d5fb00a6ccc0f495d16787ab5f37a434d51965584d6000966252efecf56d + md5: 68dc154b8d415176c07b6995bd3a65d9 depends: - - icu >=75.1,<76.0a0 + - icu >=78.1,<79.0a0 - libiconv >=1.18,<2.0a0 - liblzma >=5.8.1,<6.0a0 - - libxml2-16 2.15.1 h06f855e_0 + - libxml2-16 2.15.1 h3cfd58e_1 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: MIT license_family: MIT - size: 43042 - timestamp: 1761016261024 + size: 43387 + timestamp: 1766327259710 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-16-2.15.1-hca6bf5a_1.conda sha256: 8331284bf9ae641b70cdc0e5866502dd80055fc3b9350979c74bb1d192e8e09e md5: 3fdd8d99683da9fe279c2f4cecd1e048 @@ -20364,11 +21187,11 @@ packages: license_family: MIT size: 464886 timestamp: 1766327479416 -- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.1-h06f855e_0.conda - sha256: 3f65ea0f04c7738116e74ca87d6e40f8ba55b3df31ef42b8cb4d78dd96645e90 - md5: 4a5ea6ec2055ab0dfd09fd0c498f834a +- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-16-2.15.1-h3cfd58e_1.conda + sha256: a857e941156b7f462063e34e086d212c6ccbc1521ebdf75b9ed66bd90add57dc + md5: 07d73826fde28e7dbaec52a3297d7d26 depends: - - icu >=75.1,<76.0a0 + - icu >=78.1,<79.0a0 - libiconv >=1.18,<2.0a0 - liblzma >=5.8.1,<6.0a0 - libzlib >=1.3.1,<2.0a0 @@ -20379,8 +21202,8 @@ packages: - libxml2 2.15.1 license: MIT license_family: MIT - size: 518616 - timestamp: 1761016240185 + size: 518964 + timestamp: 1766327232819 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-devel-2.15.1-he237659_1.conda sha256: 6621eb70375ff867c7c6606c216139e47eade8dfad78bcf7bdd0a62dc87d629f md5: 644b2a3a92ba0bb8e2aa671dd831e793 @@ -20427,23 +21250,23 @@ packages: license_family: MIT size: 79725 timestamp: 1766327519923 -- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-devel-2.15.1-ha29bfb0_0.conda - sha256: ac4add7375c9ff75bfd036a05d51b272e0fb2317bc38ca81f550238d2c1bc146 - md5: 11767c61201ec4eaeb8555532355fe4f +- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-devel-2.15.1-h779ef1b_1.conda + sha256: aa029a0c5f193237011033e178433dd126796fd7693acbb6bffca134c3d3849e + md5: 83b2850ed45d2d66ac89e5cf2465cb43 depends: - - icu >=75.1,<76.0a0 + - icu >=78.1,<79.0a0 - libiconv >=1.18,<2.0a0 - liblzma >=5.8.1,<6.0a0 - - libxml2 2.15.1 ha29bfb0_0 - - libxml2-16 2.15.1 h06f855e_0 + - libxml2 2.15.1 h779ef1b_1 + - libxml2-16 2.15.1 h3cfd58e_1 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: MIT license_family: MIT - size: 123163 - timestamp: 1761016277112 + size: 123251 + timestamp: 1766327276864 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.43-h711ed8c_1.conda sha256: 0694760a3e62bdc659d90a14ae9c6e132b525a7900e59785b18a08bb52a5d7e5 md5: 87e6096ec6d542d1c1f8b33245fe8300 @@ -20633,9 +21456,9 @@ packages: license_family: MIT size: 83528 timestamp: 1757081816303 -- conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.1-pyhcf101f3_0.conda - sha256: 74f805b4906c2f0f42a71943e8dc3177a7b382017e4b22ee44209b54522f25f1 - md5: 8f46def45efc90f7462e476e3fdb3de0 +- conda: https://conda.anaconda.org/conda-forge/noarch/linopy-0.6.3-pyhcf101f3_1.conda + sha256: aa8548935746f0c81eb0fdb75797f5df3984abba6c048366aae6df3fac460539 + md5: 98fd08c0fc8a9c55c463533c8cface53 depends: - python >=3.11 - numpy @@ -20645,16 +21468,17 @@ packages: - numexpr - xarray >=2024.2.0 - dask-core >=0.18.0 - - polars + - polars >=1.31.1 - tqdm - deprecation + - packaging - google-cloud-storage - requests - python license: MIT license_family: MIT - size: 97952 - timestamp: 1768984003557 + size: 99018 + timestamp: 1770806722203 - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-21.1.8-h472b3d1_0.conda sha256: 2a41885f44cbc1546ff26369924b981efa37a29d20dc5445b64539ba240739e6 md5: e2d811e9f464dd67398b4ce1f9c7c872 @@ -20702,7 +21526,29 @@ packages: license_family: BSD size: 8250 timestamp: 1650660473123 -- conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.0.2-py313h4a16004_2.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh707e725_0.conda + sha256: e4a07f357a4cf195a2345dabd98deab80f4d53574abe712a9cc7f22d3f2cc2c3 + md5: 49647ac1de4d1e4b49124aedf3934e02 + depends: + - __unix + - python >=3.9 + license: MIT + license_family: MIT + size: 59696 + timestamp: 1746634858826 +- conda: https://conda.anaconda.org/conda-forge/noarch/loguru-0.7.3-pyh7428d3b_0.conda + sha256: 647ce9601c1a63af4710a2d718a74fa521da28262c41bbf86189f6c0906b23f6 + md5: a6c25c54d8d524735db2e5785aec0a4e + depends: + - __win + - colorama >=0.3.4 + - python >=3.9 + - win32_setctime >=1.0.0 + license: MIT + license_family: MIT + size: 60119 + timestamp: 1746634872414 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lxml-6.0.2-py313h4a16004_2.conda sha256: f2b2ffa585d1bf74faea4c04e7e39b4230c1390c0b889e2ac725fc2a343d9de0 md5: eb93cf5d79939716bc82434eb7e1af30 depends: @@ -20982,6 +21828,25 @@ packages: license_family: MIT size: 64430 timestamp: 1733250550053 +- conda: https://conda.anaconda.org/conda-forge/noarch/markdown-it-py-4.0.0-pyhd8ed1ab_0.conda + sha256: 7b1da4b5c40385791dbc3cc85ceea9fad5da680a27d5d3cb8bfaa185e304a89e + md5: 5b5203189eb668f042ac2b0826244964 + depends: + - mdurl >=0.1,<1 + - python >=3.10 + license: MIT + license_family: MIT + size: 64736 + timestamp: 1754951288511 +- conda: https://conda.anaconda.org/conda-forge/noarch/marko-2.2.2-pyhd8ed1ab_0.conda + sha256: ff198a4653898a10cedd8e016e665d8e6527011bdcae981342432b9148805eab + md5: 3c3e9339e46fffba5920be28d9233860 + depends: + - python >=3.10 + license: MIT + license_family: MIT + size: 39446 + timestamp: 1767626772384 - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.3-py312h8a5da7c_0.conda sha256: f77f9f1a4da45cbc8792d16b41b6f169f649651a68afdc10b2da9da12b9aa42b md5: f775a43412f7f3d7ed218113ad233869 @@ -21840,18 +22705,18 @@ packages: license: CECILL-C size: 20755 timestamp: 1745406913902 -- conda: https://conda.anaconda.org/conda-forge/osx-64/mumps-include-5.8.1-hc797fd9_4.conda - sha256: 8e7bd29d9ff8841f793e9967c629ee475631a7dda211362788fa1e5f76ea1d51 - md5: b90d807d81535f092a947c3ff5cbe1c7 +- conda: https://conda.anaconda.org/conda-forge/osx-64/mumps-include-5.8.2-h6a5cfba_1.conda + sha256: 13d178b8e25c1f28ee0b7cdf7fc2aaf9d997cf552722ceef6231b3612ad37fbb + md5: 9ac39cac626d18c6c170680d98b4a15b license: CECILL-C - size: 19777 - timestamp: 1759596566455 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mumps-include-5.8.1-h2ca763e_4.conda - sha256: d5c20572becdbc87e5c6e1bd950031c10f058d4b7f9f29cd71675167daa6608e - md5: 8db931c3eac5b951783b1e69dd2f4736 + size: 20736 + timestamp: 1771038462142 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mumps-include-5.8.2-h2ca763e_1.conda + sha256: 0b9bdd6891d0eaed6a821735760c0e951ab72d14d68a05d8f63a58dfd3ff2eda + md5: 7d0e3d3d875c7474dfbab34d5e6a9698 license: CECILL-C - size: 19790 - timestamp: 1759596513950 + size: 20737 + timestamp: 1771038511552 - conda: https://conda.anaconda.org/conda-forge/linux-64/mumps-seq-5.7.3-h27a6a8b_0.conda sha256: 32facdad34df86928ed1632264b943c87174edeb9d74ccfaaf353f8a669579c2 md5: d524b41c7757ea147337039fa4158fbb @@ -21868,62 +22733,59 @@ packages: license: CECILL-C size: 2029763 timestamp: 1722844276781 -- conda: https://conda.anaconda.org/conda-forge/osx-64/mumps-seq-5.8.1-h28c60b8_4.conda - sha256: 8ac0ae1a4fde4482bc3d502f9733ced54daf8573c6ed1bf7ac078178d21c36a2 - md5: 850ce119e9a44014e6c515d871b92573 +- conda: https://conda.anaconda.org/conda-forge/osx-64/mumps-seq-5.8.2-h45e9145_1.conda + sha256: fa7a0845b5c63d0b1679058fb9d1781c80f1201657ab6e80920b9bfc5fe9c662 + md5: 3f7f632b2793f714c670116ac50dc7a6 depends: - - mumps-include ==5.8.1 hc797fd9_4 + - mumps-include ==5.8.2 h6a5cfba_1 + - __osx >=11.0 - libgfortran - libgfortran5 >=14.3.0 - - __osx >=10.13 - llvm-openmp >=19.1.7 - - libscotch >=7.0.10,<7.0.11.0a0 + - liblapack >=3.9.0,<4.0a0 + - libscotch >=7.0.11,<7.0.12.0a0 - libscotch * int64_* - metis >=5.1.0,<5.1.1.0a0 - libblas >=3.9.0,<4.0a0 - - liblapack >=3.9.0,<4.0a0 constrains: - libopenblas * *openmp* license: CECILL-C - size: 2680661 - timestamp: 1759596566455 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mumps-seq-5.8.1-he6ca4b8_4.conda - sha256: 729848e6a08bdd567209845c44fefb1c4cf865c46233e70ef1e9571019182233 - md5: feffdbb33d2bcc29a6a820dcbdf777cc + size: 2680995 + timestamp: 1771038462147 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mumps-seq-5.8.2-he5473ce_1.conda + sha256: 37fde734b645520c62d5b862e0f1b7540a712efeb9755742b11fe3b204992cae + md5: 49cf0e34b48e5404dc63ae7bee00a1b9 depends: - - mumps-include ==5.8.1 h2ca763e_4 + - mumps-include ==5.8.2 h2ca763e_1 - llvm-openmp >=19.1.7 - - __osx >=11.0 - libgfortran - libgfortran5 >=14.3.0 + - __osx >=11.0 - metis >=5.1.0,<5.1.1.0a0 + - liblapack >=3.9.0,<4.0a0 - libblas >=3.9.0,<4.0a0 - - libscotch >=7.0.10,<7.0.11.0a0 + - libscotch >=7.0.11,<7.0.12.0a0 - libscotch * int64_* - - liblapack >=3.9.0,<4.0a0 constrains: - libopenblas * *openmp* license: CECILL-C - size: 2707630 - timestamp: 1759596513951 -- conda: https://conda.anaconda.org/conda-forge/win-64/mumps-seq-5.8.1-hd297af6_4.conda - sha256: 963dd511d87c00b7ec0b386e227aa6233a1866f43b12547642dd21fdb2c9baeb - md5: 69feddba6b736c7ef62f7384a0aeeadc + size: 2710686 + timestamp: 1771038511558 +- conda: https://conda.anaconda.org/conda-forge/win-64/mumps-seq-5.8.2-h607cc0b_1.conda + sha256: cdfae8fd2e3d6a6cfb878162f6d67fedad1ff55291b271c5ed13a651b060e0f9 + md5: 6bdd3a1f02ad45955526b4a22cfcfc4a depends: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - - ucrt >=10.0.20348.0 - - llvm-openmp >=21.1.2 + - llvm-openmp >=21.1.8 - libblas >=3.9.0,<4.0a0 - liblapack >=3.9.0,<4.0a0 constrains: - libopenblas * *openmp* license: CECILL-C - size: 8031797 - timestamp: 1759596397 + size: 6225713 + timestamp: 1771038316338 - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyhd8ed1ab_1.conda sha256: d09c47c2cf456de5c09fa66d2c3c5035aa1fa228a1983a433c47b876aa16ce90 md5: 37293a85a0f4f77bbd9cf7aaefc62609 @@ -22001,26 +22863,26 @@ packages: license_family: MIT size: 73074 timestamp: 1739381945342 -- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.15.0-pyhcf101f3_0.conda - sha256: 2e64699401c6170ce9a0916461ff4686f8d10b076f6abe1d887cbcb7061c0e85 - md5: 37926bb0db8b04b8b99945076e1442d0 +- conda: https://conda.anaconda.org/conda-forge/noarch/narwhals-2.16.0-pyhcf101f3_0.conda + sha256: d9d358fb992938dc4ba292c4afa6677aac2b16464c9a4f35d69a6d6a923ad8f9 + md5: 648a62e4e4cf1605abf73e7f48b87d5e depends: - python >=3.10 - python license: MIT license_family: MIT - size: 272452 - timestamp: 1767693390284 -- conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyh29332c3_1.conda - sha256: 594ae12c32f163f6d312e38de41311a89e476544613df0c1d048f699721621d7 - md5: 0aa03903d33997f3886be58abc890aef + size: 279863 + timestamp: 1770040381392 +- conda: https://conda.anaconda.org/conda-forge/noarch/natsort-8.4.0-pyhcf101f3_2.conda + sha256: aeb1548eb72e4f198e72f19d242fb695b35add2ac7b2c00e0d83687052867680 + md5: e941e85e273121222580723010bd4fa2 depends: - python >=3.9 - python license: MIT license_family: MIT - size: 39002 - timestamp: 1733880463101 + size: 39262 + timestamp: 1770905275632 - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.4-pyhd8ed1ab_0.conda sha256: 1b66960ee06874ddceeebe375d5f17fb5f393d025a09e15b830ad0c4fffb585b md5: 00f5b8dafa842e0c27c1cd7296aa4875 @@ -22034,9 +22896,9 @@ packages: license_family: BSD size: 28473 timestamp: 1766485646962 -- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.6-pyhcf101f3_1.conda - sha256: 8f575e5c042b17f4677179a6ba474bdbe76573936d3d3e2aeb42b511b9cb1f3f - md5: cfc86ccc3b1de35d36ccaae4c50391f5 +- conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.17.0-pyhcf101f3_0.conda + sha256: 628fea99108df8e33396bb0b88658ec3d58edf245df224f57c0dce09615cbed2 + md5: b14079a39ae60ac7ad2ec3d9eab075ca depends: - beautifulsoup4 - bleach-with-css !=5.0.0 @@ -22057,11 +22919,11 @@ packages: - python constrains: - pandoc >=2.9.2,<4.0.0 - - nbconvert ==7.16.6 *_1 + - nbconvert ==7.17.0 *_0 license: BSD-3-Clause license_family: BSD - size: 199273 - timestamp: 1760797634443 + size: 202284 + timestamp: 1769709543555 - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda sha256: 7a5bd30a2e7ddd7b85031a5e2e14f290898098dc85bea5b3a5bf147c25122838 md5: bbe1963f1e47f594070ffe87cdf612ea @@ -22339,6 +23201,7 @@ packages: - tornado >=6.2.0 - python license: BSD-3-Clause + license_family: BSD size: 10047711 timestamp: 1769434091366 - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda @@ -22561,24 +23424,24 @@ packages: license_family: BSD size: 7484186 timestamp: 1707225809722 -- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.1-py313hf6604e3_0.conda - sha256: 4333872cc068f1ba559026ce805a25a91c2ae4e4f804691cf7fa0f43682e9b3a - md5: 7d51e3bef1a4b00bde1861d85ba2f874 +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.4.2-py313hf6604e3_1.conda + sha256: 2eb8be25a7504f058a153a84be70471e0ebbf6bd0411ae2b6d34904b89d86fe3 + md5: ca9c6ba4beac38cb3d0a85afde27f94c depends: - python - libgcc >=14 - - libstdcxx >=14 - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 - liblapack >=3.9.0,<4.0a0 - - libblas >=3.9.0,<4.0a0 - - python_abi 3.13.* *_cp313 - libcblas >=3.9.0,<4.0a0 + - python_abi 3.13.* *_cp313 + - libblas >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD - size: 8854901 - timestamp: 1768085657805 + size: 8857152 + timestamp: 1770098515258 - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-1.26.4-py312he3a82b2_0.conda sha256: 6152b73fba3e227afa4952df8753128fc9669bbaf142ee8f9972bf9df3bf8856 md5: 96c61a21c4276613748dba069554846b @@ -22595,23 +23458,23 @@ packages: license_family: BSD size: 6990646 timestamp: 1707226178262 -- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.1-py313hf1665ba_0.conda - sha256: d449bf0d9390e9a3ef4edde5a19d6f5fe5c5ecd13b679b1dd4c6b21d55a7bf85 - md5: 6d4a926728247bb9c32ecc788c211309 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.4.2-py313hf1665ba_1.conda + sha256: 681170d36570e9f7575540a1609c853512374473eb2b317d3c75ca0dd45f50c9 + md5: cff600662a8355987c574be24d68998b depends: - python - __osx >=10.13 - libcxx >=19 - python_abi 3.13.* *_cp313 + - libblas >=3.9.0,<4.0a0 - liblapack >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libblas >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD - size: 8061292 - timestamp: 1768085570929 + size: 8061406 + timestamp: 1770098398011 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-1.26.4-py312h8442bc7_0.conda sha256: c8841d6d6f61fd70ca80682efbab6bdb8606dc77c68d8acabfbd7c222054f518 md5: d83fc83d589e2625a3451c9a7e21047c @@ -22629,24 +23492,24 @@ packages: license_family: BSD size: 6073136 timestamp: 1707226249608 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.1-py313h16eae64_0.conda - sha256: 409a1f254ff025f0567d3444f2a82cd65c10d403f27a66f219f51a082b2a7699 - md5: 527abeb3c3f65345d9c337fb49e32d51 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.4.2-py313h16eae64_1.conda + sha256: 3e23ed9eb63d9ce4dc585aad6b65e0197d7e9f28877acf7114cc64f33763a420 + md5: e34e9c58a0ee3eca3def3bb477797621 depends: - python - __osx >=11.0 - - libcxx >=19 - python 3.13.* *_cp313 - - libcblas >=3.9.0,<4.0a0 + - libcxx >=19 - liblapack >=3.9.0,<4.0a0 - - python_abi 3.13.* *_cp313 - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - python_abi 3.13.* *_cp313 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD - size: 6925404 - timestamp: 1768085588288 + size: 6925963 + timestamp: 1770098439599 - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-1.26.4-py312h8753938_0.conda sha256: 73570817a5109d396b4ebbe5124a89525959269fd33fa33fd413700289fbe0ef md5: f9ac74c3b07c396014434aca1e58d362 @@ -22665,24 +23528,24 @@ packages: license_family: BSD size: 6495445 timestamp: 1707226412944 -- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.4.1-py313hce7ae62_0.conda - sha256: 1e28379c323859e7e83bf91b0dcbd1ddc0c13a3a6939aacab3bd7db5c2e9ccde - md5: 2490cec55c24dbf3d3be2da6b61a6646 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.4.2-py313hce7ae62_1.conda + sha256: a926b0f781c44fdd10e11ec7e7a86ac588ec40b339ac2b4a8459def6d99b613b + md5: 7db4fcf0a8a985d3f15270ddc7ac0aac depends: - python - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - python_abi 3.13.* *_cp313 - liblapack >=3.9.0,<4.0a0 + - python_abi 3.13.* *_cp313 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 constrains: - numpy-base <0a0 license: BSD-3-Clause license_family: BSD - size: 7251637 - timestamp: 1768085589970 + size: 7251046 + timestamp: 1770098409520 - conda: https://conda.anaconda.org/conda-forge/noarch/oauthlib-3.3.1-pyhd8ed1ab_0.conda sha256: dfa8222df90736fa13f8896f5a573a50273af8347542d412c3bd1230058e56a5 md5: d4f3f31ee39db3efecb96c0728d4bdbf @@ -22695,6 +23558,24 @@ packages: license_family: BSD size: 102059 timestamp: 1750415349440 +- conda: https://conda.anaconda.org/conda-forge/noarch/oda-reader-1.4.2-pyhcf101f3_0.conda + sha256: cf6bed85e994c139429f208ba5351d1ac9de7dc35ac2be01b7400283abaf7559 + md5: 994a73ab77f617dee032b6a94bad6bf2 + depends: + - python >=3.10 + - filelock >=3.18.0 + - joblib >=1.4 + - openpyxl >=3.1.0 + - pandas >=2.2.0 + - platformdirs >=4.5.0 + - pyarrow >=14.0.0 + - requests >=2.32 + - requests-cache >=1.2.0 + - python + license: MIT + license_family: MIT + size: 50239 + timestamp: 1770984194008 - conda: https://conda.anaconda.org/conda-forge/linux-64/openjdk-24.0.2-h5755bd7_0.conda sha256: 1080419a2f5fca5a5a5b47688a9941d6e26e43c15405f93513e18154171530f1 md5: 2cb7cefb4a66a25110b0fa8798cb4887 @@ -22919,40 +23800,40 @@ packages: license_family: MIT size: 484886 timestamp: 1769122183416 -- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda - sha256: a47271202f4518a484956968335b2521409c8173e123ab381e775c358c67fe6d - md5: 9ee58d5c534af06558933af3c845a780 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.1-h35e630c_1.conda + sha256: 44c877f8af015332a5d12f5ff0fb20ca32f896526a7d0cdb30c769df1144fb5c + md5: f61eb8cd60ff9057122a3d338b99c00f depends: - __glibc >=2.17,<3.0.a0 - ca-certificates - libgcc >=14 license: Apache-2.0 license_family: Apache - size: 3165399 - timestamp: 1762839186699 -- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.0-h230baf5_0.conda - sha256: 36fe9fb316be22fcfb46d5fa3e2e85eec5ef84f908b7745f68f768917235b2d5 - md5: 3f50cdf9a97d0280655758b735781096 + size: 3164551 + timestamp: 1769555830639 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.1-hb6871ef_1.conda + sha256: e02e5639b0e4d6d4fcf0f3b082642844fb5a37316f5b0a1126c6271347462e90 + md5: 30bb8d08b99b9a7600d39efb3559fff0 depends: - __osx >=10.13 - ca-certificates license: Apache-2.0 license_family: Apache - size: 2778996 - timestamp: 1762840724922 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda - sha256: ebe93dafcc09e099782fe3907485d4e1671296bc14f8c383cb6f3dfebb773988 - md5: b34dc4172653c13dcf453862f251af2b + size: 2777136 + timestamp: 1769557662405 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.1-hd24854e_1.conda + sha256: 361f5c5e60052abc12bdd1b50d7a1a43e6a6653aab99a2263bf2288d709dcf67 + md5: f4f6ad63f98f64191c3e77c5f5f29d76 depends: - __osx >=11.0 - ca-certificates license: Apache-2.0 license_family: Apache - size: 3108371 - timestamp: 1762839712322 -- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.0-h725018a_0.conda - sha256: 6d72d6f766293d4f2aa60c28c244c8efed6946c430814175f959ffe8cab899b3 - md5: 84f8fb4afd1157f59098f618cd2437e4 + size: 3104268 + timestamp: 1769556384749 +- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.6.1-hf411b9b_1.conda + sha256: 53a5ad2e5553b8157a91bb8aa375f78c5958f77cb80e9d2ce59471ea8e5c0bd6 + md5: eb585509b815415bc964b2c7e11c7eb3 depends: - ca-certificates - ucrt >=10.0.20348.0 @@ -22960,8 +23841,8 @@ packages: - vc14_runtime >=14.44.35208 license: Apache-2.0 license_family: Apache - size: 9440812 - timestamp: 1762841722179 + size: 9343023 + timestamp: 1769557547888 - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.2.1-hd747db4_0.conda sha256: 8d91d6398fc63a94d238e64e4983d38f6f9555460f11bed00abb2da04dbadf7c md5: ddab8b2af55b88d63469c040377bd37e @@ -23060,6 +23941,23 @@ packages: license_family: Apache size: 487454 timestamp: 1768248123539 +- conda: https://conda.anaconda.org/conda-forge/win-64/orc-2.2.2-h0a1ad0e_1.conda + sha256: dcfca3c3c117e9102fcfca116ec9e4f0bbcd0f13b3fce06ff111ae9f107d04b7 + md5: aa6701a960f0e94478229af1e061c237 + depends: + - libprotobuf >=6.33.5,<6.33.6.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.2,<1.3.0a0 + - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - zstd >=1.5.7,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + size: 1073185 + timestamp: 1770452512023 - conda: https://conda.anaconda.org/conda-forge/win-64/orc-2.2.2-hbd3206f_0.conda sha256: 86549f63b4b30764e70fd3edc2df4d69e17880b317afa9fa93318a83f9213807 md5: e20393ad8ebe534f3937e0a5da44e287 @@ -23157,15 +24055,15 @@ packages: license_family: BSD size: 14912799 timestamp: 1764615091147 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.0-py312h8ecdadd_0.conda - sha256: 729c74e74703ab8686ee3915fd3023b6c454d0d97c60ec2e5f5c537cdab5277a - md5: 2db19c9eb81049acf8108ccfbe5cc2ed +- conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-3.0.1-py312h8ecdadd_0.conda + sha256: 1fb54cec81ee950078d52ded35746ffd9d3db498321aae18277844fc95184fd9 + md5: c15e7f8dd2e407188a8b7c0790211206 depends: - python - numpy >=1.26.0 - python-dateutil >=2.8.2 - - __glibc >=2.17,<3.0.a0 - libgcc >=14 + - __glibc >=2.17,<3.0.a0 - libstdcxx >=14 - numpy >=1.23,<3 - python_abi 3.12.* *_cp312 @@ -23209,9 +24107,8 @@ packages: - xlsxwriter >=3.2.0 - zstandard >=0.23.0 license: BSD-3-Clause - license_family: BSD - size: 14819633 - timestamp: 1769076306074 + size: 14840286 + timestamp: 1771408991625 - conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-2.3.3-py313h2f264a9_1.conda sha256: 4fe8cb4e528e83f74e4f9f4277e4464eefcab2c93bb3b2509564bbb903597efa md5: edd7a9cfba45ab3073b594ec999a24fe @@ -23261,15 +24158,15 @@ packages: license_family: BSD size: 14330563 timestamp: 1759266231408 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-3.0.0-py312hc7bc305_0.conda - sha256: 1b8b71ae0ee36dc23d186be5925f8bfdc8eee6aa4bb44b86e06b76f5dd5d1f28 - md5: 5dea4dcec1af82256a2258c3917ef98a +- conda: https://conda.anaconda.org/conda-forge/osx-64/pandas-3.0.1-py312h8e27051_0.conda + sha256: 8012369964a169b661ee5a927a02260a9843bb0c286305acdb9d121677d7c812 + md5: a43287df8cca4a72127823c5d9ad9984 depends: - python - numpy >=1.26.0 - python-dateutil >=2.8.2 - - __osx >=10.13 - libcxx >=19 + - __osx >=11.0 - numpy >=1.23,<3 - python_abi 3.12.* *_cp312 constrains: @@ -23312,9 +24209,8 @@ packages: - xlsxwriter >=3.2.0 - zstandard >=0.23.0 license: BSD-3-Clause - license_family: BSD - size: 14115594 - timestamp: 1769076448005 + size: 14144098 + timestamp: 1771409084592 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-2.3.3-py313h7d16b84_2.conda sha256: 5bc16e74bed7abbdbcedd76e72549cd4f9fc513b95261934c8173be6b8b1022c md5: 03771a1c710d15974372ae791811bcde @@ -23365,9 +24261,9 @@ packages: license_family: BSD size: 13898998 timestamp: 1764615741354 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-3.0.0-py312hae6be28_0.conda - sha256: e77a102f752d66a4afbda7ba4746689ec3083723d5d6fc7d5af8ddef25ff5655 - md5: 2b38a1d070dff7f0f92641a5fa130e23 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pandas-3.0.1-py312hae6be28_0.conda + sha256: 8d60aa6d18ed26821cc36e6adf97e0e224af66c60b42d9b6eea8d98301a95cce + md5: 2e4cfbea8076d12d68aa87e8778ca1ce depends: - python - numpy >=1.26.0 @@ -23375,8 +24271,8 @@ packages: - __osx >=11.0 - python 3.12.* *_cpython - libcxx >=19 - - numpy >=1.23,<3 - python_abi 3.12.* *_cp312 + - numpy >=1.23,<3 constrains: - adbc-driver-postgresql >=1.2.0 - adbc-driver-sqlite >=1.2.0 @@ -23417,9 +24313,8 @@ packages: - xlsxwriter >=3.2.0 - zstandard >=0.23.0 license: BSD-3-Clause - license_family: BSD - size: 13876050 - timestamp: 1769076491884 + size: 13895708 + timestamp: 1771409075692 - conda: https://conda.anaconda.org/conda-forge/win-64/pandas-2.3.3-py313hc90dcd4_2.conda sha256: 807f77a7b6f3029a71ec0292db50ab540f764c7c250faf0802791f661ce18f6c md5: cbac92ffc6114c9660218136c65878b4 @@ -23470,9 +24365,9 @@ packages: license_family: BSD size: 13807691 timestamp: 1764615160918 -- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-3.0.0-py312h95189c4_0.conda - sha256: cf9409d6f3b82a966d62c6d25dac02cf7277887591ff98d5f80f44815acef084 - md5: 471867d1335d19294ff2b3391c4c7122 +- conda: https://conda.anaconda.org/conda-forge/win-64/pandas-3.0.1-py312h95189c4_0.conda + sha256: 37b00c754d787a0c67fbdc613d864b59d04ca05de775ab6db7da41a945b41d7e + md5: 5903912202f323d89021081c7695b467 depends: - python - numpy >=1.26.0 @@ -23523,23 +24418,22 @@ packages: - xlsxwriter >=3.2.0 - zstandard >=0.23.0 license: BSD-3-Clause - license_family: BSD - size: 13593024 - timestamp: 1769076331133 -- conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.28.1-hd8ed1ab_0.conda - sha256: 3fb0cb6f35acd669d77b83a789f9eb6ea1b7ecc4fc512f88fa2d132021ff48e4 - md5: 3236ebaa938b455d086f747f3541b57a + size: 13612144 + timestamp: 1771409001879 +- conda: https://conda.anaconda.org/conda-forge/noarch/pandera-0.29.0-hd8ed1ab_0.conda + sha256: 3f26f4d63fe5868ad27048f1d3762f8ad3eb714d8c1cf4576cf2a6e0ce25ce76 + md5: 11a5b7d9a1d1759dedfc6cf05c37d66a depends: - numpy >=1.24.4 - pandas >=2.1.1 - - pandera-base 0.28.1 pyhd8ed1ab_0 + - pandera-base 0.29.0 pyhd8ed1ab_0 license: MIT license_family: MIT - size: 7526 - timestamp: 1767937373518 -- conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.28.1-pyhd8ed1ab_0.conda - sha256: c6b5c489efea72519d1a0d2ee009f20d7e5039c07e1941b9939d738b2b8e411f - md5: 917e71a753611d7b7bb79baf46273c5a + size: 7793 + timestamp: 1769708299148 +- conda: https://conda.anaconda.org/conda-forge/noarch/pandera-base-0.29.0-pyhd8ed1ab_0.conda + sha256: 1625fa5484dc1f5833da49a59e730f82fcfc84e95ad92ee74af14981c339caa2 + md5: 36208e1c5c12f2aab4a312eff144713c depends: - packaging >=20.0 - pydantic @@ -23548,8 +24442,8 @@ packages: - typing_inspect >=0.6.0 license: MIT license_family: MIT - size: 170623 - timestamp: 1767937372518 + size: 172073 + timestamp: 1769708298146 - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f md5: 457c2c8c08e54905d6954e79cb5b5db9 @@ -23638,16 +24532,16 @@ packages: license: LGPL-2.1-or-later size: 454854 timestamp: 1751292618315 -- conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.5-pyhcf101f3_0.conda - sha256: 30de7b4d15fbe53ffe052feccde31223a236dae0495bab54ab2479de30b2990f - md5: a110716cdb11cf51482ff4000dc253d7 +- conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.6-pyhcf101f3_0.conda + sha256: 42b2d77ccea60752f3aa929a6413a7835aaacdbbde679f2f5870a744fa836b94 + md5: 97c1ce2fffa1209e7afb432810ec6e12 depends: - python >=3.10 - python license: MIT license_family: MIT - size: 81562 - timestamp: 1755974222274 + size: 82287 + timestamp: 1770676243987 - conda: https://conda.anaconda.org/conda-forge/noarch/partd-1.4.2-pyhd8ed1ab_0.conda sha256: 472fc587c63ec4f6eba0cc0b06008a6371e0a08a5986de3cf4e8024a47b4fe6c md5: 0badf9c54e24cecfb0ad2f99d680c163 @@ -23750,9 +24644,9 @@ packages: license_family: BSD size: 1040584 timestamp: 1745955875845 -- conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.46-h3402e2f_0.conda - sha256: 29c2ed44a8534d27faad96bdce16efe29c2788f556f4c5409d4ae8ae074681ec - md5: 889053e920d15353c2665fa6310d7a7a +- conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.47-hd2b5f0e_0.conda + sha256: 3e9e02174edf02cb4bcdd75668ad7b74b8061791a3bc8bdb8a52ae336761ba3e + md5: 77eaf2336f3ae749e712f63e36b0f0a1 depends: - bzip2 >=1.0.8,<2.0a0 - libzlib >=1.3.1,<2.0a0 @@ -23761,8 +24655,17 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - size: 1034703 - timestamp: 1756743085974 + size: 995992 + timestamp: 1763655708300 +- conda: https://conda.anaconda.org/conda-forge/noarch/petl-1.7.17-pyhd8ed1ab_0.conda + sha256: d339c53c4aa812fc53078e885740ee6c1b7e8c80165744810bbc2b48057114ee + md5: 4c2498dcda0d58cf25466e82f7287b32 + depends: + - python >=3.6 + license: MIT + license_family: MIT + size: 315640 + timestamp: 1752233037144 - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda sha256: 202af1de83b585d36445dc1fda94266697341994d1a3328fabde4989e1b3d07a md5: d0d408b1f18883a944376da5cf8101ea @@ -23772,174 +24675,174 @@ packages: license: ISC size: 53561 timestamp: 1733302019362 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.0-py312h50c33e8_0.conda - sha256: dc15482aadc863e2b65757b13a248971e832036bf5ccd2be48d02dfe4c1cf5e0 - md5: 923b06ad75b7acc888fa20a22dc397cd +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py312h50c33e8_0.conda + sha256: 782b6b578a0e61f6ef5cca5be993d902db775a2eb3d0328a3c4ff515858e7f2c + md5: c5eff3ada1a829f0bdb780dc4b62bbae depends: - python - - __glibc >=2.17,<3.0.a0 - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libjpeg-turbo >=3.1.2,<4.0a0 + - tk >=8.6.13,<8.7.0a0 + - libxcb >=1.17.0,<2.0a0 + - libwebp-base >=1.6.0,<2.0a0 - libfreetype >=2.14.1 - libfreetype6 >=2.14.1 - - tk >=8.6.13,<8.7.0a0 + - lcms2 >=2.18,<3.0a0 - python_abi 3.12.* *_cp312 - - libxcb >=1.17.0,<2.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 - libtiff >=4.7.1,<4.8.0a0 - - libjpeg-turbo >=3.1.2,<4.0a0 - - zlib-ng >=2.3.2,<2.4.0a0 - - lcms2 >=2.17,<3.0a0 - openjpeg >=2.5.4,<3.0a0 - - libwebp-base >=1.6.0,<2.0a0 license: HPND - size: 1029473 - timestamp: 1767353193448 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.0-py313h80991f8_0.conda - sha256: bdad1e21cadd64154c45fa554247dd672288ad51982ca7d54b3fab63e40938df - md5: 183fe6b9e99e5c2b464c1573ec78eac8 + size: 1029755 + timestamp: 1770794002406 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-12.1.1-py313h80991f8_0.conda + sha256: 50738b145a45db78ec12ffebf649127d53e1777166c5c3b006476890250ac265 + md5: 2d5ee4938cdde91a8967f3eea686c546 depends: - python - - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libgcc >=14 - tk >=8.6.13,<8.7.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 - python_abi 3.13.* *_cp313 - - libtiff >=4.7.1,<4.8.0a0 - - libjpeg-turbo >=3.1.2,<4.0a0 - - lcms2 >=2.17,<3.0a0 - - libxcb >=1.17.0,<2.0a0 - - zlib-ng >=2.3.2,<2.4.0a0 - libwebp-base >=1.6.0,<2.0a0 - openjpeg >=2.5.4,<3.0a0 + - libtiff >=4.7.1,<4.8.0a0 - libfreetype >=2.14.1 - libfreetype6 >=2.14.1 + - libjpeg-turbo >=3.1.2,<4.0a0 + - libxcb >=1.17.0,<2.0a0 + - lcms2 >=2.18,<3.0a0 license: HPND - size: 1043309 - timestamp: 1767353193450 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.0-py312h4985050_0.conda - sha256: ae49f74594eab749f3f78441f4c33a58ac710c813d3823b9a8862dddc1f0af28 - md5: 2cc7fe00971062013ccc3c6616665182 + size: 1043560 + timestamp: 1770794002407 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.1-py312h4985050_0.conda + sha256: a2a48fdaa95921c4178ae16f4663bdaa74a2c93bdf45c8221f328692bb2e083b + md5: b1fcc4538203c9c747879d3e461f2f74 depends: - python - __osx >=10.13 - - libxcb >=1.17.0,<2.0a0 - - openjpeg >=2.5.4,<3.0a0 - - libtiff >=4.7.1,<4.8.0a0 - - zlib-ng >=2.3.2,<2.4.0a0 - - python_abi 3.12.* *_cp312 - tk >=8.6.13,<8.7.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - libxcb >=1.17.0,<2.0a0 - libfreetype >=2.14.1 - libfreetype6 >=2.14.1 - - libwebp-base >=1.6.0,<2.0a0 - libjpeg-turbo >=3.1.2,<4.0a0 - - lcms2 >=2.17,<3.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - python_abi 3.12.* *_cp312 + - zlib-ng >=2.3.3,<2.4.0a0 + - lcms2 >=2.18,<3.0a0 + - openjpeg >=2.5.4,<3.0a0 license: HPND - size: 964428 - timestamp: 1767353261550 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.0-py313h16bb925_0.conda - sha256: 2e428848bde27506936329303144a889a9e168e797053e25943973d25560e9c7 - md5: bc8c5b5215ba393b44040e5cdb4b4a58 + size: 964529 + timestamp: 1770794115028 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-12.1.1-py313h16bb925_0.conda + sha256: ea91061c350114c996ce1dbdabe0916e4ac69cb85fad24c6057cf2d980ce4585 + md5: 48512b2603412e99b702dd177f991ffd depends: - python - __osx >=10.13 - libwebp-base >=1.6.0,<2.0a0 - - lcms2 >=2.17,<3.0a0 - libxcb >=1.17.0,<2.0a0 - - zlib-ng >=2.3.2,<2.4.0a0 + - libtiff >=4.7.1,<4.8.0a0 - libjpeg-turbo >=3.1.2,<4.0a0 - - tk >=8.6.13,<8.7.0a0 + - python_abi 3.13.* *_cp313 - libfreetype >=2.14.1 - libfreetype6 >=2.14.1 - - python_abi 3.13.* *_cp313 - - libtiff >=4.7.1,<4.8.0a0 + - lcms2 >=2.18,<3.0a0 + - tk >=8.6.13,<8.7.0a0 - openjpeg >=2.5.4,<3.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 license: HPND - size: 977098 - timestamp: 1767353261551 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.0-py312h4e908a4_0.conda - sha256: 8cf9e79ad0ba1206f716dd3f6ca9c48e2864882e0c514d1fe4dbfebe63f25ac0 - md5: d831c4844e7a04eab4aa91a2c26dbbdd + size: 977327 + timestamp: 1770794115029 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.1-py312h4e908a4_0.conda + sha256: 4729476631c025dfce555a5fd97f1b0b97e765e7c01aee5b7e59b880d8335006 + md5: 537e6079e50e219252d016254b0d2573 depends: - python - __osx >=11.0 - python 3.12.* *_cpython - - zlib-ng >=2.3.2,<2.4.0a0 - - python_abi 3.12.* *_cp312 - - tk >=8.6.13,<8.7.0a0 - libwebp-base >=1.6.0,<2.0a0 - openjpeg >=2.5.4,<3.0a0 - - lcms2 >=2.17,<3.0a0 - - libxcb >=1.17.0,<2.0a0 - - libtiff >=4.7.1,<4.8.0a0 - - libjpeg-turbo >=3.1.2,<4.0a0 - libfreetype >=2.14.1 - libfreetype6 >=2.14.1 + - python_abi 3.12.* *_cp312 + - libjpeg-turbo >=3.1.2,<4.0a0 + - tk >=8.6.13,<8.7.0a0 + - libxcb >=1.17.0,<2.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - lcms2 >=2.18,<3.0a0 license: HPND - size: 953450 - timestamp: 1767353279678 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.0-py313h45e5a15_0.conda - sha256: e5eaa7f00fca189848a0454303c56cc4edefd3e58a70bfd490d2cfe0d0aa525d - md5: 78a39731fd50dbd511de305934fe7e62 + size: 954096 + timestamp: 1770794152238 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-12.1.1-py313h45e5a15_0.conda + sha256: a9cd5dd2c96c9f1714bdbe32341f6e8318a751e7d6dfa446267335418b6a0932 + md5: a261959853e116b05a6c59e5944bf689 depends: - python - - __osx >=11.0 - python 3.13.* *_cp313 + - __osx >=11.0 + - zlib-ng >=2.3.3,<2.4.0a0 + - libfreetype >=2.14.1 + - libfreetype6 >=2.14.1 + - python_abi 3.13.* *_cp313 - libxcb >=1.17.0,<2.0a0 - - openjpeg >=2.5.4,<3.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 - libtiff >=4.7.1,<4.8.0a0 - - zlib-ng >=2.3.2,<2.4.0a0 - tk >=8.6.13,<8.7.0a0 - - libjpeg-turbo >=3.1.2,<4.0a0 - - python_abi 3.13.* *_cp313 - - lcms2 >=2.17,<3.0a0 - - libfreetype >=2.14.1 - - libfreetype6 >=2.14.1 + - openjpeg >=2.5.4,<3.0a0 + - lcms2 >=2.18,<3.0a0 - libwebp-base >=1.6.0,<2.0a0 license: HPND - size: 966296 - timestamp: 1767353279679 -- conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.1.0-py312h31f0997_0.conda - sha256: 5ad93e9f91e0e8863ca3f54a9dffe51633b41dc7f66e1d7debaec62f8d458f0a - md5: 2e481e979b46c223b3be6485113f7ad1 + size: 966809 + timestamp: 1770794152240 +- conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.1.1-py312h31f0997_0.conda + sha256: 8d6c865052fec14dcb90b6534393a52bac60e21479ae386db7aa4eced632022d + md5: 89bf6b6bc60f253ab85a0784417a2547 depends: - python - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - libwebp-base >=1.6.0,<2.0a0 + - openjpeg >=2.5.4,<3.0a0 + - python_abi 3.12.* *_cp312 + - lcms2 >=2.18,<3.0a0 - libxcb >=1.17.0,<2.0a0 - - libtiff >=4.7.1,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 + - tk >=8.6.13,<8.7.0a0 - libfreetype >=2.14.1 - libfreetype6 >=2.14.1 - - python_abi 3.12.* *_cp312 - - openjpeg >=2.5.4,<3.0a0 - - tk >=8.6.13,<8.7.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 - libjpeg-turbo >=3.1.2,<4.0a0 - - zlib-ng >=2.3.2,<2.4.0a0 - - lcms2 >=2.17,<3.0a0 license: HPND - size: 933613 - timestamp: 1767353195061 -- conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.1.0-py313h38f99e1_0.conda - sha256: 181b4d169e7a671c387427ceb398d931802adace8808836b44295b07c3484abd - md5: 1927a42726a4ca0e94d5e8cb94c7a06d + size: 933926 + timestamp: 1770794018420 +- conda: https://conda.anaconda.org/conda-forge/win-64/pillow-12.1.1-py313h38f99e1_0.conda + sha256: ee2384117c93c0386874ba526a12f60b8f2c700b7cb912e899c62f41927c1666 + md5: 41b079447f12baa3852549e1f3a072d2 depends: - python - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - lcms2 >=2.17,<3.0a0 - - libwebp-base >=1.6.0,<2.0a0 + - zlib-ng >=2.3.3,<2.4.0a0 + - libjpeg-turbo >=3.1.2,<4.0a0 - python_abi 3.13.* *_cp313 + - lcms2 >=2.18,<3.0a0 + - openjpeg >=2.5.4,<3.0a0 - libfreetype >=2.14.1 - libfreetype6 >=2.14.1 - - openjpeg >=2.5.4,<3.0a0 - - zlib-ng >=2.3.2,<2.4.0a0 - - libjpeg-turbo >=3.1.2,<4.0a0 - libtiff >=4.7.1,<4.8.0a0 + - libwebp-base >=1.6.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - tk >=8.6.13,<8.7.0a0 license: HPND - size: 946833 - timestamp: 1767353195062 + size: 946928 + timestamp: 1770794018420 - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda sha256: 43d37bc9ca3b257c5dd7bf76a8426addbdec381f6786ff441dc90b1a49143b6a md5: c01af13bdc553d1a8fbfff6e8db075f0 @@ -23986,16 +24889,16 @@ packages: license_family: MIT size: 542795 timestamp: 1754665193489 -- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.5.1-pyhcf101f3_0.conda - sha256: 04c64fb78c520e5c396b6e07bc9082735a5cc28175dbe23138201d0a9441800b - md5: 1bd2e65c8c7ef24f4639ae6e850dacc2 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.9.2-pyhcf101f3_0.conda + sha256: 7f263219cecf0ba6d74c751efa60c4676ce823157ca90aa43ebba5ac615ca0fa + md5: 4fefefb892ce9cc1539405bec2f1a6cd depends: - python >=3.10 - python license: MIT license_family: MIT - size: 23922 - timestamp: 1764950726246 + size: 25643 + timestamp: 1771233827084 - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-6.5.2-pyhd8ed1ab_0.conda sha256: 48d2caf66b8209bfb3fa160f5bc7cbd625deaa4826e8aa1bad706b2dd22bbb86 md5: 7702bcd70891dd0154d765a69e1afa94 @@ -24028,11 +24931,11 @@ packages: license_family: BSD size: 49052 timestamp: 1733239818090 -- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.37.1-pyh6a1acc5_0.conda - sha256: 06f66ea42ec3d2dd18a1529208e45e8d580b5d49bff7779166fb2ba24380c8d3 - md5: 1894d4373da653406c91e20ef89f05c8 +- conda: https://conda.anaconda.org/conda-forge/noarch/polars-1.38.1-pyh6a1acc5_0.conda + sha256: 66b1fcb302268a21a0dc818cf550d615b6e93e3d693bec612c7948231bb30489 + md5: b20de145c676cbae6138ac478cdb137b depends: - - polars-runtime-32 ==1.37.1 + - polars-runtime-32 ==1.38.1 - python >=3.10 - python constrains: @@ -24046,66 +24949,66 @@ packages: - pyiceberg >=0.7.1 - altair >=5.4.0 - great_tables >=0.8.0 - - polars-runtime-32 ==1.37.1 - - polars-runtime-64 ==1.37.1 - - polars-runtime-compat ==1.37.1 + - polars-runtime-32 ==1.38.1 + - polars-runtime-64 ==1.38.1 + - polars-runtime-compat ==1.38.1 license: MIT license_family: MIT - size: 524697 - timestamp: 1768304090323 -- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.37.1-py310hffdcd12_0.conda + size: 525771 + timestamp: 1770417396090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/polars-runtime-32-1.38.1-py310hffdcd12_0.conda noarch: python - sha256: 275a845cf713a33bc6634f6773541be16868b333222d8e200c7ecd1dbd07c218 - md5: 732a536c6ce768f096f5340121e10cc5 + sha256: cf48147429a4f993b0fb1d2376d238d62843341e3ad0a2b1a058fc6130efd16d + md5: b659a59ec7b67623dcaec02388e06fb9 depends: - python + - libgcc >=14 - __glibc >=2.17,<3.0.a0 - libstdcxx >=14 - - libgcc >=14 - _python_abi3_support 1.* - cpython >=3.10 constrains: - __glibc >=2.17 license: MIT license_family: MIT - size: 35782067 - timestamp: 1768304090321 -- conda: https://conda.anaconda.org/conda-forge/osx-64/polars-runtime-32-1.37.1-py310had17480_0.conda + size: 35483982 + timestamp: 1770417396088 +- conda: https://conda.anaconda.org/conda-forge/osx-64/polars-runtime-32-1.38.1-py310had17480_0.conda noarch: python - sha256: d1ef07dfe8647173d31165de5943be447d9da4b7a8956ebbd99b6dea2a3c1951 - md5: 75e808381cab0c33008317fd25ba8157 + sha256: 9d7f6dac11745003583e856d93680a29b1da5932e105ff1138834f2ff06282c5 + md5: b6c51fadf12a1ca2835f131982b5db14 depends: - python - - libcxx >=19 - __osx >=10.13 + - libcxx >=19 - _python_abi3_support 1.* - cpython >=3.10 constrains: - __osx >=10.13 license: MIT license_family: MIT - size: 35492736 - timestamp: 1768303924189 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-runtime-32-1.37.1-py310haaaf75b_0.conda + size: 35835548 + timestamp: 1770417330239 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/polars-runtime-32-1.38.1-py310haaaf75b_0.conda noarch: python - sha256: 1c79affdb6f0fcb466d1116ebeb56edb57510549f87351550a6f96f2211d5d2b - md5: bb3c5484e1c5376846e1b406fd63a3c4 + sha256: abeab194bdcb4b947bed8926d07b880af2fbd294d241508d28d0b410b2efa19d + md5: 91967c125f9649be40a973c1c4b1888c depends: - python - - __osx >=11.0 - libcxx >=19 + - __osx >=11.0 - _python_abi3_support 1.* - cpython >=3.10 constrains: - __osx >=11.0 license: MIT license_family: MIT - size: 32229626 - timestamp: 1768303983463 -- conda: https://conda.anaconda.org/conda-forge/win-64/polars-runtime-32-1.37.1-py310hca7251b_0.conda + size: 32501552 + timestamp: 1770417369386 +- conda: https://conda.anaconda.org/conda-forge/win-64/polars-runtime-32-1.38.1-py310hca7251b_0.conda noarch: python - sha256: 34db578b4bae3ec365ff846c1f01b2720ab01d202e4fc6826114070673e6aeb0 - md5: 910a4338c2ff9b850374c16fe081b1c3 + sha256: e3d66b5053af2fa908272ed9f14d7f0add401391ff4fc7bd6fa9854ae9068e21 + md5: b5cb5bc8ed2f9df48909637e7fca0aba depends: - python - vc >=14.3,<15 @@ -24115,8 +25018,8 @@ packages: - cpython >=3.10 license: MIT license_family: MIT - size: 39228824 - timestamp: 1768303964523 + size: 39451459 + timestamp: 1770417363447 - conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.7.1-pyhd8ed1ab_0.conda sha256: a20c139c372c911b9252f99297a07f2a4cdf336884754a006a09498593556ce0 md5: 153f1b172beb7f5df84a78b2bde02f24 @@ -24143,9 +25046,9 @@ packages: license_family: GPL size: 676989 timestamp: 1738446720491 -- conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.0-pyhd8ed1ab_0.conda - sha256: 2183e53108e730b097adff7bf2fbbe6fd5d3e18bb65a89122a3888169d601240 - md5: 3c806a133fb9e59dca249c5a00c2ab3e +- conda: https://conda.anaconda.org/conda-forge/noarch/powerplantmatching-0.8.1-pyhd8ed1ab_0.conda + sha256: f833d2a36115aa6fd3815394c876bee0bdd0ea850b843a0caeb2b153c37080e4 + md5: 3770774486c8b9e822c6bf996da18a25 depends: - country_converter - deprecation @@ -24155,7 +25058,7 @@ packages: - networkx >=1.10 - numpy - openpyxl - - pandas >=0.24.0 + - pandas >=0.24.0,<3 - pycountry - python >=3.10 - pyyaml >=5.1.0 @@ -24167,8 +25070,8 @@ packages: - xlrd license: MIT license_family: MIT - size: 689881 - timestamp: 1768392108996 + size: 670655 + timestamp: 1770848138584 - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.5.1-pyha770c72_0.conda sha256: 5b81b7516d4baf43d0c185896b245fa7384b25dc5615e7baa504b7fa4e07b706 md5: 7f3ac694319c7eaf81a0325d6405e974 @@ -24210,25 +25113,25 @@ packages: license_family: MIT size: 3240415 timestamp: 1754927975218 -- conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_2.conda - sha256: 1e93bf13f56b68cd16414353c97e92db4d38e17fc90146a6e9f1cd73251c775e - md5: beb1885cfdb793193bba83c9720d53b1 +- conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.7.1-he0df7b0_3.conda + sha256: c94d3d8ef40d1ea018860d66c416003bc03adede7d212efc9218bb64041fe2f7 + md5: 031e33ae075b336c0ce92b14efa886c5 depends: - sqlite - libtiff - libcurl - __glibc >=2.17,<3.0.a0 - - libstdcxx >=14 - libgcc >=14 + - libstdcxx >=14 + - libtiff >=4.7.1,<4.8.0a0 - libcurl >=8.18.0,<9.0a0 - libsqlite >=3.51.2,<4.0a0 - - libtiff >=4.7.1,<4.8.0a0 constrains: - proj4 ==999999999999 license: MIT license_family: MIT - size: 3593619 - timestamp: 1769194273352 + size: 3593669 + timestamp: 1770890751115 - conda: https://conda.anaconda.org/conda-forge/osx-64/proj-9.6.2-h8462e38_2.conda sha256: d3bad35930d6ddaef85881c0bc88a5cd5122a6efa4a8f6b645d4642053f172f7 md5: 00a64f7f9888ad6a05ff9766058c33cc @@ -24245,24 +25148,24 @@ packages: license_family: MIT size: 2914595 timestamp: 1754928086110 -- conda: https://conda.anaconda.org/conda-forge/osx-64/proj-9.7.1-h4aacef1_2.conda - sha256: 76efc2d9d359662246aa09b03ac52c25a6df1871a988a27fb13585af413aa4fd - md5: 2deeb48139ea69c6000e5f26296195fc +- conda: https://conda.anaconda.org/conda-forge/osx-64/proj-9.7.1-h4aacef1_3.conda + sha256: 848b0393f363ab49169d9a7d4dccef15cb4b34cbdbc6365240dd7e70bd602173 + md5: 86a72148f2ace31569279a41c903f1be depends: - sqlite - libtiff - libcurl - libcxx >=19 - __osx >=10.13 - - libsqlite >=3.51.2,<4.0a0 - libcurl >=8.18.0,<9.0a0 - libtiff >=4.7.1,<4.8.0a0 + - libsqlite >=3.51.2,<4.0a0 constrains: - proj4 ==999999999999 license: MIT license_family: MIT - size: 3235293 - timestamp: 1769194275134 + size: 3235372 + timestamp: 1770890768263 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.6.2-hdbeaa80_2.conda sha256: 75e4bfa1a2d2b46b7aa11e2293abfe664f5775f21785fb7e3d41226489687501 md5: e68d0d91e188ab134cb25675de82b479 @@ -24279,24 +25182,24 @@ packages: license_family: MIT size: 2787374 timestamp: 1754927844772 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.7.1-hfb14a63_2.conda - sha256: dd8d0a63500963d7413b5406bfd12bc9370fe6206dccc2b2d6fec99a04745f83 - md5: 7515b2df0846e534a2096dff3ae6f11e +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.7.1-hfb14a63_3.conda + sha256: 14484430a32a13cb9c03ebf3084a4ffb1feb417aa4c23907844fba219924058f + md5: 8f33a4a2b856de0e8f006c489beca62a depends: - sqlite - libtiff - libcurl - __osx >=11.0 - libcxx >=19 - - libtiff >=4.7.1,<4.8.0a0 - libsqlite >=3.51.2,<4.0a0 - libcurl >=8.18.0,<9.0a0 + - libtiff >=4.7.1,<4.8.0a0 constrains: - proj4 ==999999999999 license: MIT license_family: MIT - size: 3098177 - timestamp: 1769194308892 + size: 3098262 + timestamp: 1770890778843 - conda: https://conda.anaconda.org/conda-forge/win-64/proj-9.6.2-h7990399_2.conda sha256: e798e9bd658f6c00cfac0d8573c7fe97d9ebad5966c96c23e0702f44e51905bb md5: 6e0e8fcc3eb2c1418d663005bf040d8d @@ -24314,9 +25217,9 @@ packages: license_family: MIT size: 2788230 timestamp: 1754928361098 -- conda: https://conda.anaconda.org/conda-forge/win-64/proj-9.7.1-hd30e2cd_2.conda - sha256: 81b19db0e1b1f3812ea32ef1afe74608df778a42540600a4a8d73a2fcf49268a - md5: 0a127152bc983e99981b50d44ac4a092 +- conda: https://conda.anaconda.org/conda-forge/win-64/proj-9.7.1-hd30e2cd_3.conda + sha256: 8ff06eae963bdc7580ccb246df911614e9a5a23683b26326df76b1b6f3258e94 + md5: f2b0478a02d35bac5b872d4d63b96be3 depends: - sqlite - libtiff @@ -24324,15 +25227,15 @@ packages: - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 - - libcurl >=8.18.0,<9.0a0 - - libtiff >=4.7.1,<4.8.0a0 - libsqlite >=3.51.2,<4.0a0 + - libtiff >=4.7.1,<4.8.0a0 + - libcurl >=8.18.0,<9.0a0 constrains: - proj4 ==999999999999 license: MIT license_family: MIT - size: 3084258 - timestamp: 1769194305364 + size: 3084268 + timestamp: 1770890802564 - conda: https://conda.anaconda.org/conda-forge/linux-64/prometheus-cpp-1.3.0-ha5d0236_0.conda sha256: 013669433eb447548f21c3c6b16b2ed64356f726b5f77c1b39d5ba17a8a4b8bc md5: a83f6a2fdc079e643237887a37460668 @@ -24499,16 +25402,16 @@ packages: license_family: APACHE size: 50309 timestamp: 1744525393617 -- conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.0-pyhd8ed1ab_0.conda - sha256: cd703393ac925c2cbb79c58d141552d5135b106b53ce2201982284f104b4f86a - md5: 1099a038989e7f4037d3ce21e8ee9f2c +- conda: https://conda.anaconda.org/conda-forge/noarch/proto-plus-1.27.1-pyhd8ed1ab_0.conda + sha256: 0d91d1687ed442f9b8ffd6792cf3127529a088e020fac7915e0c40cc23be3037 + md5: c9b8e02d974817913ab94dae12c7340b depends: - protobuf >=3.19.0,<7.0.0 - python >=3.10 license: Apache-2.0 license_family: APACHE - size: 43122 - timestamp: 1765906462817 + size: 43555 + timestamp: 1770104240191 - conda: https://conda.anaconda.org/conda-forge/linux-64/protobuf-6.31.1-py312hb8af0ac_2.conda sha256: 9c1dffa6371b5ae5a7659f08fa075a1a9d7b32fd11d5eaa1e7192eba4cae1207 md5: 2aaf8d6c729beb30d1b41964e7fb2cd6 @@ -24615,22 +25518,6 @@ packages: license_family: BSD size: 466966 timestamp: 1760394256563 -- conda: https://conda.anaconda.org/conda-forge/win-64/protobuf-6.31.1-py312hcb3287e_2.conda - sha256: 80fa7505b8d586b6913ff614fda7b42f724c6f1b0a46354d11f0b94ad3131243 - md5: 989246a50fed28bc6743d77805f6cc95 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - constrains: - - libprotobuf 6.31.1 - license: BSD-3-Clause - license_family: BSD - size: 480805 - timestamp: 1760394064571 - conda: https://conda.anaconda.org/conda-forge/win-64/protobuf-6.31.1-py313h16c7a9f_2.conda sha256: 79def1fb4d06dd87b4b0e87ce3ddc94b6c409c47c8b6ca857759ee914bdb5e4f md5: 953e1ca4332163060b47d16c5a660419 @@ -24647,55 +25534,71 @@ packages: license_family: BSD size: 488925 timestamp: 1760393699916 -- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.1-py312h5253ce2_0.conda - sha256: 4731e0ae556397c2666c773c409735197fed33cdb133d2419f01430aeb687278 - md5: ff09ba570ce66446db523ea21c12b765 +- conda: https://conda.anaconda.org/conda-forge/win-64/protobuf-6.33.5-py312hcb3287e_0.conda + sha256: 5813d27ef61262ffa813cc1a17e35c285970b95f80df11b3df0b3cf448abdf56 + md5: 11afda069f0748e5d7206a50c13a2584 + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - ucrt >=10.0.20348.0 + - vc >=14.3 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + constrains: + - libprotobuf 6.33.5 + license: BSD-3-Clause + license_family: BSD + size: 489012 + timestamp: 1769756226269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py312h5253ce2_0.conda + sha256: d834fd656133c9e4eaf63ffe9a117c7d0917d86d89f7d64073f4e3a0020bd8a7 + md5: dd94c506b119130aef5a9382aed648e7 depends: - python - - __glibc >=2.17,<3.0.a0 - libgcc >=14 + - __glibc >=2.17,<3.0.a0 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 222353 - timestamp: 1767012395507 -- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.1-py313h54dd161_0.conda - sha256: 8a5f773e22ccd08fbda57c92f1d094533474db75f70db35311912cdcdb2f18ad - md5: d362949a1ed1ad4693b3928ad1d32c93 + size: 225545 + timestamp: 1769678155334 +- conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-7.2.2-py313h54dd161_0.conda + sha256: f19fd682d874689dfde20bf46d7ec1a28084af34583e0405685981363af47c91 + md5: 25fe6e02c2083497b3239e21b49d8093 depends: - python - - libgcc >=14 - __glibc >=2.17,<3.0.a0 + - libgcc >=14 - python_abi 3.13.* *_cp313 license: BSD-3-Clause license_family: BSD - size: 225429 - timestamp: 1767012386804 -- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.1-py312hf7082af_0.conda - sha256: 5af96e184ddff68c96bfd7b9333e05d0bbcf5bfbac3a33b742ce582cd0608b33 - md5: 15f4c2db60fbc6b770b69319861cfc2b + size: 228663 + timestamp: 1769678153829 +- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.2-py312hf7082af_0.conda + sha256: 517c17b24349476535db4da7d1cd31538dadf2c77f9f7f7d8be6b7dc5dfbb636 + md5: 1fd947fae149960538fc941b8f122bc1 depends: - python - __osx >=10.13 - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 233850 - timestamp: 1767012478963 -- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.1-py313h16366db_0.conda - sha256: a5d6b24de6037f86d812f8acfc11ffe34fc197540f97ae22bbb31b2a69c82bc8 - md5: f68fdb0d312980f39abaf084b6747b67 + size: 236338 + timestamp: 1769678402626 +- conda: https://conda.anaconda.org/conda-forge/osx-64/psutil-7.2.2-py313h16366db_0.conda + sha256: b50a9d64aabd30c05e405cc1166f21fd7dee8d1b42ef38116701883d3bd4d5fa + md5: c8185e1891ace76e565b4c28dd50ed5d depends: - python - __osx >=10.13 - python_abi 3.13.* *_cp313 license: BSD-3-Clause license_family: BSD - size: 237343 - timestamp: 1767012509075 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.1-py312hb3ab3e3_0.conda - sha256: bf67f8107e06f9414c387fc149bbae58b596e4620fcf2643c3efd6b07e0cce4d - md5: 3cc4a5c8e49c40441f03dab773f2bc28 + size: 239894 + timestamp: 1769678319684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py312hb3ab3e3_0.conda + sha256: 6d0e21c76436374635c074208cfeee62a94d3c37d0527ad67fd8a7615e546a05 + md5: fd856899666759403b3c16dcba2f56ff depends: - python - __osx >=11.0 @@ -24703,23 +25606,23 @@ packages: - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 235288 - timestamp: 1767012551069 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.1-py313h6688731_0.conda - sha256: 2abd12a0371836075a72e12fde44f63ea08b3781e5b6ec997233d50b9c9832d9 - md5: c3a1b24571871fec4498a0226a3c22c1 + size: 239031 + timestamp: 1769678393511 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/psutil-7.2.2-py313h6688731_0.conda + sha256: 1d2a6039fb71d61134b1d6816202529f2f6286c83b59bc1491fd288f5c08046e + md5: ba2d89e51a855963c767648f44c03871 depends: - python - - python 3.13.* *_cp313 - __osx >=11.0 + - python 3.13.* *_cp313 - python_abi 3.13.* *_cp313 license: BSD-3-Clause license_family: BSD - size: 238851 - timestamp: 1767012473931 -- conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.2.1-py312he5662c2_0.conda - sha256: cda67d235498657689953fecb614c00dc62412c1fd97d61ec76785ad719e48d0 - md5: 42ac55610af0bf0ae2a55c0f019c9e84 + size: 242596 + timestamp: 1769678288893 +- conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.2.2-py312he5662c2_0.conda + sha256: edffc84c001a05b996b5f8607c8164432754e86ec9224e831cd00ebabdec04e7 + md5: a2724c93b745fc7861948eb8b9f6679a depends: - python - vc >=14.3,<15 @@ -24728,11 +25631,11 @@ packages: - python_abi 3.12.* *_cp312 license: BSD-3-Clause license_family: BSD - size: 239389 - timestamp: 1767012412860 -- conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.2.1-py313h5fd188c_0.conda - sha256: 025574efd6e9d5b90d89ec1da8423132ab9c6131e21be7ec91b9fd7a14665a57 - md5: 8732097a02c66f6b260dd15b705a014e + size: 242769 + timestamp: 1769678170631 +- conda: https://conda.anaconda.org/conda-forge/win-64/psutil-7.2.2-py313h5fd188c_0.conda + sha256: 3ec3373748f83069bef93b540de416e637ee30231b222d5df8f712e93f2f9195 + md5: 761b299a6289c77459defea3563f8fc0 depends: - python - vc >=14.3,<15 @@ -24741,8 +25644,8 @@ packages: - python_abi 3.13.* *_cp313 license: BSD-3-Clause license_family: BSD - size: 243141 - timestamp: 1767012395730 + size: 246062 + timestamp: 1769678176886 - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 md5: b3c17d95b5a10c6e64a21fa17573e70e @@ -24857,21 +25760,21 @@ packages: license_family: MIT size: 25766 timestamp: 1733236452235 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-21.0.0-py312h7900ff3_2.conda - sha256: 4d893ba77c7336dbaec151e0f52c9f05fcbb09dfa00ac6f43f82c5c5633a106f - md5: 241814d8c6e1ad73a9bcfbee522a09c9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-21.0.0-py312h7900ff3_3.conda + sha256: f7874f2b9157def874c0d7c69c64876e698de22c728b3a8b27b143bfe986eaf7 + md5: 17cade9505f6782f9df648844d07f23a depends: - libarrow-acero 21.0.0.* - libarrow-dataset 21.0.0.* - libarrow-substrait 21.0.0.* - libparquet 21.0.0.* - - pyarrow-core 21.0.0 *_2_* + - pyarrow-core 21.0.0 *_3_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 33109 - timestamp: 1768953641044 + size: 33391 + timestamp: 1770649947337 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-23.0.0-py313h78bf25f_0.conda sha256: 43636b4ce58c57f3aeab182238b47cb8b860d2cc0544c184612c15ee294be154 md5: a6e89cb214f318db9548b791ba27f862 @@ -24884,23 +25787,24 @@ packages: - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 license: Apache-2.0 + license_family: APACHE size: 27332 timestamp: 1769291558903 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-21.0.0-py312hb401068_2.conda - sha256: 5c3f942bd04e3cfcf140e7055e8eb406526fe59b5e5cb22c94c046b3e8c61bbf - md5: b076cee5584c2dfb129e895ceed87510 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-21.0.0-py312hb401068_3.conda + sha256: a765b006165f51833fdf0ae228b085e4c68ae20b492e7b47bd927ecdb370c08c + md5: 663118ba01872e23d71eb17b8e617168 depends: - libarrow-acero 21.0.0.* - libarrow-dataset 21.0.0.* - libarrow-substrait 21.0.0.* - libparquet 21.0.0.* - - pyarrow-core 21.0.0 *_2_* + - pyarrow-core 21.0.0 *_3_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 33132 - timestamp: 1768953470507 + size: 33389 + timestamp: 1770650434937 - conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-23.0.0-py313habf4b1d_0.conda sha256: f7be5632510f97483e89e296d2929006fb3b741cffa89a872a09a09cedd3bb97 md5: 5a1b0ff8d04d3343edda66e26425523a @@ -24913,23 +25817,24 @@ packages: - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 license: Apache-2.0 + license_family: APACHE size: 27296 timestamp: 1769291600131 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-21.0.0-py312h1f38498_2.conda - sha256: 190d96af195924af47b642d43b3bf0457fa12aeade1040c9c17b7c1b3603741e - md5: 0e7471762c1570ad7b126dd9fba37aaa +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-21.0.0-py312h1f38498_3.conda + sha256: a357a6646043c7ebc51d233ab7b46a69874f5ce5aa6ee8412ac734f9abe5c0ea + md5: e86d99f7ece7a3c34dad3e3e3c357500 depends: - libarrow-acero 21.0.0.* - libarrow-dataset 21.0.0.* - libarrow-substrait 21.0.0.* - libparquet 21.0.0.* - - pyarrow-core 21.0.0 *_2_* + - pyarrow-core 21.0.0 *_3_* - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: APACHE - size: 33220 - timestamp: 1768953880408 + size: 33429 + timestamp: 1770650291141 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-23.0.0-py313h39782a4_0.conda sha256: 9af37dec78650b05f6dd71d59253ad6d698ec13bd306e3297647220cbbac3185 md5: fc6e7ad12d5282ee9388a77857efb7d9 @@ -24942,22 +25847,9 @@ packages: - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 license: Apache-2.0 + license_family: APACHE size: 27364 timestamp: 1769291809290 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-23.0.0-py312h2e8e312_0.conda - sha256: c77b31c6adad7b1919c2e7f4b9e6257a1effc8613b17a540237f9fac0d5c2dfc - md5: e1519e126722ddb9406bb63a9393b59c - depends: - - libarrow-acero 23.0.0.* - - libarrow-dataset 23.0.0.* - - libarrow-substrait 23.0.0.* - - libparquet 23.0.0.* - - pyarrow-core 23.0.0 *_0_* - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - size: 27620 - timestamp: 1769291986767 - conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-23.0.0-py313hfa70ccb_0.conda sha256: 81c6b479098eca295fa3dec6a55e4bc3a25ea2851a3a73b78d9ed2eabe10bdd2 md5: 8b80b54f9b732e3165cedad435dc70ab @@ -24970,12 +25862,28 @@ packages: - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 license: Apache-2.0 + license_family: APACHE size: 27654 timestamp: 1769292053888 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-21.0.0-py312hc195796_2_cpu.conda - build_number: 2 - sha256: fef0d26750990fbaef037065b69cc5069ef9f685de120d98d21b4c0837a3cf5e - md5: 874bd731c27c0b0428fd90fde2ca9a0d +- conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-23.0.1-py312h2e8e312_0.conda + sha256: a38a2c1478e0f2e557449dfe04e431609378b9cb1caeb509dbdc36ca7239ca46 + md5: 35a0bf970ae94226283f081608aa300b + depends: + - libarrow-acero 23.0.1.* + - libarrow-dataset 23.0.1.* + - libarrow-substrait 23.0.1.* + - libparquet 23.0.1.* + - pyarrow-core 23.0.1 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 28986 + timestamp: 1771307398563 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-21.0.0-py312hc195796_3_cpu.conda + build_number: 3 + sha256: 971bda6454d8a8a0eba51bf5d4ad218706e3be9fd8f1449d60cacf401dbf53b8 + md5: 4093c96a1b3b192e811543e57a1a347d depends: - __glibc >=2.17,<3.0.a0 - libarrow 21.0.0.* *cpu @@ -24986,34 +25894,35 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - numpy >=1.21,<3 + - numpy >=1.23,<3 - apache-arrow-proc * cpu license: Apache-2.0 license_family: APACHE - size: 4737351 - timestamp: 1768953380858 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.0-py313he109ebe_0_cpu.conda - sha256: 1914b79fe640a60b7ab240d90548f601c43513ef39bc6bc8517d73f259acfce1 - md5: 9120bf253ebbdb0015069b9a25cf4d36 + size: 4708748 + timestamp: 1770649937127 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-23.0.0-py313hfe0801a_0_cuda.conda + sha256: c81a348c58cdda73b0aefd02b150517f3ad06f9de1d3c2e0b2cce74222d8b973 + md5: c9ab081186dd0163e75bebaa77fde5ae depends: - __glibc >=2.17,<3.0.a0 - - libarrow 23.0.0.* *cpu - - libarrow-compute 23.0.0.* *cpu + - libarrow 23.0.0.* *cuda + - libarrow-compute 23.0.0.* *cuda - libgcc >=14 - libstdcxx >=14 - libzlib >=1.3.1,<2.0a0 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 constrains: - - numpy >=1.21,<3 - - apache-arrow-proc * cpu + - apache-arrow-proc * cuda + - numpy >=1.23,<3 license: Apache-2.0 - size: 4751647 - timestamp: 1769291378117 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-21.0.0-py312h46fdf74_2_cpu.conda - build_number: 2 - sha256: 7f876486924817a201800610c207c888fa362be2488d0efdd9d40f1febb0fdf4 - md5: cf288660c9610c04d1fcb6839086d6fc + license_family: APACHE + size: 5360819 + timestamp: 1770672703813 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-21.0.0-py312h46fdf74_3_cpu.conda + build_number: 3 + sha256: a479e8e6c43866e1ac247718ea49423b85fc6953c32895a7ae0d95743c214eee + md5: bc3ec64f406a65e66c49c291a7dd763b depends: - __osx >=10.13 - libarrow 21.0.0.* *cpu @@ -25023,15 +25932,15 @@ packages: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 constrains: - - numpy >=1.21,<3 - apache-arrow-proc * cpu + - numpy >=1.23,<3 license: Apache-2.0 license_family: APACHE - size: 3986602 - timestamp: 1768953431734 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-23.0.0-py313h7c712a9_0_cpu.conda - sha256: f6ec4f8de08c0212501675555954a8f5f203d63cdd4eca2f034541619bb7fbb5 - md5: 8c51b7be069b1faa48981caa133f440b + size: 4343661 + timestamp: 1770650313474 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyarrow-core-23.0.0-py313h83f9c1b_0_cpu.conda + sha256: 2a3f8241a63f3a542fe977a122898d551a18c49be3c8fdae9f3e95ea2c55a149 + md5: 79cb6380e69848540ca3f42460900880 depends: - __osx >=10.13 - libarrow 23.0.0.* *cpu @@ -25042,14 +25951,15 @@ packages: - python_abi 3.13.* *_cp313 constrains: - apache-arrow-proc * cpu - - numpy >=1.21,<3 + - numpy >=1.23,<3 license: Apache-2.0 - size: 4423383 - timestamp: 1769291556104 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-21.0.0-py312hae6ed00_2_cpu.conda - build_number: 2 - sha256: 8b3405a382c983f7da6ad053b99bfdc71f9afe8dbad8f9af40e05008c278c3cf - md5: aaaa33f438db56f58e2b06470bf4415f + license_family: APACHE + size: 4429445 + timestamp: 1770673095365 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-21.0.0-py312hae6ed00_3_cpu.conda + build_number: 3 + sha256: 4cddca7233d23e8898813d897472549436ccab451155fa616f853778511a3525 + md5: e4f490b2024c9f1813d3019bd90e95bd depends: - __osx >=11.0 - libarrow 21.0.0.* *cpu @@ -25060,15 +25970,15 @@ packages: - python >=3.12,<3.13.0a0 *_cpython - python_abi 3.12.* *_cp312 constrains: + - numpy >=1.23,<3 - apache-arrow-proc * cpu - - numpy >=1.21,<3 license: Apache-2.0 license_family: APACHE - size: 4165275 - timestamp: 1768953839878 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.0-py313hfb690af_0_cpu.conda - sha256: 59f1452c5274f5bef0872ddacaf1c4891c0a7a0d1f51de4342b0fc637a456eca - md5: 17395366e9516f9663f0c1a9342feb2a + size: 4207799 + timestamp: 1770650247020 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyarrow-core-23.0.0-py313h23b330d_0_cpu.conda + sha256: 97287878797287756344e39204c2081d396ce785c25eac7965deb0d3501d1b26 + md5: d12ac9817b6da9d02fdece0f0170f1fd depends: - __osx >=11.0 - libarrow 23.0.0.* *cpu @@ -25079,47 +25989,51 @@ packages: - python >=3.13,<3.14.0a0 *_cp313 - python_abi 3.13.* *_cp313 constrains: + - numpy >=1.23,<3 - apache-arrow-proc * cpu - - numpy >=1.21,<3 license: Apache-2.0 - size: 3895121 - timestamp: 1769291764471 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-23.0.0-py312h85419b5_0_cpu.conda - sha256: 2cc38a12d517c57204a3af60ca72ed9cb98250e4b98dec4feb8fe5076ac9fb60 - md5: f72dc289f49117c9bf697dffd7174286 + license_family: APACHE + size: 4252936 + timestamp: 1770673215210 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-23.0.0-py313h5921983_0_cpu.conda + sha256: d73caf8cf1f46d455402bfc2cf0fd2df6a6708f8c5ba801adee7d3b48a05d88c + md5: 21e4e6043a16516491070395dcb716e1 depends: - libarrow 23.0.0.* *cpu - libarrow-compute 23.0.0.* *cpu - libzlib >=1.3.1,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 constrains: - - numpy >=1.21,<3 - apache-arrow-proc * cpu + - numpy >=1.21,<3 license: Apache-2.0 - size: 3557733 - timestamp: 1769291505775 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-23.0.0-py313h5921983_0_cpu.conda - sha256: d73caf8cf1f46d455402bfc2cf0fd2df6a6708f8c5ba801adee7d3b48a05d88c - md5: 21e4e6043a16516491070395dcb716e1 + license_family: APACHE + size: 3571913 + timestamp: 1769291508255 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyarrow-core-23.0.1-py312h12c7521_0_cpu.conda + sha256: 617bfc043a1994a6b1ad17aa67411c6bd92fc1bc474c5f3c6e6dd8c32f84be24 + md5: 57a03f6ba3866b0fa13bee3d0ae7aed8 depends: - - libarrow 23.0.0.* *cpu - - libarrow-compute 23.0.0.* *cpu + - libarrow 23.0.1.* *cpu + - libarrow-compute 23.0.1.* *cpu - libzlib >=1.3.1,<2.0a0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 constrains: + - numpy >=1.23,<3 + - libprotobuf >=6.33.5 - apache-arrow-proc * cpu - - numpy >=1.21,<3 license: Apache-2.0 - size: 3571913 - timestamp: 1769291508255 + license_family: APACHE + size: 3573854 + timestamp: 1771307365258 - conda: https://conda.anaconda.org/conda-forge/noarch/pyasn1-0.6.2-pyhd8ed1ab_0.conda sha256: 2b6e22e97af814153c0a993ea66811de9db05b2a6946dcb97a3953af13c33a80 md5: c203d401759f448f9e792974e055bcdc @@ -25293,6 +26207,26 @@ packages: license_family: Apache size: 4796214 timestamp: 1738346682233 +- conda: https://conda.anaconda.org/conda-forge/noarch/pydeflate-2.3.4-pyhcf101f3_1.conda + sha256: 2bc013e9116af7f8bc76f57a0f37c02680c6c12003bc15d99735d78937061f5c + md5: 02e7ccf24972a1637c0de86e08a169b3 + depends: + - python >=3.11 + - hdx-python-country >=3.9.8 + - imf-reader >=1.4.1 + - oda-reader >=1.3.0 + - pandas >=2.0,<3.0 + - pandera >=0.20.0 + - pyarrow >=14.0 + - requests >=2.32.5 + - wbgapi >=1.0.12 + - platformdirs >=3.0.0 + - filelock >=3.15.0 + - python + license: MIT + license_family: MIT + size: 46177 + timestamp: 1770991277604 - conda: https://conda.anaconda.org/conda-forge/noarch/pydot-4.0.1-pyhcf101f3_2.conda sha256: af7213a8ca077895e7e10c8f33d5de3436b8a26828422e8a113cc59c9277a3e2 md5: 15f6d0866b0997c5302fc230a566bc72 @@ -25314,17 +26248,17 @@ packages: license_family: BSD size: 889287 timestamp: 1750615908735 -- conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.10.1-pyhd8ed1ab_0.conda - sha256: 158d8911e873e2a339c27768933747bf9c2aec1caa038f1b7b38a011734a956f - md5: 84c5c40ea7c5bbc6243556e5daed20e7 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyjwt-2.11.0-pyhd8ed1ab_0.conda + sha256: ac605d7fa239f78c508b47f2a0763236eef8d52b53852b84d784b598f92a1573 + md5: f9517d2fe1501919d7a236aba73409bb depends: - - python >=3.9 + - python >=3.10 constrains: - cryptography >=3.4.0 license: MIT license_family: MIT - size: 25093 - timestamp: 1732782523102 + size: 30144 + timestamp: 1769858771741 - conda: https://conda.anaconda.org/conda-forge/noarch/pylint-4.0.4-pyhcf101f3_0.conda sha256: ad0bb78785ab385d0afcca4a55e0226d8e6710ebad6450caa552f5fe61c2f6a0 md5: 3a830511a81b99b67a1206a9d29b44b3 @@ -25507,11 +26441,11 @@ packages: license_family: MIT size: 832234 timestamp: 1746735147143 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyogrio-0.11.1-py313h0dbd5a6_1.conda - sha256: 0c37a6adf7f04180911bf46e676ca8ee0eefb5b3be76e872fd6854b953467e15 - md5: 7d1eaf4ed949aeb268394cf2857e20b5 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyogrio-0.12.1-py313h8b19803_0.conda + sha256: 48fd958bdc15a280c4fbf764aea0767f8bb6ac61951567a39bed9d86290e51b9 + md5: 6cfe8b00a3bd2a29e46c062063d3c575 depends: - - libgdal-core >=3.11.3,<3.12.0a0 + - libgdal-core >=3.12.0,<3.13.0a0 - numpy - packaging - python >=3.13,<3.14.0a0 @@ -25521,8 +26455,8 @@ packages: - vc14_runtime >=14.44.35208 license: MIT license_family: MIT - size: 817932 - timestamp: 1756824550436 + size: 886220 + timestamp: 1764402582887 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyomo-6.9.5-py312h1289d80_0.conda sha256: cd9fe50d0ca53d8ee4f11450879a535aff75dffe37536d886f395a5c8732ed39 md5: 14653b1832d3fe7f51942e60ff2a5b00 @@ -25663,6 +26597,16 @@ packages: license_family: MIT size: 110893 timestamp: 1769003998136 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyphonetics-0.5.3-pyhd8ed1ab_1.conda + sha256: 65ebe8b94b2f45df883d21e57e915f398e8cabd5d6ef39f12d5e2d872697e3e3 + md5: 0f690c1b906722bf6652bf532e3ee8a5 + depends: + - python >=3.9 + - unidecode >=1,<2 + license: MIT + license_family: MIT + size: 14077 + timestamp: 1735402116400 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyproj-3.7.2-py312h1c88c49_1.conda sha256: e0ca1d99228f96ba872d6a4085dfd337513dd24ee3a25f0997d985ae97d7d632 md5: df6837caa76c161b682c27042a851cfb @@ -25802,20 +26746,20 @@ packages: license_family: MIT size: 220834 timestamp: 1762426425913 -- conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.0.7-pyhd8ed1ab_0.conda - sha256: 6174a3b8fc5ff409e5b0f88eef9ba2b089f2fd9a8ba2d425b19c8ff546042e43 - md5: e451a3c0ab3ad6fbe7bf83c59f0e2f9b +- conda: https://conda.anaconda.org/conda-forge/noarch/pypsa-1.1.0-pyhd8ed1ab_0.conda + sha256: 588cea0e858a33690f4d5aaa634b9d52e5cf84934d8b13d6d3911618cbc4dbb7 + md5: d5c919eb3a7124b47dff09883443aed2 depends: - deprecation - geopandas >=0.9 - highspy - levenshtein >=0.27.1 - - linopy >=0.5.5 + - linopy >=0.6.1 - matplotlib-base - netcdf4 !=1.7.4 - networkx >=2 - numpy - - pandas >=0.24 + - pandas >=2.0 - plotly - pydeck >=0.6 - pytables @@ -25827,8 +26771,8 @@ packages: - xarray license: MIT license_family: MIT - size: 222295 - timestamp: 1768392650051 + size: 241956 + timestamp: 1771401095410 - conda: https://conda.anaconda.org/conda-forge/win-64/pyreadline3-3.5.4-py313hfa70ccb_2.conda sha256: 2476c4e9edf2b381096309517b0d3effe3a2b9fef6fc410443792f47b23b79da md5: 6fe4ba7aafe65b6dd9f3bbce6b0e552d @@ -25839,65 +26783,69 @@ packages: license_family: BSD size: 171632 timestamp: 1756887863806 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyscipopt-5.6.0-py313h7033f15_1.conda - sha256: 5a0ffd6438b00a54d854559b9afdaeeb1e479aa6cda58b9800b147c499cc6d4a - md5: d2e8b402c691b8dd1233b1f7fb53c9ad +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyscipopt-6.1.0-np2py313h73dcb5b_0.conda + sha256: 6f641fc54dfcd4ba5b86f8d2847072a1d4cb342d98f036876c132210cbc4514d + md5: ddb2f8a6e10340cbab3606896c69d537 depends: + - python + - numpy >=1.16.0 - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libstdcxx >=14 - - numpy >=1.16.0 - - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 - - scip >=9.2.3,<10.0a0 + - numpy >=1.23,<3 + - scip >=10.0.0,<11.0a0 license: MIT license_family: MIT - size: 918194 - timestamp: 1756568553327 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyscipopt-5.6.0-py313h253db18_1.conda - sha256: 7533cd105625163f07a77a61fcbff37c836116310593d4fef55dc700bfff4eb8 - md5: 2d044979b5df448a30062150672d7c0b + size: 1049187 + timestamp: 1770303716765 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyscipopt-6.1.0-np2py313h1160f3e_0.conda + sha256: 1e942ac32f60cd07f92a149dc413d5c1fde7672760cc4255c0f3ff613ba25cd9 + md5: accf71d44206ba6c599b120730a79c77 depends: + - python + - numpy >=1.16.0 - __osx >=10.13 - libcxx >=19 - - numpy >=1.16.0 - - python >=3.13,<3.14.0a0 + - numpy >=1.23,<3 + - scip >=10.0.0,<11.0a0 - python_abi 3.13.* *_cp313 - - scip >=9.2.3,<10.0a0 license: MIT license_family: MIT - size: 807832 - timestamp: 1756568775497 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyscipopt-5.6.0-py313hb4b7877_1.conda - sha256: c4fb2b57ded66c7595495d6cae1a29035ae63e605934218fc02ca5fd3fd55a86 - md5: ce430bc6087b31303de07f3f22e7ef27 + size: 952641 + timestamp: 1770303779948 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyscipopt-6.1.0-np2py313hdc65ad0_0.conda + sha256: b6ff67dcefc75068c91081046dc3b919581fff5c13938ceeb97cd887249b0fdf + md5: e4524c71b2284dd010f27b3e2e001e7a depends: - - __osx >=11.0 - - libcxx >=19 + - python - numpy >=1.16.0 - - python >=3.13,<3.14.0a0 - - python >=3.13,<3.14.0a0 *_cp313 + - python 3.13.* *_cp313 + - libcxx >=19 + - __osx >=11.0 + - scip >=10.0.0,<11.0a0 + - numpy >=1.23,<3 - python_abi 3.13.* *_cp313 - - scip >=9.2.3,<10.0a0 license: MIT license_family: MIT - size: 754962 - timestamp: 1756568728679 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyscipopt-5.6.0-py313hfe59770_1.conda - sha256: 88efc3d62e5ad2469c73243d2673b7352cd7c591fc97b19f97cd980403a7f35f - md5: 25a0d82f77870227605b448edfe7cc3d + size: 887892 + timestamp: 1770303759695 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyscipopt-6.1.0-np2py313h776c0ec_0.conda + sha256: 8d7c7195bf1f0ebfd8d2e48603a9730d44c976f35da6cc455a0080e999eb40e4 + md5: 9d08f3d89b1d716787c99de326a2c112 depends: + - python - numpy >=1.16.0 - - python >=3.13,<3.14.0a0 - - python_abi 3.13.* *_cp313 - - scip >=9.2.3,<10.0a0 - - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - numpy >=1.23,<3 + - python_abi 3.13.* *_cp313 + - scip >=10.0.0,<11.0a0 license: MIT license_family: MIT - size: 695268 - timestamp: 1756568745962 + size: 842709 + timestamp: 1770303761803 - conda: https://conda.anaconda.org/conda-forge/noarch/pyshp-3.0.3-pyhd8ed1ab_0.conda sha256: d9a0be08f14d5d513611f9902affb49ca3ed72e05509d15d3cdf1970a84b9233 md5: c138c7aaa6a10b5762dcd92247864aff @@ -25907,29 +26855,29 @@ packages: license_family: MIT size: 454408 timestamp: 1764355333136 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.10.1-py313h85046ba_0.conda - sha256: da92b567be00f47f805f2d58a0f91611b7df73c3b7aa49f903436aec7dc4cae7 - md5: 2c5d21d466ef1ff0c0a98cfdbaf5c64b +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.10.2-py313h85046ba_0.conda + sha256: dc1382585d8c1a5426d1bec814ee9ecc13340137099a62183bcc5010b2fd0098 + md5: f6161781ceb86e9f5da1b532e4c4453c depends: - __glibc >=2.17,<3.0.a0 - - libclang13 >=21.1.7 + - libclang13 >=21.1.8 - libegl >=1.7.0,<2.0a0 - libgcc >=14 - libgl >=1.7.0,<2.0a0 - libopengl >=1.7.0,<2.0a0 - libstdcxx >=14 - - libvulkan-loader >=1.4.328.1,<2.0a0 + - libvulkan-loader >=1.4.341.0,<2.0a0 - libxml2 - libxml2-16 >=2.14.6 - libxslt >=1.1.43,<2.0a0 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 - - qt6-main 6.10.1.* - - qt6-main >=6.10.1,<6.11.0a0 + - qt6-main 6.10.2.* + - qt6-main >=6.10.2,<6.11.0a0 license: LGPL-3.0-only license_family: LGPL - size: 11629969 - timestamp: 1765811902254 + size: 11632702 + timestamp: 1770081278953 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.9.2-py312h5654102_1.conda sha256: 51e77f7701d535d2dbbc4ad8fd878a3e34d5d7acda2aa4c2f9fc45b9759eca02 md5: f081a3bd12e609dce6ebe7eed98e6783 @@ -25951,26 +26899,26 @@ packages: license_family: LGPL size: 10127456 timestamp: 1756673992677 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.10.1-py313h475ba69_0.conda - sha256: 7520efebc256983aa64778d5198f3e8ea1bbc370a0cd9d3f4760bda4d4dd06e8 - md5: 1b3404ee1a66ab0205db2a19096efbc2 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.10.2-py313h475ba69_0.conda + sha256: 1f8377c60a30fb92f324aec6d5933d35192881462db0ad02425bc11b05e262de + md5: 462d1b8de81aaf6971e8466c48ed7164 depends: - - libclang13 >=21.1.7 - - libvulkan-loader >=1.4.328.1,<2.0a0 + - libclang13 >=21.1.8 + - libvulkan-loader >=1.4.341.0,<2.0a0 - libxml2 - libxml2-16 >=2.14.6 - libxslt >=1.1.43,<2.0a0 - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 - - qt6-main 6.10.1.* - - qt6-main >=6.10.1,<6.11.0a0 + - qt6-main 6.10.2.* + - qt6-main >=6.10.2,<6.11.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: LGPL-3.0-only license_family: LGPL - size: 9044031 - timestamp: 1765812223474 + size: 9053489 + timestamp: 1770081742442 - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.9.2-py312h0ba07f7_1.conda sha256: 3592fa488f9b267818ecd056a1d7cf9960fc34424eaea7ae8d72360f0c2ac364 md5: 67d1a60b275352d228940a8414cc515a @@ -26020,14 +26968,14 @@ packages: license_family: APACHE size: 138711 timestamp: 1768070185564 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pytables-3.10.2-py312hefc0c3f_10.conda - sha256: 0c544c185a7e8d0d0df99f3c64626d160ce94b8342e44852ea1297a382799043 - md5: e5bb2b09278f18b76ace60e809d8057c +- conda: https://conda.anaconda.org/conda-forge/linux-64/pytables-3.10.2-py312hefc0c3f_11.conda + sha256: 415eedf88c550bfa6d184e0286803ae3a9af1c6e86106349de7a639a9be5c685 + md5: fb8b98904d2397b1edef0e14370d8fc8 depends: - __glibc >=2.17,<3.0.a0 - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - - c-blosc2 >=2.22.0,<2.23.0a0 + - c-blosc2 >=2.23.0,<2.24.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - libgcc >=14 - libstdcxx >=14 @@ -26042,16 +26990,16 @@ packages: - typing-extensions >=4.4.0 license: BSD-3-Clause license_family: BSD - size: 1656226 - timestamp: 1761751386877 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pytables-3.10.2-py313h0546747_10.conda - sha256: d16cf85cb6588ad03657a04200aae9f24808ca088f7f11a74b02fcf6f11e64ff - md5: fda299ac2474303b7327a8399d541a9f + size: 1632767 + timestamp: 1770023698503 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pytables-3.10.2-py313h0546747_11.conda + sha256: 09ca1c80d24857d2f523492f728e8e330a90c6b1221ec8c5ca73c428f41bd0a0 + md5: 0bf244b620dcf9278c813105e2d42284 depends: - __glibc >=2.17,<3.0.a0 - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - - c-blosc2 >=2.22.0,<2.23.0a0 + - c-blosc2 >=2.23.0,<2.24.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - libgcc >=14 - libstdcxx >=14 @@ -26066,16 +27014,16 @@ packages: - typing-extensions >=4.4.0 license: BSD-3-Clause license_family: BSD - size: 1679360 - timestamp: 1761751431774 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pytables-3.10.2-py312he4c742b_10.conda - sha256: 27791441e265ee4e91d8133d6b583dd635e578950d36b2b2b48f61cc7c3c65f7 - md5: 6698fa5a79d807f18c68a9423ed62960 + size: 1649410 + timestamp: 1770023705463 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pytables-3.10.2-py312hde43864_11.conda + sha256: fcddc88659abc6416fbc1a4c532d42c0f80a628a790b01ae42645f7fc4cc375e + md5: b4c8331ee7ae2189e22b399ec1a16c48 depends: - __osx >=10.13 - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - - c-blosc2 >=2.22.0,<2.23.0a0 + - c-blosc2 >=2.23.0,<2.24.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - libcxx >=19 - libzlib >=1.3.1,<2.0a0 @@ -26089,16 +27037,16 @@ packages: - typing-extensions >=4.4.0 license: BSD-3-Clause license_family: BSD - size: 1535521 - timestamp: 1761751780558 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pytables-3.10.2-py313hbe64c67_10.conda - sha256: ac382e79e434b7297369ab8bee18cc3a00d179a4a8cbd3f8be5a0b8705096f93 - md5: 4e9b9b6890d2f971b043975b82b9b15f + size: 1523751 + timestamp: 1770024044849 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pytables-3.10.2-py313h7d7b887_11.conda + sha256: ffd5373b4750dba328bf91f911a7a75125defe4d0cc23ceb08f3d0516221d0ea + md5: 1a71b440166584a1ff43a8d9d9914403 depends: - __osx >=10.13 - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - - c-blosc2 >=2.22.0,<2.23.0a0 + - c-blosc2 >=2.23.0,<2.24.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - libcxx >=19 - libzlib >=1.3.1,<2.0a0 @@ -26112,8 +27060,8 @@ packages: - typing-extensions >=4.4.0 license: BSD-3-Clause license_family: BSD - size: 1565711 - timestamp: 1761752031896 + size: 1547559 + timestamp: 1770024109212 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytables-3.10.2-py312hc3f5fac_10.conda sha256: 5ae31c65543dede25ed312744935ac16dec54097717e3fd6088f5108a7ad5466 md5: 744477c442aa4a1cbc442edf440f68cd @@ -26138,14 +27086,14 @@ packages: license_family: BSD size: 1737873 timestamp: 1761751925893 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytables-3.10.2-py313h5ba8fac_10.conda - sha256: 697bc0e2ed387ffed351790bdfefc1fdce606ada0759840eca7a5261382d29ea - md5: 13a8641249ae375fa5f1e4a197091035 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pytables-3.10.2-py313hffa1668_11.conda + sha256: 8c4a1ee3f80e49db3aa28f02a409e9b8fa06e1d853329ebe2e37d418ce98c16c + md5: 49b14d6438db20b4f1276b0182285d2f depends: - __osx >=11.0 - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - - c-blosc2 >=2.22.0,<2.23.0a0 + - c-blosc2 >=2.23.0,<2.24.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - libcxx >=19 - libzlib >=1.3.1,<2.0a0 @@ -26160,15 +27108,15 @@ packages: - typing-extensions >=4.4.0 license: BSD-3-Clause license_family: BSD - size: 1751325 - timestamp: 1761751654048 -- conda: https://conda.anaconda.org/conda-forge/win-64/pytables-3.10.2-py312h20cef2e_10.conda - sha256: f24fcf87e20fa0404004cabfc4d71444f2c1ffdf3744732191ee7848b6af6c35 - md5: 9b6ea0c099abd05ba2e0015a8e80c508 + size: 1737544 + timestamp: 1770023968176 +- conda: https://conda.anaconda.org/conda-forge/win-64/pytables-3.10.2-py312h20cef2e_11.conda + sha256: 5ae6adeac1152da4e5a63da3346fbad73390b28060f5cf8f27695b464e4a97b8 + md5: 9e49e5c432df6ad3220794119aa68c6b depends: - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - - c-blosc2 >=2.22.0,<2.23.0a0 + - c-blosc2 >=2.23.0,<2.24.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - libzlib >=1.3.1,<2.0a0 - numexpr @@ -26184,15 +27132,15 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - size: 1493739 - timestamp: 1761751672623 -- conda: https://conda.anaconda.org/conda-forge/win-64/pytables-3.10.2-py313h98afe49_10.conda - sha256: c4a04b0c4d2b0b84b3faf4c24547c400b10b8cfd2eed2082ba95fb94a3da18de - md5: ce135c7ac8058c6d9463833662cb2642 + size: 1492106 + timestamp: 1770023883075 +- conda: https://conda.anaconda.org/conda-forge/win-64/pytables-3.10.2-py313h98afe49_11.conda + sha256: 9957932bd753091d4da1e8148e33a2d69be5498c531db5b020096e68efd982ca + md5: db647d9fb2f134fb1af762fd45342721 depends: - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - - c-blosc2 >=2.22.0,<2.23.0a0 + - c-blosc2 >=2.23.0,<2.24.0a0 - hdf5 >=1.14.6,<1.14.7.0a0 - libzlib >=1.3.1,<2.0a0 - numexpr @@ -26208,8 +27156,8 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - size: 1519091 - timestamp: 1761751603271 + size: 1516330 + timestamp: 1770023812698 - conda: https://conda.anaconda.org/conda-forge/noarch/pytest-9.0.2-pyhcf101f3_0.conda sha256: 9e749fb465a8bedf0184d8b8996992a38de351f7c64e967031944978de03a520 md5: 2b694bad8a50dc2f712f5368de866480 @@ -26255,10 +27203,10 @@ packages: license: Python-2.0 size: 31547362 timestamp: 1760367376467 -- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.11-hc97d973_100_cp313.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.12-hc97d973_100_cp313.conda build_number: 100 - sha256: 9cf014cf28e93ee242bacfbf664e8b45ae06e50b04291e640abeaeb0cba0364c - md5: 0cbb0010f1d8ecb64a428a8d4214609e + sha256: 8a08fe5b7cb5a28aa44e2994d18dbf77f443956990753a4ca8173153ffb6eb56 + md5: 4c875ed0e78c2d407ec55eadffb8cf3d depends: - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 @@ -26266,20 +27214,20 @@ packages: - libexpat >=2.7.3,<3.0a0 - libffi >=3.5.2,<3.6.0a0 - libgcc >=14 - - liblzma >=5.8.1,<6.0a0 + - liblzma >=5.8.2,<6.0a0 - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.51.1,<4.0a0 - - libuuid >=2.41.2,<3.0a0 + - libsqlite >=3.51.2,<4.0a0 + - libuuid >=2.41.3,<3.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - python_abi 3.13.* *_cp313 - - readline >=8.2,<9.0a0 + - readline >=8.3,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata license: Python-2.0 - size: 37226336 - timestamp: 1765021889577 + size: 37364553 + timestamp: 1770272309861 python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.12-h3999593_0_cpython.conda sha256: dfeee761021f0a84ade2c38d60fe8506771e49f992063377094fba11002d15ef @@ -26302,28 +27250,29 @@ packages: license: Python-2.0 size: 13685943 timestamp: 1760368419157 -- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.0-h3a8ca6c_101_cp313.conda - build_number: 101 - sha256: c8b23bbdcd0e4f24fed2028cba20bd81325a4220439c1b8e6b06694f16642a2c - md5: 0acea4c3eee2454fd642d1a4eafa2943 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.12-h894a449_100_cp313.conda + build_number: 100 + sha256: 9548dcf58cf6045aa4aa1f2f3fa6110115ca616a8d5fa142a24081d2b9d91291 + md5: 99b1fa1fe8a8ab58224969f4568aadca depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 + - libexpat >=2.7.3,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.2,<6.0a0 - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.47.0,<4.0a0 + - libsqlite >=3.51.2,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.5.5,<4.0a0 - python_abi 3.13.* *_cp313 - - readline >=8.2,<9.0a0 + - readline >=8.3,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 license: Python-2.0 - size: 13941305 - timestamp: 1732736712289 + size: 17570178 + timestamp: 1770272361922 + python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.12-hec0b533_0_cpython.conda sha256: 63d5362621bbf3b0d90424f5fc36983d7be2434f6d0b2a8e431ac78a69a1c01d md5: 5a732c06cbf90455a95dc6f6b1dd7061 @@ -26345,28 +27294,29 @@ packages: license: Python-2.0 size: 12905286 timestamp: 1760367318303 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.0-hbbac1ca_101_cp313.conda - build_number: 101 - sha256: 742544a4cf9a10cf2c16d35d96fb696c27d58b9df0cc29fbef5629283aeca941 - md5: e972e146a1e0cfb1f26da42cb6f6648c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.12-h20e6be0_100_cp313.conda + build_number: 100 + sha256: 9a4f16a64def0853f0a7b6a7beb40d498fd6b09bee10b90c3d6069b664156817 + md5: 179c0f5ae4f22bc3be567298ed0b17b9 depends: - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 + - libexpat >=2.7.3,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.2,<6.0a0 - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.47.0,<4.0a0 + - libsqlite >=3.51.2,<4.0a0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.5.5,<4.0a0 - python_abi 3.13.* *_cp313 - - readline >=8.2,<9.0a0 + - readline >=8.3,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - xz >=5.2.6,<6.0a0 license: Python-2.0 - size: 12806496 - timestamp: 1732735488999 + size: 12770674 + timestamp: 1770272314517 + python_site_packages_path: lib/python3.13/site-packages - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.12-h30ce641_0_cpython.conda sha256: 9e9d6fa3b4ef231fcabf00364319f4ffacb1fb683e6c61c2438bafe3c61a7e2e md5: e672c6dc92e6f1fcac0f9fed61b2b922 @@ -26388,28 +27338,29 @@ packages: license: Python-2.0 size: 15741664 timestamp: 1760365715600 -- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.0-hf5aa216_101_cp313.conda - build_number: 101 - sha256: b8eba57bd86c7890b27e67b477b52b5bd547946c354f29b9dbbc70ad83f2863b - md5: 158d6077a635cf0c0c23bec3955a4833 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.12-h09917c8_100_cp313.conda + build_number: 100 + sha256: da70aec20ff5a5ae18bbba9fdd1e18190b419605cafaafb3bdad8becf11ce94d + md5: 4440c24966d0aa0c8f1e1d5006dac2d6 depends: - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.6.4,<3.0a0 - - libffi >=3.4,<4.0a0 + - libexpat >=2.7.3,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.2,<6.0a0 - libmpdec >=4.0.0,<5.0a0 - - libsqlite >=3.47.0,<4.0a0 + - libsqlite >=3.51.2,<4.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 + - openssl >=3.5.5,<4.0a0 - python_abi 3.13.* *_cp313 - tk >=8.6.13,<8.7.0a0 - tzdata - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - xz >=5.2.6,<6.0a0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: Python-2.0 - size: 16697406 - timestamp: 1732734725404 + size: 16535316 + timestamp: 1770270322707 + python_site_packages_path: Lib/site-packages - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhe01879c_2.conda sha256: d6a17ece93bbd5139e02d2bd7dbfa80bee1a4261dced63f65f679121686bf664 md5: 5b8d21249ff20967101ffa321cab24e8 @@ -26577,24 +27528,24 @@ packages: license_family: BSD size: 244628 timestamp: 1755304154927 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_1.conda - sha256: 59f17182813f8b23709b7d4cfda82c33b72dd007cb729efa0033c609fbd92122 - md5: c20172b4c59fbe288fa50cdc1b693d73 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.12.12-hd8ed1ab_2.conda + sha256: 3307c01627ae45524dfbdb149f7801818608c9c49d88ac89632dff32e149057f + md5: d41b6b394546ee6e1c423e28a581fc71 depends: - cpython 3.12.12.* - python_abi * *_cp312 license: Python-2.0 - size: 45888 - timestamp: 1761175248278 -- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.11-h4df99d1_100.conda - sha256: 4b08d4c2c4b956d306b4868d3faf724eebb5d6e6b170fad2eb0f2d4eb227f1af - md5: d1461b2e63b1909f4f5b41c823bd90ae + size: 46618 + timestamp: 1769471082980 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-gil-3.13.12-h4df99d1_100.conda + sha256: f306304235197434494355351ac56020a65b7c5c56ff10ca1ed53356d575557a + md5: 3d92938d5b83c49162ade038aab58a59 depends: - - cpython 3.13.11.* + - cpython 3.13.12.* - python_abi * *_cp313 license: Python-2.0 - size: 48352 - timestamp: 1765019767640 + size: 48618 + timestamp: 1770270436560 - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca md5: a61bf9ec79426938ff785eb69dbb1960 @@ -26604,6 +27555,20 @@ packages: license_family: BSD size: 13383 timestamp: 1677079727691 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-slugify-8.0.4-pyhd8ed1ab_1.conda + sha256: a84f270426ae7661f79807b107dedb9829c79bd45f77a3033aa021e10556e87f + md5: a4059bc12930bddeb41aef71537ffaed + depends: + - python >=3.9 + - text-unidecode >=1.3 + constrains: + - slugify <0 + - unidecode >=1.1.1 + - awesome-slugify <0 + license: MIT + license_family: MIT + size: 18991 + timestamp: 1733756348165 - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2025.3-pyhd8ed1ab_0.conda sha256: 467134ef39f0af2dbb57d78cb3e4821f01003488d331a8dd7119334f4f47bfbd md5: 7ead57407430ba33f681738905278d03 @@ -26701,9 +27666,9 @@ packages: license_family: LGPL size: 28258 timestamp: 1665784480952 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_0.conda - sha256: 1b3dc4c25c83093fff08b86a3574bc6b94ba355c8eba1f35d805c5e256455fc7 - md5: fba10c2007c8b06f77c5a23ce3a635ad +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py312h8a5da7c_1.conda + sha256: cb142bfd92f6e55749365ddc244294fa7b64db6d08c45b018ff1c658907bfcbf + md5: 15878599a87992e44c059731771591cb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -26712,11 +27677,11 @@ packages: - yaml >=0.2.5,<0.3.0a0 license: MIT license_family: MIT - size: 204539 - timestamp: 1758892248166 -- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_0.conda - sha256: 40dcd6718dce5fbee8aabdd0519f23d456d8feb2e15ac352eaa88bbfd3a881af - md5: 4794ea0adaebd9f844414e594b142cb2 + size: 198293 + timestamp: 1770223620706 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.3-py313h3dea7bd_1.conda + sha256: ef7df29b38ef04ec67a8888a4aa039973eaa377e8c4b59a7be0a1c50cd7e4ac6 + md5: f256753e840c3cd3766488c9437a8f8b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -26725,11 +27690,11 @@ packages: - yaml >=0.2.5,<0.3.0a0 license: MIT license_family: MIT - size: 207109 - timestamp: 1758892173548 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py312hacf3034_0.conda - sha256: 28814df783a5581758d197262d773c92a72c8cedbec3ccadac90adf22daecd25 - md5: dbc6cfbec3095d84d9f3baab0c6a5c24 + size: 201616 + timestamp: 1770223543730 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py312h51361c1_1.conda + sha256: d85e3be523b7173a194a66ae05a585ac1e14ccfbe81a9201b8047d6e45f2f7d9 + md5: 9029301bf8a667cf57d6e88f03a6726b depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 @@ -26737,11 +27702,11 @@ packages: - yaml >=0.2.5,<0.3.0a0 license: MIT license_family: MIT - size: 192483 - timestamp: 1758892060370 -- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h0f4d31d_0.conda - sha256: 8420815e10d455b012db39cb7dc0d86f0ac3a287d5a227892fa611fe3d467df9 - md5: e0c9e257970870212c449106964a5ace + size: 190417 + timestamp: 1770223755226 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.3-py313h7c6a591_1.conda + sha256: ab5f6c27d24facd1832481ccd8f432c676472d57596a3feaa77880a1462cdb2a + md5: 0eaf6cf9939bb465ee62b17d04254f9e depends: - __osx >=10.13 - python >=3.13,<3.14.0a0 @@ -26749,11 +27714,11 @@ packages: - yaml >=0.2.5,<0.3.0a0 license: MIT license_family: MIT - size: 193608 - timestamp: 1758892017635 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py312h5748b74_0.conda - sha256: 690943c979a5bf014348933a68cd39e3bb9114d94371c4c5d846d2daaa82c7d9 - md5: 6a2d7f8a026223c2fa1027c96c615752 + size: 192051 + timestamp: 1770223971430 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py312h04c11ed_1.conda + sha256: 737959262d03c9c305618f2d48c7f1691fb996f14ae420bfd05932635c99f873 + md5: 95a5f0831b5e0b1075bbd80fcffc52ac depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -26762,11 +27727,11 @@ packages: - yaml >=0.2.5,<0.3.0a0 license: MIT license_family: MIT - size: 190579 - timestamp: 1758891996097 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h7d74516_0.conda - sha256: f5be0d84f72a567b7333b9efa74a65bfa44a25658cf107ffa3fc65d3ae6660d7 - md5: 0e8e3235217b4483a7461b63dca5826b + size: 187278 + timestamp: 1770223990452 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.3-py313h65a2061_1.conda + sha256: 950725516f67c9691d81bb8dde8419581c5332c5da3da10c9ba8cbb1698b825d + md5: 5d0c8b92128c93027632ca8f8dc1190f depends: - __osx >=11.0 - python >=3.13,<3.14.0a0 @@ -26775,11 +27740,11 @@ packages: - yaml >=0.2.5,<0.3.0a0 license: MIT license_family: MIT - size: 191630 - timestamp: 1758892258120 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py312h05f76fc_0.conda - sha256: 54d04e61d17edffeba1e5cad45f10f272a016b6feec1fa8fa6af364d84a7b4fc - md5: 4a68f80fbf85499f093101cc17ffbab7 + size: 188763 + timestamp: 1770224094408 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py312h05f76fc_1.conda + sha256: 1cab6cbd6042b2a1d8ee4d6b4ec7f36637a41f57d2f5c5cf0c12b7c4ce6a62f6 + md5: 9f6ebef672522cb9d9a6257215ca5743 depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -26789,11 +27754,11 @@ packages: - yaml >=0.2.5,<0.3.0a0 license: MIT license_family: MIT - size: 180635 - timestamp: 1758891847871 -- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py313hd650c13_0.conda - sha256: 5d9fd32d318b9da615524589a372b33a6f3d07db2708de16570d70360bf638c2 - md5: c067122d76f8dcbe0848822942ba07be + size: 179738 + timestamp: 1770223468771 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.3-py313hd650c13_1.conda + sha256: dfaed50de8ee72a51096163b87631921688851001e38c78a841eba1ae8b35889 + md5: c1bdb8dd255c79fb9c428ad25cc6ee54 depends: - python >=3.13,<3.14.0a0 - python_abi 3.13.* *_cp313 @@ -26803,8 +27768,8 @@ packages: - yaml >=0.2.5,<0.3.0a0 license: MIT license_family: MIT - size: 182043 - timestamp: 1758892011955 + size: 180992 + timestamp: 1770223457761 - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-27.1.0-py312hfb55c3c_0.conda noarch: python sha256: a00a41b66c12d9c60e66b391e9a4832b7e28743348cf4b48b410b91927cd7819 @@ -26908,21 +27873,21 @@ packages: license: LicenseRef-Qhull size: 1377020 timestamp: 1720814433486 -- conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.10.1-hb82b983_4.conda - sha256: 9ff9eeae1f8331f04d6c19bbe53edd5ad10cc3f960376e3c35ad3875546569da - md5: f4dfd61ec958d420bebdcefeb805d658 +- conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.10.2-hb82b983_4.conda + sha256: 82393e8fc34c07cbd7fbba5ef7ce672165ff657492ad1790bb5fad63d607cccd + md5: 9861c7820fdb45bc50a2ea60f4ff7952 depends: - __glibc >=2.17,<3.0.a0 - - alsa-lib >=1.2.15.1,<1.3.0a0 + - alsa-lib >=1.2.15.3,<1.3.0a0 - dbus >=1.16.2,<2.0a0 - double-conversion >=3.4.0,<3.5.0a0 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - - harfbuzz >=12.2.0 - - icu >=78.1,<79.0a0 + - harfbuzz >=12.3.2 + - icu >=78.2,<79.0a0 - krb5 >=1.21.3,<1.22.0a0 - - libclang-cpp21.1 >=21.1.7,<21.2.0a0 - - libclang13 >=21.1.7 + - libclang-cpp21.1 >=21.1.8,<21.2.0a0 + - libclang13 >=21.1.8 - libcups >=2.3.3,<2.4.0a0 - libdrm >=2.4.125,<2.5.0a0 - libegl >=1.7.0,<2.0a0 @@ -26932,10 +27897,10 @@ packages: - libgl >=1.7.0,<2.0a0 - libglib >=2.86.3,<3.0a0 - libjpeg-turbo >=3.1.2,<4.0a0 - - libllvm21 >=21.1.7,<21.2.0a0 - - libpng >=1.6.53,<1.7.0a0 + - libllvm21 >=21.1.8,<21.2.0a0 + - libpng >=1.6.54,<1.7.0a0 - libpq >=18.1,<19.0a0 - - libsqlite >=3.51.1,<4.0a0 + - libsqlite >=3.51.2,<4.0a0 - libstdcxx >=14 - libtiff >=4.7.1,<4.8.0a0 - libvulkan-loader >=1.4.328.1,<2.0a0 @@ -26945,7 +27910,7 @@ packages: - libxml2 - libxml2-16 >=2.14.6 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.4,<4.0a0 + - openssl >=3.5.5,<4.0a0 - pcre2 >=10.47,<10.48.0a0 - wayland >=1.24.0,<2.0a0 - xcb-util >=0.4.1,<0.5.0a0 @@ -26960,17 +27925,17 @@ packages: - xorg-libxcomposite >=0.4.6,<1.0a0 - xorg-libxcursor >=1.2.3,<2.0a0 - xorg-libxdamage >=1.1.6,<2.0a0 - - xorg-libxext >=1.3.6,<2.0a0 - - xorg-libxrandr >=1.5.4,<2.0a0 + - xorg-libxext >=1.3.7,<2.0a0 + - xorg-libxrandr >=1.5.5,<2.0a0 - xorg-libxtst >=1.2.5,<2.0a0 - - xorg-libxxf86vm >=1.1.6,<2.0a0 + - xorg-libxxf86vm >=1.1.7,<2.0a0 - zstd >=1.5.7,<1.6.0a0 constrains: - - qt 6.10.1 + - qt 6.10.2 license: LGPL-3.0-only license_family: LGPL - size: 57241105 - timestamp: 1766486406643 + size: 57423827 + timestamp: 1769655891299 - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.9.2-h3fc9a0a_0.conda sha256: 70ca22551a307b7b23108dae31fc51dadac0742d44fc485bb7d3a865b4d47599 md5: 70b5132b6e8a65198c2f9d5552c41126 @@ -27032,35 +27997,35 @@ packages: license_family: LGPL size: 52566799 timestamp: 1756296889250 -- conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.10.1-h7502b6c_0.conda - sha256: 95afcdc5dcae3b8c4d7187e41f28c9a367faf3afa9eec279cff493bdcc72000f - md5: 455618c3cf822705d569fe83beafe8da +- conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.10.2-h68b6638_4.conda + sha256: 0f4cf8905e1d05b551fb799809461e299db50e2637f6be5e813ddf7947f1b0df + md5: f2dc18a6006aac4ac0050861c6df4120 depends: - - double-conversion >=3.3.1,<3.4.0a0 - - harfbuzz >=12.2.0 - - icu >=75.1,<76.0a0 + - double-conversion >=3.4.0,<3.5.0a0 + - harfbuzz >=12.3.2 + - icu >=78.2,<79.0a0 - krb5 >=1.21.3,<1.22.0a0 - - libclang13 >=21.1.6 - - libglib >=2.86.2,<3.0a0 + - libclang13 >=21.1.8 + - libglib >=2.86.3,<3.0a0 - libjpeg-turbo >=3.1.2,<4.0a0 - - libpng >=1.6.50,<1.7.0a0 - - libsqlite >=3.51.0,<4.0a0 + - libpng >=1.6.54,<1.7.0a0 + - libsqlite >=3.51.2,<4.0a0 - libtiff >=4.7.1,<4.8.0a0 - libvulkan-loader >=1.4.328.1,<2.0a0 - libwebp-base >=1.6.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.5.4,<4.0a0 - - pcre2 >=10.46,<10.47.0a0 + - openssl >=3.5.5,<4.0a0 + - pcre2 >=10.47,<10.48.0a0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - zstd >=1.5.7,<1.6.0a0 constrains: - - qt 6.10.1 + - qt 6.10.2 license: LGPL-3.0-only license_family: LGPL - size: 87151062 - timestamp: 1763755156545 + size: 85994400 + timestamp: 1769662120052 - conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.9.2-h236c7cd_0.conda sha256: 5088ed0c6c769925a6df7d5a1a55fb7fc52278f327b986f45664453622fc98e2 md5: 774ff6166c5f29c0c16e6c2bc43b485f @@ -27369,9 +28334,9 @@ packages: license_family: BSD size: 7097517 timestamp: 1758132119961 -- conda: https://conda.anaconda.org/conda-forge/win-64/rasterio-1.4.4-py313hfe0960c_1.conda - sha256: 722de2aee58df9791a1ddd65b7ddece6480aaa7a0addf40aba8d64af364b5899 - md5: 1b53c63748336fca73e36abbaebe2ee8 +- conda: https://conda.anaconda.org/conda-forge/win-64/rasterio-1.5.0-py313h1ced589_0.conda + sha256: d751673f1b0b77e7d9547e5101e2c7fe29c1f6acba0fc09ff7eb3651477ab829 + md5: 05a494f768c611dd1ba42ead4556e453 depends: - affine - attrs @@ -27379,7 +28344,7 @@ packages: - click >=4,!=8.2.* - click-plugins - cligj >=0.5 - - libgdal-core >=3.11.5,<3.12.0a0 + - libgdal-core >=3.12.1,<3.13.0a0 - numpy >=1.23,<3 - proj >=9.7.1,<9.8.0a0 - python >=3.13,<3.14.0a0 @@ -27391,8 +28356,34 @@ packages: - vc14_runtime >=14.44.35208 license: BSD-3-Clause license_family: BSD - size: 7505711 - timestamp: 1765559718117 + size: 8328743 + timestamp: 1767632806826 +- conda: https://conda.anaconda.org/conda-forge/noarch/rasterstats-0.20.0-pyhd8ed1ab_2.conda + sha256: 8ac6ad2fa2984842afa0e03d661328fdffb6965cd0a0eaeef2eadb561901068b + md5: a6762dbfc4cf7084adf09f0accdf0f8a + depends: + - affine + - click >7.1 + - cligj >=0.4 + - fiona + - numpy >=1.9 + - python >=3.10 + - rasterio >=1.0 + - shapely + - simplejson + license: BSD-3-Clause + license_family: BSD + size: 21434 + timestamp: 1764933948580 +- conda: https://conda.anaconda.org/conda-forge/noarch/ratelimit-2.2.1-pyhd8ed1ab_0.tar.bz2 + sha256: 101e2a376e7b8cdff4a8e84e922a47a2ed4c8469a43a20d4e19b3f4e9a29f36f + md5: 3e8565b8c77205fc638ee40f5d2a2dba + depends: + - python >=3.6 + license: MIT + license_family: MIT + size: 9031 + timestamp: 1611101670701 - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2025.11.05-h5301d42_0.conda sha256: 2f225ddf4a274743045aded48053af65c31721e797a45beed6774fdc783febfb md5: 0227d04521bc3d28c7995c7e1f99a721 @@ -27429,6 +28420,15 @@ packages: license_family: BSD size: 216623 timestamp: 1762397986736 +- conda: https://conda.anaconda.org/conda-forge/win-64/re2-2025.11.05-ha104f34_1.conda + sha256: 345b1ed8288d81510101f886aaf547e3294370e5dab340c4c3fcb0b25e5d99e0 + md5: 6807f05dcf3f1736ad6cc9525b8b8725 + depends: + - libre2-11 2025.11.05 h04e5de1_1 + license: BSD-3-Clause + license_family: BSD + size: 220305 + timestamp: 1768190225351 - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda sha256: 12ffde5a6f958e285aa22c191ca01bbd3d6e710aa852e00618fa6ddc59149002 md5: d7d95fc8287ea7bf33e0e7116d2b95ec @@ -27489,6 +28489,34 @@ packages: license_family: APACHE size: 63602 timestamp: 1766926974520 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-cache-1.3.0-pyhd8ed1ab_0.conda + sha256: 56d5bd2d12d801bfea911db0a53b795485c912abf910abeccf3bf826f7d201d4 + md5: c992772513a6f9d329aaedca8736c173 + depends: + - attrs >=21.2 + - cattrs >=22.2 + - itsdangerous >=2.0 + - platformdirs >=2.5 + - python >=3.10 + - pyyaml >=6.0.1 + - requests >=2.22 + - ujson >=5.4 + - url-normalize >=1.4 + - urllib3 >=1.25.5 + license: BSD-2-Clause + license_family: BSD + size: 55070 + timestamp: 1770077121022 +- conda: https://conda.anaconda.org/conda-forge/noarch/requests-file-3.0.1-pyhd8ed1ab_0.conda + sha256: 64f27742fd6426cc7a708f7023260918255790627be199928f8f7197614998d8 + md5: e4dd2b09dc41cc3546a311531ca5d0e8 + depends: + - python >=3.10 + - requests >=1.0.0 + license: Apache-2.0 + license_family: APACHE + size: 10854 + timestamp: 1760995594498 - conda: https://conda.anaconda.org/conda-forge/noarch/requests-oauthlib-1.4.0-pyhd8ed1ab_0.conda sha256: 909ec1510bbb6fad9276534352025f428050a4deeea86e68d61c8c580938ac82 md5: a55b220de8970208f583e38639cfbecc @@ -27518,6 +28546,15 @@ packages: license_family: MIT size: 10209 timestamp: 1733600040800 +- conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-2.0.0-pyhd8ed1ab_1.conda + sha256: d617373ba1a5108336cb87754d030b9e384dcf91796d143fa60fe61e76e5cfb0 + md5: 43e14f832d7551e5a8910672bfc3d8c6 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 38028 + timestamp: 1733921806657 - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 sha256: 2a5b495a1de0f60f24d8a74578ebc23b24aa53279b1ad583755f223097c41c37 md5: 912a71cc01012ee38e6b90ddd561e36f @@ -27538,21 +28575,34 @@ packages: license_family: MIT size: 22913 timestamp: 1752876729969 -- conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.20.0-pyhd8ed1ab_1.conda - sha256: fee450456d7592e2ac0f36fe1f2c1dd08be6ce5a1d90d6a09aa647386a6aa996 - md5: e7e37bf890147fa5d7892812a6dd3888 +- conda: https://conda.anaconda.org/conda-forge/noarch/rich-14.3.2-pyhcf101f3_0.conda + sha256: ed17985cec5a0540002c6cabe67848f7cc17e5f4019c0e2a40534e9b7c0b38de + md5: 33950a076fd589a7655c6888cc3d2b34 depends: - - numpy >=2 + - markdown-it-py >=2.2.0 + - pygments >=2.13.0,<3.0.0 + - python >=3.10 + - typing_extensions >=4.0.0,<5.0.0 + - python + license: MIT + license_family: MIT + size: 208269 + timestamp: 1769971520792 +- conda: https://conda.anaconda.org/conda-forge/noarch/rioxarray-0.21.0-pyhcf101f3_1.conda + sha256: b1f09b85b4ce3ea6ea63fc6ffa81ef0498768389bf922dc8c7006edac02f7fd8 + md5: a0811eb1142b4da29162d1931922a1ec + depends: + - python >=3.12 - packaging + - rasterio >=1.4.3 + - xarray >=2024.7.0,<2025.12 - pyproj >=3.3 - - python >=3.12 - - rasterio >=1.3.7 - - scipy - - xarray >=2024.7.0 + - numpy >=2 + - python license: Apache-2.0 license_family: Apache - size: 53394 - timestamp: 1763152794294 + size: 61005 + timestamp: 1771351751465 - conda: https://conda.anaconda.org/conda-forge/noarch/roman-numerals-4.1.0-pyhd8ed1ab_0.conda sha256: 30f3c04fcfb64c44d821d392a4a0b8915650dbd900c8befc20ade8fde8ec6aa2 md5: 0dc48b4b570931adc8641e55c6c17fe4 @@ -27693,55 +28743,59 @@ packages: license_family: MIT size: 105675 timestamp: 1766159549377 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.14.14-h4196e79_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ruff-0.15.1-h40fa522_0.conda noarch: python - sha256: 6c9342a8d8e34ebcda96184e40dc8dec41591a0ba75c3dbb18d9e874c1cd0e29 - md5: 830a347c5a4bb01b72c6e5b23ba35515 + sha256: 6a4a80d472f365d4120e70a1541ff6c0e752c363b4ced0a50308e83e8b0cc0a8 + md5: 474808b6894605b04bae59ced8210123 depends: - python - - __glibc >=2.17,<3.0.a0 - libgcc >=14 + - __glibc >=2.17,<3.0.a0 constrains: - __glibc >=2.17 license: MIT - size: 9156056 - timestamp: 1769400137652 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.14.14-hb17bafe_0.conda + license_family: MIT + size: 9153240 + timestamp: 1770954626651 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ruff-0.15.1-h5930b28_0.conda noarch: python - sha256: 2c5c4fb82047dba5b4626e4f617a05721e9c0898d97c3f115f4d5fd8bc8e531a - md5: 6b6dc1740a886262528179674fa132d8 + sha256: 95aad456b80e911b59d0817824eee7ff97a8c1f19fc14af7c8fcd768eceb32d6 + md5: 112d2a215c854f637ace6b313a078e14 depends: - python - __osx >=10.13 constrains: - __osx >=10.13 license: MIT - size: 9094220 - timestamp: 1769400255821 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.14.14-hb0cad00_0.conda + license_family: MIT + size: 9130878 + timestamp: 1770954707231 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruff-0.15.1-h279115b_0.conda noarch: python - sha256: 4f406055539b68074a5feb49bc415cb7a3f12f0a2e622dbbf10b96fdd8208dee - md5: 759630a86c844318b9428b22980025c7 + sha256: cd5010c084099f8f8796d2fe0caed5b1b20d2e0d205f8f493279b77dada04a4a + md5: c11e2249e0c4b2de13906fe34684f4f0 depends: - python - __osx >=11.0 constrains: - __osx >=11.0 license: MIT - size: 8352195 - timestamp: 1769400301856 -- conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.14.14-h37e10c4_0.conda + license_family: MIT + size: 8357018 + timestamp: 1770954744394 +- conda: https://conda.anaconda.org/conda-forge/win-64/ruff-0.15.1-h213852a_0.conda noarch: python - sha256: 685529fe2c2242b098b7e26cd8b8f6c7e4b4787fdb3507ad4936706e912c985f - md5: 71ce782c4c2500ca027ef35b6c0ae211 + sha256: e0e77250a223fd55157109f8c5be6a99541779be9f3d24b7cb3e95694cfd0918 + md5: 4a704d342fc4836fed79c7f9a69addf1 depends: - python - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - ucrt >=10.0.20348.0 license: MIT - size: 9532837 - timestamp: 1769400154006 + license_family: MIT + size: 9632652 + timestamp: 1770954647574 - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.26-h5ac9029_0.conda sha256: 14acdf5685f457988dba0053b9d29f1861b1c8fff6da13ec863d6a2b6ac75bff md5: 0cfd80e699ae130623c0f42c6c6cf798 @@ -27922,12 +28976,11 @@ packages: license_family: BSD size: 9043928 timestamp: 1765801249980 -- conda: https://conda.anaconda.org/conda-forge/linux-64/scip-9.2.4-hd8b5c82_2.conda - sha256: e9a45749e96b42e22f452ba6ebaa482091fceced55ab986dfceb53db85b5cb22 - md5: b9d1dc838aee1ded7b34cbc65e6a260c +- conda: https://conda.anaconda.org/conda-forge/linux-64/scip-10.0.1-hd8b5c82_0.conda + sha256: a8b80f4f2ca2564d35e6e36a023b70effd4471da91c356eea7523a24276c445f + md5: 094a988812a7a5ab41324116d5e9a33a depends: - __glibc >=2.17,<3.0.a0 - - cppad >=20250000.2,<20250000.3.0a0 - gmp >=6.3.0,<7.0a0 - ipopt >=3.14.19,<3.14.20.0a0 - libblas >=3.9.0,<4.0a0 @@ -27938,66 +28991,60 @@ packages: - libzlib >=1.3.1,<2.0a0 - mpfr >=4.2.1,<5.0a0 - tbb >=2022.3.0 - license: Apache-2.0 AND LGPL-3.0-or-later - size: 11452254 - timestamp: 1763247406209 -- conda: https://conda.anaconda.org/conda-forge/osx-64/scip-9.2.4-h078ad67_2.conda - sha256: 2c22f63a6cd816761c268255155d944479cedb8eb45d76a80bdd0bb3ab9639f1 - md5: 97098345065e603c92930e0656bf65b8 + license: Apache-2.0 AND LGPL-3.0-or-later AND EPL-1.0 and MIT and Zlib and BSL-1.0 and HPND + size: 14829825 + timestamp: 1770284761234 +- conda: https://conda.anaconda.org/conda-forge/osx-64/scip-10.0.1-h025d0e4_0.conda + sha256: a9b481ef29c91c062211fddb1ac8c91da8da4dca9066368234686a4b48665940 + md5: 7f75df249536462ad3a52fbcf0595267 depends: - __osx >=10.13 - - cppad >=20250000.2,<20250000.3.0a0 - gmp >=6.3.0,<7.0a0 - ipopt >=3.14.19,<3.14.20.0a0 - libblas >=3.9.0,<4.0a0 - libcxx >=19 - libgfortran - libgfortran5 >=14.3.0 - - libgfortran5 >=15.2.0 - libzlib >=1.3.1,<2.0a0 - mpfr >=4.2.1,<5.0a0 - tbb >=2022.3.0 - license: Apache-2.0 AND LGPL-3.0-or-later - size: 11745057 - timestamp: 1763247650443 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scip-9.2.4-ha1e27ce_2.conda - sha256: 73da6a6e751326ce3d4d1782713c1d955c23a5ed3400d78af035f58a0ccb98e4 - md5: d34fdc9d97e33a7a0148a327d763e016 + license: Apache-2.0 AND LGPL-3.0-or-later AND EPL-1.0 and MIT and Zlib and BSL-1.0 and HPND + size: 14301993 + timestamp: 1770126528883 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scip-10.0.1-h1003740_0.conda + sha256: 1fff6d80c9019eb624d490c8f29c646cf78b7f4e0aae95eab8bd853b23831a95 + md5: 7d94bf9d07662bae4a4c0ccdd10928c3 depends: - __osx >=11.0 - - cppad >=20250000.2,<20250000.3.0a0 - gmp >=6.3.0,<7.0a0 - ipopt >=3.14.19,<3.14.20.0a0 - libblas >=3.9.0,<4.0a0 - libcxx >=19 - libgfortran - libgfortran5 >=14.3.0 - - libgfortran5 >=15.2.0 - libzlib >=1.3.1,<2.0a0 - mpfr >=4.2.1,<5.0a0 - tbb >=2022.3.0 - license: Apache-2.0 AND LGPL-3.0-or-later - size: 10202382 - timestamp: 1763247381614 -- conda: https://conda.anaconda.org/conda-forge/win-64/scip-9.2.4-h4cfe319_1.conda - sha256: b659ef07c0d98e6c45c5868b6eb1e334cb102434bd92aa43bad2587a37d14da8 - md5: fc88111b32c3f6a87478f821eaad3844 - depends: - - cppad >=20250000.2,<20250000.3.0a0 + license: Apache-2.0 AND LGPL-3.0-or-later AND EPL-1.0 and MIT and Zlib and BSL-1.0 and HPND + size: 12178612 + timestamp: 1770284335430 +- conda: https://conda.anaconda.org/conda-forge/win-64/scip-10.0.1-h6f1fe5b_0.conda + sha256: 09e4086ec54fc68c95eb56ee8beca52e43feb89eb0b21af19da323018691b8f1 + md5: 2316a278ca8b0c52a7a083b7465757e5 + depends: - gmp >=6.3.0,<7.0a0 - ipopt >=3.14.19,<3.14.20.0a0 - - libblas >=3.9.0,<4.0a0 - libboost >=1.88.0,<1.89.0a0 - libzlib >=1.3.1,<2.0a0 - mpfr >=4.2.1,<5.0a0 - - pcre2 >=10.46,<10.47.0a0 + - pcre2 >=10.47,<10.48.0a0 - tbb >=2022.3.0 - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 - license: Apache-2.0 AND LGPL-3.0-or-later - size: 9238821 - timestamp: 1763141710631 + license: Apache-2.0 AND LGPL-3.0-or-later AND EPL-1.0 and MIT and Zlib and BSL-1.0 and HPND + size: 11063993 + timestamp: 1770284749390 - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.17.0-py312h54fa4ab_1.conda sha256: 5b296faf6f5ff90d9ea3f6b16ff38fe2b8fe81c7c45b5e3a78b48887cca881d1 md5: 828eb07c4c87c38ed8c6560c25893280 @@ -28196,9 +29243,9 @@ packages: license_family: BSD size: 22532 timestamp: 1767294175877 -- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_0.conda - sha256: 6b1a863b2a3e106e573a6efce2303963c3adc2764dfdbf08c4a35dbe62604988 - md5: 297e2901b530c5d321c563e66a65db99 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh5552912_1.conda + sha256: 8fc024bf1a7b99fc833b131ceef4bef8c235ad61ecb95a71a6108be2ccda63e8 + md5: b70e2d44e6aa2beb69ba64206a16e4c6 depends: - __osx - pyobjc-framework-cocoa @@ -28206,11 +29253,11 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 22409 - timestamp: 1768402460843 -- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh6dadd2b_0.conda - sha256: b64e5cdb66f5d31fcef05b6ed95b8be3e80796528aa8a165428496c0dda3383f - md5: 69ba308f1356f39901f5654d82405df3 + size: 22519 + timestamp: 1770937603551 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyh6dadd2b_1.conda + sha256: 305446a0b018f285351300463653d3d3457687270e20eda37417b12ee386ef76 + md5: 6ac53f3fff2c416d63511843a04646fa depends: - __win - pywin32 @@ -28218,28 +29265,28 @@ packages: - python license: BSD-3-Clause license_family: BSD - size: 22700 - timestamp: 1768402455730 -- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_0.conda - sha256: b25d573874fe39cb8e4cf6ed0279acb9a94fedce5c5ae885da11566d595035ad - md5: 645026465469ecd4989188e1c4e24953 + size: 22864 + timestamp: 1770937641143 +- conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-2.1.0-pyha191276_1.conda + sha256: 59656f6b2db07229351dfb3a859c35e57cc8e8bcbc86d4e501bff881a6f771f1 + md5: 28eb91468df04f655a57bcfbb35fc5c5 depends: - __linux - python >=3.10 - python license: BSD-3-Clause license_family: BSD - size: 23960 - timestamp: 1768402421616 -- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-80.10.1-pyh332efcf_0.conda - sha256: 89d5bb48047e7e27aa52a3a71d6ebf386e5ee4bdbd7ca91d653df9977eca8253 - md5: cb72cedd94dd923c6a9405a3d3b1c018 + size: 24108 + timestamp: 1770937597662 +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-82.0.0-pyh332efcf_0.conda + sha256: fd7201e38e38bf7f25818d624ca8da97b8998957ca9ae3fb7fdc9c17e6b25fcd + md5: 1d00d46c634177fc8ede8b99d6089239 depends: - python >=3.10 license: MIT license_family: MIT - size: 678025 - timestamp: 1768998156365 + size: 637506 + timestamp: 1770634745653 - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-scm-9.2.2-pyhd8ed1ab_0.conda sha256: 2161ac35fc22770b248bab0be2cc3b5bd765f528a9e60e7f3be784fd8d0d605a md5: e2e4d7094d0580ccd62e2a41947444f3 @@ -28375,6 +29422,72 @@ packages: license_family: BSD size: 613015 timestamp: 1762523741425 +- conda: https://conda.anaconda.org/conda-forge/noarch/shellingham-1.5.4-pyhd8ed1ab_2.conda + sha256: 1d6534df8e7924d9087bd388fbac5bd868c5bf8971c36885f9f016da0657d22b + md5: 83ea3a2ddb7a75c1b09cea582aa4f106 + depends: + - python >=3.10 + license: MIT + license_family: MIT + size: 15018 + timestamp: 1762858315311 +- conda: https://conda.anaconda.org/conda-forge/noarch/simpleeval-1.0.3-pyhd8ed1ab_0.conda + sha256: 19d1dab079746de0c38581d926e02306368b74d0683cd3e6b18ccabea54c7e07 + md5: 00cdd2e3ec6d3be6bc2b7d46470a10a1 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21558 + timestamp: 1751650049429 +- conda: https://conda.anaconda.org/conda-forge/linux-64/simplejson-3.20.2-py313h07c4f96_1.conda + sha256: cf44d6bd3dc3be6b683fac251d6b53d508d041506a2101fd7cdb404468cf8be3 + md5: 1cc1de04373b633177f4d367b8b75270 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 133692 + timestamp: 1762506927030 +- conda: https://conda.anaconda.org/conda-forge/osx-64/simplejson-3.20.2-py313hf050af9_1.conda + sha256: 15b28d63c119b4d42426255bdf3165ada1afb2578840cb6ccf8ac16fc492f148 + md5: 099e12ab59f12207a460dbb029f46a8b + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 133911 + timestamp: 1762507405598 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/simplejson-3.20.2-py313h6535dbc_1.conda + sha256: ef09659f0248066e8c06a0bd8bd1a360b8158cd2d73c65c969897e20344c6a2a + md5: 27a8bc65b5f0aecb87a01568e573e6ae + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + license: MIT + license_family: MIT + size: 133717 + timestamp: 1762507593463 +- conda: https://conda.anaconda.org/conda-forge/win-64/simplejson-3.20.2-py313h5ea7bf4_1.conda + sha256: b1ea3625e7dcda6ea6121dc61461da9bc9be54a99aa20ed26a5ee5b43663b5c4 + md5: bcdc4785e018f4325845f8217333a17e + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + license: MIT + license_family: MIT + size: 132684 + timestamp: 1762507090611 - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhe01879c_1.conda sha256: 458227f759d5e3fcec5d9b7acce54e10c9e1f4f4b7ec978f3bfd54ce4ee9853d md5: 3339e3b65d58accf4ca4fb8748ab16b3 @@ -28416,9 +29529,9 @@ packages: license_family: MIT size: 13919 timestamp: 1710194099964 -- conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.1.0-pyhdfd78af_0.conda - sha256: f65445e666eda1c29d97a74cf4ca238d8e3340d6c776d5a4d39394edb0610954 - md5: 01e79189d86f278322d0807f7d1dbada +- conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-2.2.0-pyhdfd78af_0.conda + sha256: 9b36ebba6454bfadfa2f3914e76ee5b879fc6d532ce7813adbe32b80b3416aab + md5: 4ed1b626504a1b8e9460ccc930d1310e depends: - numpy >=1.26.4,<3.0 - pandas >=2.2.3,<3.0 @@ -28430,8 +29543,8 @@ packages: - throttler >=1.2.2,<2.0.0 license: MIT license_family: MIT - size: 34089 - timestamp: 1768988421646 + size: 36381 + timestamp: 1770697334841 - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-executor-plugin-slurm-jobstep-0.4.0-pyhdfd78af_0.conda sha256: 82ad84bf106e0fbab62f6c001311aff53faefe323254c8b2b3540f310bb48dfe md5: 7d4f2bf739967798eb4d8c02d59cf36c @@ -28515,9 +29628,9 @@ packages: license: MIT size: 21016 timestamp: 1767973148161 -- conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.15.0-pyhdfd78af_0.conda - sha256: c01b7b4066d642cf67292537a5dc864e4faa4084abce03beaf7cb1457716f5b2 - md5: 71856e8d31fc4396cb4b3b57c9e7fb83 +- conda: https://conda.anaconda.org/bioconda/noarch/snakemake-minimal-9.16.3-pyhdfd78af_0.conda + sha256: b5f4e1d2c6e5916fa6a5d8e8615123207b2bffc66c7370ca81990224712ffcaa + md5: d5ff394122607ae4b0ee8362f6225959 depends: - appdirs - conda-inject >=1.3.1,<2.0 @@ -28551,11 +29664,11 @@ packages: - yte >=1.5.5,<2.0 license: MIT license_family: MIT - size: 869547 - timestamp: 1768984393774 -- conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.2.1-pyhdfd78af_0.conda - sha256: b7297b12f345b249678f2cc4bfff54b9ed74ced52e25591fa7c794077b3d14c8 - md5: f50f82ac51409fd0dc75a20a9f6930ea + size: 874768 + timestamp: 1770308884470 +- conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-cached-http-0.3-pyhdfd78af_0.conda + sha256: bfeb67de43a70a563567d4a5f200e24481e1b72eefc0ccc43e445f4f8c177b5a + md5: 15fe83cb157467c0c85c375f56abf199 depends: - httpx >=0.27,<1.dev0 - platformdirs >=4.0,<5.dev0 @@ -28568,8 +29681,8 @@ packages: - typing_extensions >=4.15,<5.dev0 - zstandard >=0.25.0,<0.26.0 license: MIT - size: 19775 - timestamp: 1769427441069 + size: 21008 + timestamp: 1770697322502 - conda: https://conda.anaconda.org/bioconda/noarch/snakemake-storage-plugin-http-0.3.0-pyhdfd78af_0.tar.bz2 sha256: 0fe598fee2cbb25ce5a6bd073a3514f36adde5e6e3e1ed486c7066e742286492 md5: 269943ac6637718947763b4f989710fc @@ -29042,17 +30155,37 @@ packages: license_family: BSD size: 11570614 timestamp: 1764983430194 -- conda: https://conda.anaconda.org/conda-forge/win-64/symlink-exe-runtime-1.0-hcfcfb64_0.tar.bz2 - sha256: 4a7096df38cf8c7e5ee965ea957c0fadf8b5e1140f5b2da625075cc6d7a22bf7 - md5: 2b03b51163e311e87a6d4a4e9776b24b +- conda: https://conda.anaconda.org/conda-forge/noarch/stringcase-1.2.0-pyhd8ed1ab_2.conda + sha256: 8184e801354ec82f686989f4664cc914d6a80686bb0856ac84bce8e82e8a0853 + md5: 6c17c5b9a3f8cf44137bfca12e2574d7 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 10339 + timestamp: 1734359694686 +- conda: https://conda.anaconda.org/conda-forge/win-64/symlink-exe-runtime-1.0-hfd05255_1.conda + sha256: b0bed04bef902b8537cc5a3b41501addfec2fc6f707d034fffff36414d9687aa + md5: 618cda283f0ad106ef59af3d490e885e depends: - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vs2015_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: BSD-3-Clause - license_family: BSD - size: 11597 - timestamp: 1666792984220 + size: 13277 + timestamp: 1771408906803 +- conda: https://conda.anaconda.org/conda-forge/noarch/tableschema-to-template-0.0.13-pyhd8ed1ab_1.conda + sha256: 0b06ad1f856103728a98c8307f1e49c8f272b6ab05e5b042c641cb794a1bfaf2 + md5: 44bbc578da0d9d6b2f511a9280984fa1 + depends: + - jsonschema >=1.0.0 + - python >=3.9 + - pyyaml >=3.13 + - xlsxwriter >=1.2.8 + license: MIT + license_family: MIT + size: 18215 + timestamp: 1735400827394 - conda: https://conda.anaconda.org/conda-forge/linux-64/tabula-py-2.7.0-py312h7900ff3_2.conda sha256: 9c7b2433d6cf73ae23ff964c2de681d093558826035b13bc8e30f528d332f46b md5: 1a47f3828efdbb8c947b71c23642209a @@ -29194,6 +30327,16 @@ packages: license_family: APACHE size: 25364 timestamp: 1743640859268 +- conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.1.4-pyhcf101f3_0.conda + sha256: 32e75900d6a094ffe4290a8c9f1fa15744d9da8ff617aba4acaa0f057a065c34 + md5: 043f0599dc8aa023369deacdb5ac24eb + depends: + - python >=3.10 + - python + license: Apache-2.0 + license_family: APACHE + size: 31404 + timestamp: 1770510172846 - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh6dadd2b_1.conda sha256: b375e8df0d5710717c31e7c8e93c025c37fa3504aea325c7a55509f64e5d4340 md5: e43ca10d61e55d0a8ec5d8c62474ec9e @@ -29220,6 +30363,15 @@ packages: license_family: BSD size: 24749 timestamp: 1766513766867 +- conda: https://conda.anaconda.org/conda-forge/noarch/text-unidecode-1.3-pyhd8ed1ab_2.conda + sha256: 4770807cc5a217638c9aea3f05ea55718a82c50f32462df196b5472aff02787f + md5: 23b4ba5619c4752976eb7ba1f5acb7e8 + depends: + - python >=3.9 + license: Artistic-1.0-Perl + license_family: OTHER + size: 65532 + timestamp: 1733750024391 - conda: https://conda.anaconda.org/conda-forge/noarch/threadpoolctl-3.6.0-pyhecae5ae_0.conda sha256: 6016672e0e72c4cf23c0cf7b1986283bd86a9c17e8d319212d78d8e9ae42fdfd md5: 9d64911b31d57ca443e9f1e36b04385f @@ -29238,61 +30390,60 @@ packages: license_family: MIT size: 12341 timestamp: 1691135604942 -- conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.5.1-pyhcf101f3_0.conda - sha256: 7c803480dbfb8b536b9bf6287fa2aa0a4f970f8c09075694174eb4550a4524cd - md5: c0d0b883e97906f7524e2aac94be0e0d +- conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + sha256: cad582d6f978276522f84bd209a5ddac824742fe2d452af6acf900f8650a73a2 + md5: f1acf5fdefa8300de697982bcb1761c9 depends: - - python >=3.10 + - python >=3.5 - webencodings >=0.4 - - python license: BSD-3-Clause license_family: BSD - size: 30571 - timestamp: 1764621508086 -- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda - sha256: 1544760538a40bcd8ace2b1d8ebe3eb5807ac268641f8acdc18c69c5ebfeaf64 - md5: 86bc20552bf46075e3d92b67f089172d + size: 28285 + timestamp: 1729802975370 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h366c992_103.conda + sha256: cafeec44494f842ffeca27e9c8b0c27ed714f93ac77ddadc6aaf726b5554ebac + md5: cffd3bdd58090148f4cfcd831f4b26ab depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 - libzlib >=1.3.1,<2.0a0 constrains: - xorg-libx11 >=1.8.12,<2.0a0 license: TCL license_family: BSD - size: 3284905 - timestamp: 1763054914403 -- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-hf689a15_3.conda - sha256: 0d0b6cef83fec41bc0eb4f3b761c4621b7adfb14378051a8177bd9bb73d26779 - md5: bd9f1de651dbd80b51281c694827f78f + size: 3301196 + timestamp: 1769460227866 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h7142dee_3.conda + sha256: 7f0d9c320288532873e2d8486c331ec6d87919c9028208d3f6ac91dc8f99a67b + md5: 6e6efb7463f8cef69dbcb4c2205bf60e depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 license: TCL license_family: BSD - size: 3262702 - timestamp: 1763055085507 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda - sha256: ad0c67cb03c163a109820dc9ecf77faf6ec7150e942d1e8bb13e5d39dc058ab7 - md5: a73d54a5abba6543cb2f0af1bfbd6851 + size: 3282953 + timestamp: 1769460532442 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda + sha256: 799cab4b6cde62f91f750149995d149bc9db525ec12595e8a1d91b9317f038b3 + md5: a9d86bc62f39b94c4661716624eb21b0 depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 license: TCL license_family: BSD - size: 3125484 - timestamp: 1763055028377 -- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h2c6b04d_3.conda - sha256: 4581f4ffb432fefa1ac4f85c5682cc27014bcd66e7beaa0ee330e927a7858790 - md5: 7cb36e506a7dba4817970f8adb6396f9 + size: 3127137 + timestamp: 1769460817696 +- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h6ed50ae_3.conda + sha256: 0e79810fae28f3b69fe7391b0d43f5474d6bd91d451d5f2bde02f55ae481d5e3 + md5: 0481bfd9814bf525bd4b3ee4b51494c4 depends: - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 license: TCL license_family: BSD - size: 3472313 - timestamp: 1763055164278 + size: 3526350 + timestamp: 1769460339384 - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.0-pyhcf101f3_0.conda sha256: 62940c563de45790ba0f076b9f2085a842a65662268b02dd136a8e9b1eaf47a8 md5: 72e780e9aa2d0a3295f59b1874e3768b @@ -29417,25 +30568,37 @@ packages: license_family: Apache size: 880049 timestamp: 1765836649731 -- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_1.conda - sha256: 11e2c85468ae9902d24a27137b6b39b4a78099806e551d390e394a8c34b48e40 - md5: 9efbfdc37242619130ea42b1cc4ed861 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyh8f84b5b_0.conda + sha256: 9ef8e47cf00e4d6dcc114eb32a1504cc18206300572ef14d76634ba29dfe1eb6 + md5: e5ce43272193b38c2e9037446c1d9206 + depends: + - python >=3.10 + - __unix + - python + license: MPL-2.0 and MIT + size: 94132 + timestamp: 1770153424136 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.3-pyha7b4d00_0.conda + sha256: 63cc2def6e168622728c7800ed6b3c1761ceecb18b354c81cee1a0a94c09900a + md5: af77160f8428924c17db94e04aa69409 depends: + - python >=3.10 - colorama - - python >=3.9 - license: MPL-2.0 or MIT - size: 89498 - timestamp: 1735661472632 -- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.2-pyhd8ed1ab_0.conda - sha256: 0ef81543ff9209e6c27770193eb8815533f454c4fb054e1e8f8f59857afaab3c - md5: bdb8608d3b834159b1b684dc6df3ac44 + - __win + - python + license: MPL-2.0 and MIT + size: 93399 + timestamp: 1770153445242 +- conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-loggable-0.3-pyhd8ed1ab_0.conda + sha256: 4ef00821cd223e2f16eb0fd314fb8a9e06227b268bc6dfa782fbd8e90eb37047 + md5: c97b99b1f4f76708edbe7b5811d95da9 depends: - python >=3.10 - tqdm >4.64 license: MIT license_family: MIT - size: 15724 - timestamp: 1763471194522 + size: 16148 + timestamp: 1770713660263 - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 md5: 019a7385be9af33791c989871317e1ed @@ -29477,20 +30640,34 @@ packages: license_family: MIT size: 220388 timestamp: 1750060333624 -- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.4.4-pyhd8ed1ab_0.conda - sha256: 591e03a61b4966a61b15a99f91d462840b6e77bf707ecb48690b24649fee921a - md5: 8b2613dbfd4e2bc9080b2779b53fc210 +- conda: https://conda.anaconda.org/conda-forge/noarch/typeguard-4.5.0-pyhd8ed1ab_0.conda + sha256: 821e23d73e12e99ee5c722120b2c4cf164191adb56fb96a96bd725b2d60d9b10 + md5: b514a7bd078dcb4520a1aea4d14c5a3a depends: - importlib-metadata >=3.6 - - python >=3.9 + - python >=3.10 - typing-extensions >=4.10.0 - typing_extensions >=4.14.0 constrains: - pytest >=7 license: MIT license_family: MIT - size: 35158 - timestamp: 1750249264892 + size: 37088 + timestamp: 1771119690965 +- conda: https://conda.anaconda.org/conda-forge/noarch/typer-0.23.1-pyhcf101f3_0.conda + sha256: d89149cbb4244e4a0aa0f836a4f75b1e4c26e8e33bcda041f91b67e193b40c68 + md5: bac7249fa4302ee17e1ae0aa17991732 + depends: + - annotated-doc >=0.0.2 + - click >=8.0.0 + - python >=3.10 + - rich >=10.11.0 + - shellingham >=1.3.0 + - python + license: MIT + license_family: MIT + size: 119515 + timestamp: 1770989162958 - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.15.0-h396c80c_0.conda sha256: 7c2df5721c742c2a47b2c8f960e718c930031663ac1174da67c1ed5999f7938c md5: edd329d7d3a4ab45dcf905899a7a6115 @@ -29555,9 +30732,64 @@ packages: license: LicenseRef-MicrosoftWindowsSDK10 size: 694692 timestamp: 1756385147981 -- conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h7037e92_6.conda - sha256: bd1f3d159b204be5aeeb3dd165fad447d3a1c5df75fec64407a68f210a0cb722 - md5: 1fa8d662361896873a165b051322073e +- conda: https://conda.anaconda.org/conda-forge/linux-64/ujson-5.11.0-py313h5d5ffb9_1.conda + sha256: 0ba07c2f26a9c328d437adc38c510827141be0910dc10f6cd7e769774f8af86f + md5: 3d6453bc28f78bfa0841b18dec45353e + depends: + - python + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + - libstdcxx >=14 + - libgcc >=14 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 59579 + timestamp: 1756674035664 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ujson-5.11.0-py313h03db916_1.conda + sha256: d228a276f8907b3e069b242f90a1e0d660fd003331a3516b1e46927afae939c8 + md5: 9e01b71fd0f9308e5a079076659528c6 + depends: + - python + - libcxx >=19 + - __osx >=10.13 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 68519 + timestamp: 1756674089835 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ujson-5.11.0-py313hab38a8b_1.conda + sha256: a3a81b9150aa500246dc1022b0c62b6fd0c15575b0c594dab55cfc9b198ce67a + md5: 20402be2af0775ceca6f9178cf9c3428 + depends: + - python + - python 3.13.* *_cp313 + - libcxx >=19 + - __osx >=11.0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 66186 + timestamp: 1756674132941 +- conda: https://conda.anaconda.org/conda-forge/win-64/ujson-5.11.0-py313h927ade5_1.conda + sha256: 6684f9b9fa714b7b8371e2b6ef9cdbf191dd86368c2c78a80dac465008d20d45 + md5: 732c8a251a3ad390f7ea8b5035dd901d + depends: + - python + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.44.35208 + - ucrt >=10.0.20348.0 + - python_abi 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 51192 + timestamp: 1756674062039 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.1.0-py313h7037e92_0.conda + sha256: 7f2e4f38e57c17858c644259a1be868d6e98780239fd93bfa057cb5cfc24a928 + md5: cb423e0853b3dde2b3738db4dedf5ba2 depends: - __glibc >=2.17,<3.0.a0 - cffi @@ -29567,11 +30799,11 @@ packages: - python_abi 3.13.* *_cp313 license: MIT license_family: MIT - size: 14648 - timestamp: 1761594865380 -- conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313hc551f4f_6.conda - sha256: d43fa38576dce4df55765d1e0c4628e95055cc4222a884773bdf9037c48737d2 - md5: 296e02bdc5cd5799f3b022f67d8ecd52 + size: 14910 + timestamp: 1769438729201 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.1.0-py313h252b9d7_0.conda + sha256: 201d026c60bbbdd7c9bf9b3c61f807711ba24a9899a1b7f8a978b507d44d7efa + md5: e6ab56e180655e23353afea13caebc44 depends: - __osx >=10.13 - cffi @@ -29580,11 +30812,11 @@ packages: - python_abi 3.13.* *_cp313 license: MIT license_family: MIT - size: 14003 - timestamp: 1761595107671 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hc50a443_6.conda - sha256: 66596db68cd50d61af97b01de4fd6ba5b08c4f5c779c331888196253b4daf353 - md5: 8e87b6fff522cabf8c02878c24d44312 + size: 14202 + timestamp: 1769439075795 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.1.0-py313h5c29297_0.conda + sha256: d28d0242d3fa23784630c775d5b628ce25e2d45f5d3f1cfcdc3815bc954073fa + md5: 43b1eb729bd1cd9ea595548eb8100b65 depends: - __osx >=11.0 - cffi @@ -29594,11 +30826,11 @@ packages: - python_abi 3.13.* *_cp313 license: MIT license_family: MIT - size: 14535 - timestamp: 1761595088230 -- conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313hf069bd2_6.conda - sha256: f42cd55bd21746274d7074b93b53fb420b4ae0f8f1b6161cb2cc5004c20c7ec7 - md5: 77444fe3f3004fe52c5ee70626d11d66 + size: 14773 + timestamp: 1769439197815 +- conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.1.0-py313hf069bd2_0.conda + sha256: 09f3bb587199361774612f4e70226d8688eda264b452ec401e1ce904633dde43 + md5: bfa075d1cd7bf341b8189af9616ce537 depends: - cffi - python >=3.13,<3.14.0a0 @@ -29608,11 +30840,11 @@ packages: - vc14_runtime >=14.44.35208 license: MIT license_family: MIT - size: 18266 - timestamp: 1761595426854 -- conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.0-py312h4c3975b_1.conda - sha256: 3c812c634e78cec74e224cc6adf33aed533d9fe1ee1eff7f692e1f338efb8c5b - md5: a0b8efbe73c90f810a171a6c746be087 + size: 18441 + timestamp: 1769438882754 +- conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-17.0.1-py312h4c3975b_0.conda + sha256: 895bbfe9ee25c98c922799de901387d842d7c01cae45c346879865c6a907f229 + md5: 0b6c506ec1f272b685240e70a29261b8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 @@ -29620,22 +30852,22 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 408399 - timestamp: 1763054875733 -- conda: https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-17.0.0-py312h80b0991_1.conda - sha256: 1e85f9891f5f1e03aaf4b02af66b296596a2c487180f7c21ee9f57ed104821ac - md5: 32a0138cbc4a3934d61fef34a4b8e1c5 + size: 410641 + timestamp: 1770909099497 +- conda: https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-17.0.1-py312h1a1c95f_0.conda + sha256: 29bdc3648a4b8011c572003234ebfaa13666aa71760c9f89f798758ccebd7448 + md5: 563dc18b746f873408b76e068e2b4baa depends: - __osx >=10.13 - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 403881 - timestamp: 1763055352529 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-17.0.0-py312h4409184_1.conda - sha256: 567cebbb3a1a5c76e5ec43508e01ccbe98923ad0003eafd87acbbc546fcd588c - md5: b0b0c7ea4888b6f4009afa7001e6adaa + size: 406056 + timestamp: 1770909495553 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-17.0.1-py312h2bbb03f_0.conda + sha256: e935d0c11581e31e89ce4899a28b16f924d1a3c1af89f18f8a2c5f5728b3107f + md5: 45b836f333fd3e282c16fff7dc82994e depends: - __osx >=11.0 - python >=3.12,<3.13.0a0 @@ -29643,11 +30875,11 @@ packages: - python_abi 3.12.* *_cp312 license: Apache-2.0 license_family: Apache - size: 416271 - timestamp: 1763055285615 -- conda: https://conda.anaconda.org/conda-forge/win-64/unicodedata2-17.0.0-py312he06e257_1.conda - sha256: f05083b85ee3fb1315e0d6df0bdd597074ef909838391d7e31daaec7381dc28a - md5: 2e4fbe70f86b42b01228cdbcc4b52351 + size: 415828 + timestamp: 1770909782683 +- conda: https://conda.anaconda.org/conda-forge/win-64/unicodedata2-17.0.1-py312he06e257_0.conda + sha256: 577fcd97b5b855d341ee511307a0c05f632d184544e31ff9621690770843c995 + md5: 9c46f390eb4b5c6e502df20378e442dd depends: - python >=3.12,<3.13.0a0 - python_abi 3.12.* *_cp312 @@ -29656,8 +30888,8 @@ packages: - vc14_runtime >=14.44.35208 license: Apache-2.0 license_family: Apache - size: 405140 - timestamp: 1763054857048 + size: 405896 + timestamp: 1770909182518 - conda: https://conda.anaconda.org/conda-forge/noarch/unidecode-1.4.0-pyhcf101f3_1.conda sha256: 184d1377f88251983ef5154aea0d6cb73108afc8510ed66526afb1c44b2e1259 md5: 53cb4b14ab0841e104e2bd11ee64b840 @@ -29718,6 +30950,17 @@ packages: license_family: BSD size: 49181 timestamp: 1715010467661 +- conda: https://conda.anaconda.org/conda-forge/noarch/url-normalize-2.2.1-pyhd8ed1ab_0.conda + sha256: cca5bed1abaf9b20f444dd5e140ed3c1ad9e27e6f4085499648c6545581a9d2a + md5: 5db19244300bf33e9471a0b13f9b94cb + depends: + - idna + - python >=3.9 + - six + license: MIT + license_family: MIT + size: 18865 + timestamp: 1745706106266 - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.5.0-pyhd8ed1ab_0.conda sha256: 4fb9789154bd666ca74e428d973df81087a697dbb987775bc3198d2215f240f8 md5: 436c165519e140cb08d246a4472a9d6a @@ -29787,19 +31030,20 @@ packages: license_family: Proprietary size: 115235 timestamp: 1767320173250 -- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.36.1-pyhd8ed1ab_0.conda - sha256: fa0a21fdcd0a8e6cf64cc8cd349ed6ceb373f09854fd3c4365f0bc4586dccf9a - md5: 6b0259cea8ffa6b66b35bae0ca01c447 +- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.37.0-pyhcf101f3_1.conda + sha256: 4ce2e967925a30f65d5f63f811766ca53a6024b65f37e396ffd24d6d4d4d29cb + md5: c4c4f99faba7174b3d99b79baf60697d depends: + - python >=3.10 - distlib >=0.3.7,<1 - - filelock >=3.20.1,<4 + - filelock >=3.24.2,<4 - platformdirs >=3.9.1,<5 - - python >=3.10 - typing_extensions >=4.13.2 + - python license: MIT license_family: MIT - size: 4404318 - timestamp: 1768069793682 + size: 4655565 + timestamp: 1771315126700 - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.44.35208-h38c0c73_34.conda sha256: 63ff4ec6e5833f768d402f5e95e03497ce211ded5b6f492e660e2bfc726ad24d md5: f276d1de4553e8fca1dfb6988551ebb4 @@ -29835,14 +31079,27 @@ packages: license_family: MIT size: 329779 timestamp: 1761174273487 -- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.4.0-pyhd8ed1ab_0.conda - sha256: 409044a67ba5db514069c7b0f675d82906bbc2c8271f6a35ef45c7b20d1b2e41 - md5: cba8aff819d6eec578c9994f6eb58934 +- conda: https://conda.anaconda.org/conda-forge/noarch/wbgapi-1.0.12-pyhd8ed1ab_0.tar.bz2 + sha256: a11792999f4c92b182b7c3c444d2981da3b8e7b6b561d8ad2d342d4e39dfa13b + md5: a2e1ba950c0ec23e3ea0b915743a37e0 + depends: + - python >=3.0 + - pyyaml + - requests + - tabulate + license: MIT + license_family: MIT + size: 31563 + timestamp: 1657092070355 +- conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.6.0-pyhd8ed1ab_0.conda + sha256: e298b508b2473c4227206800dfb14c39e4b14fd79d4636132e9e1e4244cdf4aa + md5: c3197f8c0d5b955c904616b716aca093 depends: - python >=3.10 license: MIT - size: 65384 - timestamp: 1769427280320 + license_family: MIT + size: 71550 + timestamp: 1770634638503 - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-25.10.0-pyhd8ed1ab_0.conda sha256: 21f6c8a20fe050d09bfda3fb0a9c3493936ce7d6e1b3b5f8b01319ee46d6c6f6 md5: 6639b6b0d8b5a284f027a2003669aa65 @@ -29880,6 +31137,15 @@ packages: license_family: BSD size: 633673 timestamp: 1729587712065 +- conda: https://conda.anaconda.org/conda-forge/noarch/win32_setctime-1.2.0-pyhd8ed1ab_0.conda + sha256: d7b3128166949d462133d7a86fd8a8d80224dd2ce49cfbdcde9e4b3f8b67bbf2 + md5: e79f83003ee3dba79bf795fcd1bfcc89 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 9751 + timestamp: 1733752552137 - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda sha256: 93807369ab91f230cf9e6e2a237eaa812492fe00face5b38068735858fba954f md5: 46e441ba871f524e2b067929da3051c2 @@ -30187,6 +31453,33 @@ packages: license_family: BSD size: 93671 timestamp: 1756170155688 +- conda: https://conda.anaconda.org/conda-forge/noarch/xlsx2csv-0.8.6-pyhd8ed1ab_0.conda + sha256: cb2c3f58ceafc4ac25b86c1ed3570b4c02773f6722d11832255be700ee47b59a + md5: 87d8cdffe25acbcc4c9a974c821b5cb8 + depends: + - python >=3.10 + license: MIT + license_family: MIT + size: 22205 + timestamp: 1769873366470 +- conda: https://conda.anaconda.org/conda-forge/noarch/xlsxwriter-3.2.9-pyhd8ed1ab_0.conda + sha256: 6ed46549d156bc109803f43fd0c336bc4604aabdeee3de2a6e8ce3eff25b1a60 + md5: fa127b9f29f64174437524d0d61432f4 + depends: + - python >=3.10 + license: BSD-2-Clause + license_family: BSD + size: 133826 + timestamp: 1760304475989 +- conda: https://conda.anaconda.org/conda-forge/noarch/xlwt-1.3.0-py_1.tar.bz2 + sha256: 3a019d182779f53c65f1a4466d5c1d3363b200d5e3b554cc2a6303d318b7ca0b + md5: deb0fb0c5977e3aa33050a9c405842a4 + depends: + - python + license: BSD + license_family: BSD + size: 85227 + timestamp: 1531611142582 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b md5: fb901ff28063514abb6046c9ec2c4a45 @@ -30233,29 +31526,29 @@ packages: license_family: MIT size: 97096 timestamp: 1741896840170 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda - sha256: 51909270b1a6c5474ed3978628b341b4d4472cd22610e5f22b506855a5e20f67 - md5: db038ce880f100acc74dba10302b5630 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.13-he1eb515_0.conda + sha256: 516d4060139dbb4de49a4dcdc6317a9353fb39ebd47789c14e6fe52de0deee42 + md5: 861fb6ccbc677bb9a9fb2468430b9c6a depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc >=14 - libxcb >=1.17.0,<2.0a0 license: MIT license_family: MIT - size: 835896 - timestamp: 1741901112627 -- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.12-hf48077a_0.conda - sha256: 3f0854bc592d31a5742c6c4550914a976c89d73b74d052545b418521d21b3043 - md5: c4f435ac09fd41606bba9f0deb12e412 + size: 839652 + timestamp: 1770819209719 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.13-hfa52320_0.conda + sha256: eadb12d4597b577cf9bde82a8a2a502a331bd5bfdd60ce508cea93912478e255 + md5: 5a823e21e090f8bc43dbfba00cd2f0e2 depends: - - libgcc >=13 + - libgcc >=14 - libwinpthread >=12.0.0.r4.gg4f2fc60ca - libxcb >=1.17.0,<2.0a0 - ucrt >=10.0.20348.0 license: MIT license_family: MIT - size: 951392 - timestamp: 1741902072732 + size: 954604 + timestamp: 1770819901886 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda sha256: 6bc6ab7a90a5d8ac94c7e300cc10beb0500eeba4b99822768ca2f2ef356f731b md5: b2895afaf55bf96a8c8282a2e47a5de0 @@ -30295,18 +31588,18 @@ packages: license_family: MIT size: 109246 timestamp: 1762977105140 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda - sha256: 753f73e990c33366a91fd42cc17a3d19bb9444b9ca5ff983605fa9e953baf57f - md5: d3c295b50f092ab525ffe3c2aa4b7413 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.7-hb03c661_0.conda + sha256: 048c103000af9541c919deef03ae7c5e9c570ffb4024b42ecb58dbde402e373a + md5: f2ba4192d38b6cef2bb2c25029071d90 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - xorg-libx11 >=1.8.10,<2.0a0 - - xorg-libxfixes >=6.0.1,<7.0a0 + - libgcc >=14 + - xorg-libx11 >=1.8.12,<2.0a0 + - xorg-libxfixes >=6.0.2,<7.0a0 license: MIT license_family: MIT - size: 13603 - timestamp: 1727884600744 + size: 14415 + timestamp: 1770044404696 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda sha256: 832f538ade441b1eee863c8c91af9e69b356cd3e9e1350fff4fe36cc573fc91a md5: 2ccd714aa2242315acaf0a67faea780b @@ -30372,29 +31665,29 @@ packages: license_family: MIT size: 70691 timestamp: 1762977015220 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda - sha256: da5dc921c017c05f38a38bd75245017463104457b63a1ce633ed41f214159c14 - md5: febbab7d15033c913d53c7a2c102309d +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.7-hb03c661_0.conda + sha256: 79c60fc6acfd3d713d6340d3b4e296836a0f8c51602327b32794625826bd052f + md5: 34e54f03dfea3e7a2dcf1453a85f1085 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - xorg-libx11 >=1.8.10,<2.0a0 + - libgcc >=14 + - xorg-libx11 >=1.8.12,<2.0a0 license: MIT license_family: MIT - size: 50060 - timestamp: 1727752228921 -- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.6-h0e40799_0.conda - sha256: 7fdc3135a340893aa544921115c3994ef4071a385d47cc11232d818f006c63e4 - md5: 4cd74e74f063fb6900d6eed2e9288112 + size: 50326 + timestamp: 1769445253162 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.7-hba3369d_0.conda + sha256: 5966dff3ea3f805e11b5fb466107d64704eb94f00d28818f6891a3ecd075d08e + md5: 74bc8e26c2716e9b1542bef908887b82 depends: - - libgcc >=13 + - libgcc >=14 - libwinpthread >=12.0.0.r4.gg4f2fc60ca - ucrt >=10.0.20348.0 - - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libx11 >=1.8.12,<2.0a0 license: MIT license_family: MIT - size: 284715 - timestamp: 1727752838922 + size: 286083 + timestamp: 1769445495320 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda sha256: 83c4c99d60b8784a611351220452a0a85b080668188dce5dfa394b723d7b64f4 md5: ba231da7fccf9ea1e768caf5c7099b84 @@ -30432,33 +31725,33 @@ packages: license_family: MIT size: 14818 timestamp: 1769432261050 -- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-h0e40799_1.conda - sha256: a605b43b2622a4cae8df6edc148c02b527da4ea165ec67cabb5c9bc4f3f8ef13 - md5: e8b816fb37bc61aa3f1c08034331ef53 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.18-hba3369d_0.conda + sha256: 2004ebe53ce5e7288f148f2d92dd52526fd6ee0f5435bf95cf48de808028cd68 + md5: 52105b90eaf5b859cb383348e99cbac2 depends: - - libgcc >=13 + - libgcc >=14 - libwinpthread >=12.0.0.r4.gg4f2fc60ca - ucrt >=10.0.20348.0 - - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libx11 >=1.8.12,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 - - xorg-libxt >=1.3.0,<2.0a0 + - xorg-libxt >=1.3.1,<2.0a0 license: MIT license_family: MIT - size: 236112 - timestamp: 1727801849623 -- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda - sha256: ac0f037e0791a620a69980914a77cb6bb40308e26db11698029d6708f5aa8e0d - md5: 2de7f99d6581a4a7adbff607b5c278ca + size: 237697 + timestamp: 1769445545101 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.5-hb03c661_0.conda + sha256: 80ed047a5cb30632c3dc5804c7716131d767089f65877813d4ae855ee5c9d343 + md5: e192019153591938acf7322b6459d36e depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - xorg-libx11 >=1.8.10,<2.0a0 + - libgcc >=14 + - xorg-libx11 >=1.8.12,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 - - xorg-libxrender >=0.9.11,<0.10.0a0 + - xorg-libxrender >=0.9.12,<0.10.0a0 license: MIT license_family: MIT - size: 29599 - timestamp: 1727794874300 + size: 30456 + timestamp: 1769445263457 - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 md5: 96d57aba173e878a2089d5638016dc5e @@ -30554,43 +31847,6 @@ packages: license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later size: 24101 timestamp: 1768752698238 -- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.2-h8df612c_0.conda - sha256: 1cf3c0f80e2c2f18f9b925e7fe0f4540185958e47284f43edb37a1ae850f60a7 - md5: 6aceb22c49cb9c690fa7a9b700163c28 - depends: - - __osx >=10.13 - - liblzma 5.8.2 h11316ed_0 - - liblzma-devel 5.8.2 h11316ed_0 - - xz-gpl-tools 5.8.2 h8df612c_0 - - xz-tools 5.8.2 h11316ed_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 24063 - timestamp: 1768753539300 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.8.2-hd0f0c4f_0.conda - sha256: 1f16a26d80e20db470196baa680906af92e31e6d873d2f7bc1c79c499797a261 - md5: b86b8e8daf1c8ac572bff820e6160473 - depends: - - __osx >=11.0 - - liblzma 5.8.2 h8088a28_0 - - liblzma-devel 5.8.2 h8088a28_0 - - xz-gpl-tools 5.8.2 hd0f0c4f_0 - - xz-tools 5.8.2 h8088a28_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 24143 - timestamp: 1768753074129 -- conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.8.2-hb6c8415_0.conda - sha256: 95078b4835f88b9e80368dc4ecfc261f8f85da457de3eca94867b1c0862b0851 - md5: 5cab33f097ff61c7c8c31146b5b8d35a - depends: - - liblzma 5.8.2 hfd05255_0 - - liblzma-devel 5.8.2 hfd05255_0 - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - - xz-tools 5.8.2 hfd05255_0 - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 24394 - timestamp: 1768752837182 - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.2-ha02ee65_0.conda sha256: a4876e9fb124665315aedfe96b1a832e2c26312241061d5f990208aaf380da46 md5: a159fe1e8200dd67fa88ddea9169d25a @@ -30603,28 +31859,6 @@ packages: license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later size: 33774 timestamp: 1768752679459 -- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.2-h8df612c_0.conda - sha256: 79e605b287b55eec6e71727b1a6487f0d1dc032d0260cf15a9a0bdb337b3445b - md5: dc48d35878e8be3fc20616673955752b - depends: - - __osx >=10.13 - - liblzma 5.8.2 h11316ed_0 - constrains: - - xz 5.8.2.* - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 33987 - timestamp: 1768753509338 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.8.2-hd0f0c4f_0.conda - sha256: 63ebc0691cb36c293b5c829237598b336efd7f368b4c75a64544e70ae6ac3582 - md5: 3c8f80ff660321d5259ebc3743265566 - depends: - - __osx >=11.0 - - liblzma 5.8.2 h8088a28_0 - constrains: - - xz 5.8.2.* - license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later - size: 34000 - timestamp: 1768753049327 - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.2-hb03c661_0.conda sha256: 65c8a236b89a4ad24565a986b7c00b8cb2906af52fd9963730c44ea56a9fde9a md5: dfd6129671f782988d665354e7aa269d @@ -30637,41 +31871,6 @@ packages: license: 0BSD AND LGPL-2.1-or-later size: 96093 timestamp: 1768752662020 -- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.2-h11316ed_0.conda - sha256: c397fb97ed70e8d86d3426acce15b0f3aaef2c78ce3df5fd445b897bf3b7b9a0 - md5: 8c55281fadb998fba0bc4fd9268b6479 - depends: - - __osx >=10.13 - - liblzma 5.8.2 h11316ed_0 - constrains: - - xz 5.8.2.* - license: 0BSD AND LGPL-2.1-or-later - size: 85683 - timestamp: 1768753476737 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.8.2-h8088a28_0.conda - sha256: 2059328bb4eeb8c30e9d187a67c66ca3d848fbc3025547f99f846bc7aadb6423 - md5: c2650d5190be15af804ae1d8a76b0cca - depends: - - __osx >=11.0 - - liblzma 5.8.2 h8088a28_0 - constrains: - - xz 5.8.2.* - license: 0BSD AND LGPL-2.1-or-later - size: 85638 - timestamp: 1768753028023 -- conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.8.2-hfd05255_0.conda - sha256: bdc4ce44d0dc7197363814b25c5bd4c272a2ae4f936f32e3a04db23bb48a52ad - md5: 4ceff37d9a69e86daa8b94acfe448186 - depends: - - liblzma 5.8.2 hfd05255_0 - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.44.35208 - constrains: - - xz 5.8.2.* - license: 0BSD AND LGPL-2.1-or-later - size: 67901 - timestamp: 1768752814105 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h280c20c_3.conda sha256: 6d9ea2f731e284e9316d95fa61869fe7bbba33df7929f82693c121022810f4ad md5: a77f85f77be52ff59391544bfe73390a @@ -30879,30 +32078,27 @@ packages: license_family: MOZILLA size: 310648 timestamp: 1757370847287 -- conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h6c33b1e_9.conda - sha256: 30aa5a2e9c7b8dbf6659a2ccd8b74a9994cdf6f87591fcc592970daa6e7d3f3c - md5: d940d809c42fbf85b05814c3290660f5 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zeromq-4.3.5-h93d8f39_0.conda + sha256: 19be553b3cc8352b6e842134b8de66ae39fcae80bc575c203076370faab6009c + md5: 4c055e46b394be36681fe476c1e2ee6e depends: - - __osx >=10.13 - - libcxx >=19 - - libsodium >=1.0.20,<1.0.21.0a0 - - krb5 >=1.21.3,<1.22.0a0 + - __osx >=10.9 + - libcxx >=16.0.6 + - libsodium >=1.0.18,<1.0.19.0a0 license: MPL-2.0 license_family: MOZILLA - size: 259628 - timestamp: 1757371000392 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-h888dc83_9.conda - sha256: b6f9c130646e5971f6cad708e1eee278f5c7eea3ca97ec2fdd36e7abb764a7b8 - md5: 26f39dfe38a2a65437c29d69906a0f68 + size: 294253 + timestamp: 1697057208271 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zeromq-4.3.5-hebf3989_1.conda + sha256: caf6df12d793600faec21b7e6025e2e8fb8de26672cce499f9471b99b6776eb1 + md5: 19cff1c627ff58429701113bf35300c8 depends: - - __osx >=11.0 - - libcxx >=19 - - libsodium >=1.0.20,<1.0.21.0a0 - - krb5 >=1.21.3,<1.22.0a0 + - libcxx >=16 + - libsodium >=1.0.18,<1.0.19.0a0 license: MPL-2.0 license_family: MOZILLA - size: 244772 - timestamp: 1757371008525 + size: 288572 + timestamp: 1709135728486 - conda: https://conda.anaconda.org/conda-forge/win-64/zeromq-4.3.5-h5bddc39_9.conda sha256: 690cf749692c8ea556646d1a47b5824ad41b2f6dfd949e4cdb6c44a352fcb1aa md5: a6c8f8ee856f7c3c1576e14b86cd8038 @@ -30981,48 +32177,48 @@ packages: license_family: Other size: 107439 timestamp: 1727963788936 -- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.2-hceb46e0_1.conda - sha256: f2b6a175677701a0b6ce556b3bd362dc94a4e36ffcd10e3860e52ca036b4ad96 - md5: 40feea2979654ed579f1cda7c63ccb94 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-ng-2.3.3-hceb46e0_1.conda + sha256: ea4e50c465d70236408cb0bfe0115609fd14db1adcd8bd30d8918e0291f8a75f + md5: 2aadb0d17215603a82a2a6b0afd9a4cb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=14 - libstdcxx >=14 license: Zlib license_family: Other - size: 122303 - timestamp: 1766076745735 -- conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.2-h8bce59a_1.conda - sha256: 945725769bc668435af1c23733c3c1dba01eb115ad3bad5393c9df2e23de6cfc - md5: cdd69480d52f2b871fad1a91324d9942 + size: 122618 + timestamp: 1770167931827 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-ng-2.3.3-h8bce59a_1.conda + sha256: 4a1beb656761c7d8c9a53474bfd3932c30d82af5d93a32b8ef626c01c059d981 + md5: b3ecb6480fd46194e3f7dd0ff4445dff depends: - __osx >=10.13 - libcxx >=19 license: Zlib license_family: Other - size: 120585 - timestamp: 1766077108928 -- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.2-hed4e4f5_1.conda - sha256: ab481487381a6a6213d667e883252e52b8ca867b3b466c31a058126f964efffe - md5: 75f39a44c08cb5dc4ea847698de34ba3 + size: 120464 + timestamp: 1770168263684 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-ng-2.3.3-hed4e4f5_1.conda + sha256: a339606a6b224bb230ff3d711e801934f3b3844271df9720165e0353716580d4 + md5: d99c2a23a31b0172e90f456f580b695e depends: - __osx >=11.0 - libcxx >=19 license: Zlib license_family: Other - size: 94882 - timestamp: 1766076931977 -- conda: https://conda.anaconda.org/conda-forge/win-64/zlib-ng-2.3.2-h0261ad2_1.conda - sha256: e058e925bed8d9e5227cecc098e02992813046fd89206194435e975a9f6eff56 - md5: bc2fba648e1e784c549e20bbe1a8af40 + size: 94375 + timestamp: 1770168363685 +- conda: https://conda.anaconda.org/conda-forge/win-64/zlib-ng-2.3.3-h0261ad2_1.conda + sha256: 71332532332d13b5dbe57074ddcf82ae711bdc132affa5a2982a29ffa06dc234 + md5: 46a21c0a4e65f1a135251fc7c8663f83 depends: - ucrt >=10.0.20348.0 - vc >=14.3,<15 - vc14_runtime >=14.44.35208 license: Zlib license_family: Other - size: 123890 - timestamp: 1766076739436 + size: 124542 + timestamp: 1770167984883 - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.25.0-py312h5253ce2_1.conda sha256: c2bcb8aa930d6ea3c9c7a64fc4fab58ad7bcac483a9a45de294f67d2f447f413 md5: 02738ff9855946075cbd1b5274399a41 diff --git a/pixi.toml b/pixi.toml index 959f45c2d4..626aa79dc2 100644 --- a/pixi.toml +++ b/pixi.toml @@ -29,7 +29,6 @@ logs, resources, benchmarks, results, and .snakemake directories except \ """ update-dags = """ - dot -c && \ snakemake results/networks/base_s_128_elec_.nc -F --dag | sed -n "/digraph/,/}/p" | dot -Tpng -o doc/img/intro-workflow.png && \ snakemake --rulegraph -F | sed -n "/digraph/,/}/p" | dot -Tpng -o doc/img/workflow.png """ @@ -82,6 +81,7 @@ python = ">=3.10" pytz = ">=2025.2" pyxlsb = ">=1.0.10" rasterio = ">=1.4.3" +rasterstats = ">=0.10.3" rioxarray = ">=0.20.0" ruff = ">=0.14.3" "ruamel.yaml" = ">=0.18.0" @@ -101,13 +101,15 @@ snakemake-storage-plugin-cached-http = ">=0.2.1" pandera = ">=0.28.1" natsort = ">=8.4.0" snakemake-logger-plugin-pypsa = ">=0.1.0" +pydeflate = ">=2.3.4" +grpcio = "<1.78" [target.unix.dependencies] snakemake-executor-plugin-slurm = ">=1.9.2" [feature.doc.tasks.build-docs] args = ["dir", {"arg" = "output", "default" = "html"}] -cmd = "dot -c && sphinx-build -T -b {{ output }} doc {{ dir }}/{{ output }} " +cmd = "sphinx-build -T -b {{ output }} doc {{ dir }}/{{ output }} " [feature.doc.dependencies] atlite = "==0.4.1" diff --git a/results/.gitkeep b/results/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/ruff.toml b/ruff.toml index 2d75d2025f..5f45ec0aba 100644 --- a/ruff.toml +++ b/ruff.toml @@ -28,6 +28,7 @@ ignore = [ ] + [lint.per-file-ignores] # pydocstyle ignores, which could be enabled in future when existing # issues are fixed @@ -50,4 +51,9 @@ ignore = [ 'D417', # Missing argument descriptions in the docstring # Include once available # https://github.com/astral-sh/ruff/issues/2310 - ] \ No newline at end of file + ] + +"scripts/**/__init__.py"= ["F401"] + +# The order of imports matters in this file, so we stop ruff from re-ordering them. +"scripts/lib/validation/config_updates.py"= ["I001", "F401"] \ No newline at end of file diff --git a/rules/build_electricity.smk b/rules/build_electricity.smk index dcee9916db..f5b67a3403 100755 --- a/rules/build_electricity.smk +++ b/rules/build_electricity.smk @@ -42,6 +42,8 @@ rule build_powerplants: countries=config_provider("countries"), input: network=resources("networks/base_s_{clusters}.nc"), + regions_onshore=resources("regions_onshore_base_s_{clusters}.geojson"), + regions_offshore=resources("regions_offshore_base_s_{clusters}.geojson"), powerplants=rules.retrieve_powerplants.output["powerplants"], custom_powerplants="data/custom_powerplants.csv", output: @@ -234,8 +236,16 @@ rule determine_availability_matrix_MD_UA: renewable=config_provider("renewable"), input: copernicus=rules.download_copernicus_land_cover.output["tif"], - wdpa=rules.retrieve_wdpa.output["gpkg"], - wdpa_marine=rules.retrieve_wdpa_marine.output["gpkg"], + wdpa=lambda w: ( + rules.retrieve_wdpa.output["gpkg"] + if config_provider("renewable", w.technology, "natura")(w) + else [] + ), + wdpa_marine=lambda w: ( + rules.retrieve_wdpa_marine.output["gpkg"] + if config_provider("renewable", w.technology, "natura")(w) + else [] + ), gebco=lambda w: ( rules.retrieve_gebco.output["gebco"] if config_provider("renewable", w.technology)(w).get("max_depth") @@ -288,6 +298,7 @@ rule determine_availability_matrix: "Determining availability matrix for {wildcards.clusters} clusters and {wildcards.technology} technology" params: renewable=config_provider("renewable"), + plot_availability_matrix=config_provider("atlite", "plot_availability_matrix"), input: unpack(input_ua_md_availability_matrix), corine=ancient(rules.retrieve_corine.output["tif_file"]), @@ -296,7 +307,11 @@ rule determine_availability_matrix: if config_provider("renewable", w.technology, "natura")(w) else [] ), - luisa=rules.retrieve_luisa_land_cover.output["tif"], + luisa=lambda w: ( + rules.retrieve_luisa_land_cover.output["tif"] + if config_provider("renewable", w.technology, "luisa")(w) + else [] + ), gebco=ancient( lambda w: ( rules.retrieve_gebco.output["gebco"] @@ -370,14 +385,34 @@ rule build_renewable_profiles: scripts("build_renewable_profiles.py") -rule build_monthly_prices: +rule build_co2_prices: message: - "Building monthly fuel and CO2 prices" + "Building CO2 price time series" + params: + rolling_window=config_provider("costs", "emission_prices", "rolling_window"), + input: + csv=rules.retrieve_co2_prices.output["csv"], + output: + csv=resources("co2_price.csv"), + log: + logs("build_co2_prices.log"), + benchmark: + benchmarks("build_co2_prices") + threads: 1 + resources: + mem_mb=5000, + script: + "../scripts/build_co2_prices.py" + + +rule build_fossil_fuel_prices: + message: + "Building fossil fuel price time series" + params: + rolling_window=config_provider("conventional", "fuel_price_rolling_window"), input: - co2_price_raw="data/validation/emission-spot-primary-market-auction-report-2019-data.xls", - fuel_price_raw="data/validation/energy-price-trends-xlsx-5619002.xlsx", + fuel_price_raw=rules.retrieve_worldbank_commodity_prices.output["xlsx"], output: - co2_price=resources("co2_price.csv"), fuel_price=resources("monthly_fuel_price.csv"), log: logs("build_monthly_prices.log"), @@ -550,9 +585,13 @@ rule build_electricity_demand_base: "Building electricity demand time series for base network" params: distribution_key=config_provider("load", "distribution_key"), + substation_only=config_provider("load", "substation_only"), input: base_network=resources("networks/base_s.nc"), regions=resources("regions_onshore_base_s.geojson"), + raster=rules.retrieve_electricity_demand_energy_atlas.output["tif"], + gb_excel=rules.retrieve_desnz_electricity_consumption.output["xlsx"], + gb_geojson=rules.retrieve_ons_lad.output["geojson"], nuts3=resources("nuts3_shapes.geojson"), load=resources("electricity_demand.csv"), output: @@ -821,7 +860,11 @@ rule prepare_network: costs=lambda w: resources( f"costs_{config_provider('costs', 'year')(w)}_processed.csv" ), - co2_price=lambda w: resources("co2_price.csv") if "Ept" in w.opts else [], + co2_price=lambda w: ( + resources("co2_price.csv") + if config_provider("costs", "emission_prices", "dynamic")(w) + else [] + ), output: resources("networks/base_s_{clusters}_elec_{opts}.nc"), log: @@ -835,121 +878,123 @@ rule prepare_network: scripts("prepare_network.py") -if ( - config["electricity"]["base_network"] == "osm" - and config["data"]["osm"]["source"] == "build" -): - - rule clean_osm_data: - message: - "Cleaning raw OSM data for countries: " + ", ".join(config["countries"]) - input: - cables_way=expand( - f"{OSM_DATASET['folder']}/{{country}}/cables_way.json", - country=config_provider("countries"), - ), - lines_way=expand( - f"{OSM_DATASET['folder']}/{{country}}/lines_way.json", - country=config_provider("countries"), - ), - routes_relation=expand( - f"{OSM_DATASET['folder']}/{{country}}/routes_relation.json", - country=config_provider("countries"), - ), - substations_way=expand( - f"{OSM_DATASET['folder']}/{{country}}/substations_way.json", - country=config_provider("countries"), - ), - substations_relation=expand( - f"{OSM_DATASET['folder']}/{{country}}/substations_relation.json", - country=config_provider("countries"), - ), - offshore_shapes=resources("offshore_shapes.geojson"), - country_shapes=resources("country_shapes.geojson"), - output: - substations=resources(f"osm/clean/substations.geojson"), - substations_polygon=resources(f"osm/clean/substations_polygon.geojson"), - converters_polygon=resources(f"osm/clean/converters_polygon.geojson"), - lines=resources(f"osm/clean/lines.geojson"), - links=resources(f"osm/clean/links.geojson"), - log: - logs("clean_osm_data.log"), - benchmark: - benchmarks("clean_osm_data") - threads: 1 - resources: - mem_mb=4000, - script: - scripts("clean_osm_data.py") +rule clean_osm_data: + message: + "Cleaning raw OSM data for countries: " + ", ".join(config["countries"]) + params: + voltages=config_provider("electricity", "voltages"), + input: + cables_way=expand( + f"{OSM_DATASET['folder']}/{{country}}/cables_way.json", + country=config_provider("countries"), + ), + lines_way=expand( + f"{OSM_DATASET['folder']}/{{country}}/lines_way.json", + country=config_provider("countries"), + ), + routes_relation=expand( + f"{OSM_DATASET['folder']}/{{country}}/routes_relation.json", + country=config_provider("countries"), + ), + substations_way=expand( + f"{OSM_DATASET['folder']}/{{country}}/substations_way.json", + country=config_provider("countries"), + ), + substations_relation=expand( + f"{OSM_DATASET['folder']}/{{country}}/substations_relation.json", + country=config_provider("countries"), + ), + offshore_shapes=resources("offshore_shapes.geojson"), + country_shapes=resources("country_shapes.geojson"), + output: + substations=resources(f"osm/clean/substations.geojson"), + substations_polygon=resources(f"osm/clean/substations_polygon.geojson"), + dc_switching=resources(f"osm/clean/dc_switching.geojson"), + dc_switching_polygon=resources(f"osm/clean/dc_switching_polygon.geojson"), + converters_polygon=resources(f"osm/clean/converters_polygon.geojson"), + lines=resources(f"osm/clean/lines.geojson"), + links=resources(f"osm/clean/links.geojson"), + log: + logs("clean_osm_data.log"), + benchmark: + benchmarks("clean_osm_data") + threads: 1 + resources: + mem_mb=4000, + script: + "../scripts/clean_osm_data.py" - rule build_osm_network: - message: - "Building OSM network" - params: - countries=config_provider("countries"), - voltages=config_provider("electricity", "voltages"), - line_types=config_provider("lines", "types"), - input: - substations=resources(f"osm/clean/substations.geojson"), - substations_polygon=resources(f"osm/clean/substations_polygon.geojson"), - converters_polygon=resources(f"osm/clean/converters_polygon.geojson"), - lines=resources(f"osm/clean/lines.geojson"), - links=resources(f"osm/clean/links.geojson"), - country_shapes=resources("country_shapes.geojson"), - output: - lines=resources(f"osm/build/lines.csv"), - links=resources(f"osm/build/links.csv"), - converters=resources(f"osm/build/converters.csv"), - transformers=resources(f"osm/build/transformers.csv"), - substations=resources(f"osm/build/buses.csv"), - lines_geojson=resources(f"osm/geojson/lines.geojson"), - links_geojson=resources(f"osm/geojson/links.geojson"), - converters_geojson=resources(f"osm/geojson/converters.geojson"), - transformers_geojson=resources(f"osm/geojson/transformers.geojson"), - substations_geojson=resources(f"osm/geojson/buses.geojson"), - stations_polygon=resources(f"osm/geojson/stations_polygon.geojson"), - buses_polygon=resources(f"osm/geojson/buses_polygon.geojson"), - log: - logs("build_osm_network.log"), - benchmark: - benchmarks("build_osm_network") - threads: 1 - resources: - mem_mb=4000, - script: - scripts("build_osm_network.py") +rule build_osm_network: + message: + "Building OSM network" + params: + countries=config_provider("countries"), + voltages=config_provider("electricity", "voltages"), + line_types=config_provider("lines", "types"), + under_construction=config_provider("osm_network_release", "under_construction"), + remove_after=config_provider("osm_network_release", "remove_after"), + input: + substations=resources(f"osm/clean/substations.geojson"), + substations_polygon=resources(f"osm/clean/substations_polygon.geojson"), + dc_switching=resources(f"osm/clean/dc_switching.geojson"), + dc_switching_polygon=resources(f"osm/clean/dc_switching_polygon.geojson"), + converters_polygon=resources(f"osm/clean/converters_polygon.geojson"), + lines=resources(f"osm/clean/lines.geojson"), + links=resources(f"osm/clean/links.geojson"), + country_shapes=resources("country_shapes.geojson"), + output: + lines=resources(f"osm/build/lines.csv"), + links=resources(f"osm/build/links.csv"), + converters=resources(f"osm/build/converters.csv"), + transformers=resources(f"osm/build/transformers.csv"), + substations=resources(f"osm/build/buses.csv"), + lines_geojson=resources(f"osm/build/geojson/lines.geojson"), + links_geojson=resources(f"osm/build/geojson/links.geojson"), + converters_geojson=resources(f"osm/build/geojson/converters.geojson"), + transformers_geojson=resources(f"osm/build/geojson/transformers.geojson"), + substations_geojson=resources(f"osm/build/geojson/buses.geojson"), + stations_polygon=resources(f"osm/build/geojson/stations_polygon.geojson"), + buses_polygon=resources(f"osm/build/geojson/buses_polygon.geojson"), + log: + logs("build_osm_network.log"), + benchmark: + benchmarks("build_osm_network") + threads: 1 + resources: + mem_mb=4000, + script: + "../scripts/build_osm_network.py" -if config["electricity"]["base_network"] == "tyndp": - rule build_tyndp_network: - message: - "Building TYNDP network" - params: - countries=config_provider("countries"), - input: - reference_grid=rules.retrieve_tyndp.output.reference_grid, - buses=rules.retrieve_tyndp.output.nodes, - bidding_shapes=resources("bidding_zones.geojson"), - output: - lines=resources("tyndp/build/lines.csv"), - links=resources("tyndp/build/links.csv"), - converters=resources("tyndp/build/converters.csv"), - transformers=resources("tyndp/build/transformers.csv"), - substations=resources("tyndp/build/buses.csv"), - substations_h2=resources("tyndp/build/buses_h2.csv"), - lines_geojson=resources("tyndp/build/geojson/lines.geojson"), - links_geojson=resources("tyndp/build/geojson/links.geojson"), - converters_geojson=resources("tyndp/build/geojson/converters.geojson"), - transformers_geojson=resources("tyndp/build/geojson/transformers.geojson"), - substations_geojson=resources("tyndp/build/geojson/buses.geojson"), - substations_h2_geojson=resources("tyndp/build/geojson/buses_h2.geojson"), - log: - logs("build_tyndp_network.log"), - benchmark: - benchmarks("build_tyndp_network") - threads: 1 - resources: - mem_mb=4000, - script: - scripts("build_tyndp_network.py") +rule build_tyndp_network: + message: + "Building TYNDP network" + params: + countries=config_provider("countries"), + input: + reference_grid=rules.retrieve_tyndp.output.reference_grid, + buses=rules.retrieve_tyndp.output.nodes, + bidding_shapes=resources("bidding_zones.geojson"), + output: + lines=resources("tyndp/build/lines.csv"), + links=resources("tyndp/build/links.csv"), + converters=resources("tyndp/build/converters.csv"), + transformers=resources("tyndp/build/transformers.csv"), + substations=resources("tyndp/build/buses.csv"), + substations_h2=resources("tyndp/build/buses_h2.csv"), + lines_geojson=resources("tyndp/build/geojson/lines.geojson"), + links_geojson=resources("tyndp/build/geojson/links.geojson"), + converters_geojson=resources("tyndp/build/geojson/converters.geojson"), + transformers_geojson=resources("tyndp/build/geojson/transformers.geojson"), + substations_geojson=resources("tyndp/build/geojson/buses.geojson"), + substations_h2_geojson=resources("tyndp/build/geojson/buses_h2.geojson"), + log: + logs("build_tyndp_network.log"), + benchmark: + benchmarks("build_tyndp_network") + threads: 1 + resources: + mem_mb=4000, + script: + "../scripts/build_tyndp_network.py" diff --git a/rules/build_sector.smk b/rules/build_sector.smk index 66d591f84a..5e759792ea 100755 --- a/rules/build_sector.smk +++ b/rules/build_sector.smk @@ -529,7 +529,6 @@ def input_heat_source_temperature( replace_names: dict[str, str] = { "air": "air_total", "ground": "soil_total", - "ptes": "ptes_top_profiles", }, ) -> dict[str, str]: """ @@ -549,7 +548,7 @@ def input_heat_source_temperature( for heat sources that require temperature profiles (excludes constant temperature sources). """ - from scripts.definitions.heat_source import HeatSource + from scripts.definitions.heat_source import HeatSource, HeatSourceType heat_sources = set( config_provider("sector", "heat_sources", "urban central")(w) @@ -562,12 +561,11 @@ def input_heat_source_temperature( for heat_source_name in heat_sources: heat_source = HeatSource(heat_source_name) # Skip heat sources with temperatures defined in config (not from file) - if heat_source.temperature_from_config: + if ( + heat_source.temperature_from_config + or heat_source.source_type == HeatSourceType.STORAGE + ): continue - if heat_source_name == "ptes": - file_names[f"temp_{heat_source_name}"] = resources( - f"temp_{replace_names.get(heat_source_name, heat_source_name)}_base_s_{{clusters}}_{{planning_horizons}}.nc" - ) else: file_names[f"temp_{heat_source_name}"] = resources( f"temp_{replace_names.get(heat_source_name, heat_source_name)}_base_s_{{clusters}}.nc" @@ -575,12 +573,11 @@ def input_heat_source_temperature( return file_names -def input_ptes_bottom_temperature(w) -> dict[str, str]: +def input_ptes_operations(w) -> dict[str, str]: """ - Generate conditional input for PTES bottom temperature profiles. + Generate conditional input for PTES operations. - Only includes the input file if PTES is configured as a heat source - for urban central heating. + Only includes the input file if PTES is enabled. Parameters ---------- @@ -593,11 +590,10 @@ def input_ptes_bottom_temperature(w) -> dict[str, str]: Dictionary with "temp_ptes_bottom" key if PTES is a heat source, empty dict otherwise. """ - heat_sources = config_provider("sector", "heat_sources", "urban central")(w) - if "ptes" in heat_sources: + if config_provider("sector", "district_heating", "ptes", "enable")(w): return { - "temp_ptes_bottom": resources( - "temp_ptes_bottom_profiles_base_s_{clusters}_{planning_horizons}.nc" + "ptes_operations": resources( + "ptes_operations_base_s_{clusters}_{planning_horizons}.nc" ) } return {} @@ -678,6 +674,12 @@ rule build_cop_profiles: heat_source_temperatures=config_provider( "sector", "district_heating", "heat_source_temperatures" ), + ptes_layer_temperatures=config_provider( + "sector", "district_heating", "ptes", "layered", "layer_temperatures" + ), + layered_ptes=config_provider( + "sector", "district_heating", "ptes", "layered", "enable" + ), snapshots=config_provider("snapshots"), input: unpack(input_heat_source_temperature), @@ -717,12 +719,6 @@ rule build_ptes_operations: "bottom_temperature", ), snapshots=config_provider("snapshots"), - charge_boosting_required=config_provider( - "sector", "district_heating", "ptes", "charge_boosting_required" - ), - discharge_resistive_boosting=config_provider( - "sector", "district_heating", "ptes", "discharge_resistive_boosting" - ), temperature_dependent_capacity=config_provider( "sector", "district_heating", "ptes", "temperature_dependent_capacity" ), @@ -738,6 +734,19 @@ rule build_ptes_operations: "ptes", "design_bottom_temperature", ), + layer_temperatures=config_provider( + "sector", + "district_heating", + "ptes", + "layered", + "layer_temperatures", + ), + interlayer_heat_transfer_coefficient=config_provider( + "sector", + "district_heating", + "ptes", + "interlayer_heat_transfer_coefficient", + ), input: central_heating_forward_temperature_profiles=resources( "central_heating_forward_temperature_profiles_base_s_{clusters}_{planning_horizons}.nc" @@ -746,18 +755,10 @@ rule build_ptes_operations: "central_heating_return_temperature_profiles_base_s_{clusters}_{planning_horizons}.nc" ), regions_onshore=resources("regions_onshore_base_s_{clusters}.geojson"), + cop_profiles=resources("cop_profiles_base_s_{clusters}_{planning_horizons}.nc"), output: - ptes_top_temperature_profiles=resources( - "temp_ptes_top_profiles_base_s_{clusters}_{planning_horizons}.nc" - ), - ptes_bottom_temperature_profiles=resources( - "temp_ptes_bottom_profiles_base_s_{clusters}_{planning_horizons}.nc" - ), - ptes_e_max_pu_profiles=resources( - "ptes_e_max_pu_profiles_base_s_{clusters}_{planning_horizons}.nc" - ), - ptes_boost_per_discharge_profiles=resources( - "ptes_boost_per_discharge_profiles_base_s_{clusters}_{planning_horizons}.nc" + ptes_operations=resources( + "ptes_operations_base_s_{clusters}_{planning_horizons}.nc" ), resources: mem_mb=2000, @@ -784,7 +785,7 @@ rule build_heat_source_utilisation_profiles: ptes_enable=config_provider("sector", "district_heating", "ptes", "enable"), input: unpack(input_heat_source_temperature), - unpack(input_ptes_bottom_temperature), + unpack(input_ptes_operations), central_heating_forward_temperature_profiles=resources( "central_heating_forward_temperature_profiles_base_s_{clusters}_{planning_horizons}.nc" ), @@ -792,11 +793,8 @@ rule build_heat_source_utilisation_profiles: "central_heating_return_temperature_profiles_base_s_{clusters}_{planning_horizons}.nc" ), output: - heat_source_direct_utilisation_profiles=resources( - "heat_source_direct_utilisation_profiles_base_s_{clusters}_{planning_horizons}.nc" - ), - heat_source_preheater_utilisation_profiles=resources( - "heat_source_preheater_utilisation_profiles_base_s_{clusters}_{planning_horizons}.nc" + heat_source_boosting_profiles=resources( + "heat_source_boosting_profiles_base_s_{clusters}_{planning_horizons}.nc" ), resources: mem_mb=20000, @@ -836,6 +834,42 @@ rule build_solar_thermal_profiles: scripts("build_solar_thermal_profiles.py") +rule build_eurostat_balances: + message: + "Building Eurostat energy balances" + input: + tsv_gz=rules.retrieve_eurostat_balances.output["tsv_gz"], + output: + csv=resources("eurostat_energy_balances.csv"), + threads: 1 + resources: + mem_mb=4000, + log: + logs("build_eurostat_balances.log"), + benchmark: + benchmarks("build_eurostat_balances") + script: + "../scripts/build_eurostat_balances.py" + + +rule build_swiss_energy_balances: + message: + "Building BFE Swiss energy balances" + input: + xlsx=rules.retrieve_swiss_energy_balances.output["xlsx"], + output: + csv=resources("switzerland_energy_balances.csv"), + threads: 1 + resources: + mem_mb=4000, + log: + logs("build_swiss_energy_balances.log"), + benchmark: + benchmarks("build_swiss_energy_balances") + script: + scripts("build_swiss_energy_balances.py") + + rule build_energy_totals: message: "Building energy totals" @@ -845,11 +879,11 @@ rule build_energy_totals: input: nuts3_shapes=resources("nuts3_shapes.geojson"), co2=rules.retrieve_ghg_emissions.output["csv"], - swiss="data/switzerland-new_format-all_years.csv", + swiss=resources("switzerland_energy_balances.csv"), swiss_transport=f"{BFS_ROAD_VEHICLE_STOCK_DATASET['folder']}/vehicle_stock.csv", idees=rules.retrieve_jrc_idees.output["directory"], district_heat_share="data/district_heat_share.csv", - eurostat=rules.retrieve_eurostat_balances.output["directory"], + eurostat=resources("eurostat_energy_balances.csv"), eurostat_households=rules.retrieve_eurostat_household_balances.output["csv"], output: transformation_output_coke=resources("transformation_output_coke.csv"), @@ -915,7 +949,7 @@ rule build_biomass_potentials: biomass=config_provider("biomass"), input: enspreso_biomass=rules.retrieve_enspreso_biomass.output["xlsx"], - eurostat=rules.retrieve_eurostat_balances.output["directory"], + eurostat=resources("eurostat_energy_balances.csv"), nuts2=rules.retrieve_eu_nuts_2013.output["shapes_level_2"], regions_onshore=resources("regions_onshore_base_s_{clusters}.geojson"), nuts3_population=ancient(rules.retrieve_nuts3_population.output["gz"]), @@ -1105,7 +1139,7 @@ rule build_industrial_production_per_country: input: ch_industrial_production="data/ch_industrial_production_per_subsector.csv", ammonia_production=resources("ammonia_production.csv"), - eurostat=rules.retrieve_eurostat_balances.output["directory"], + eurostat=resources("eurostat_energy_balances.csv"), jrc=rules.retrieve_jrc_idees.output["directory"], output: industrial_production_per_country=resources( @@ -1574,7 +1608,7 @@ def input_heat_source_power(w): heat_sources = config_provider("sector", "heat_sources", "urban central")(w) for heat_source_name in heat_sources: - if HeatSource(heat_source_name).requires_generator: + if HeatSource(heat_source_name).requires_generator(): if HeatSource(heat_source_name) == HeatSource.GEOTHERMAL: result[heat_source_name] = resources( "heat_source_power_" @@ -1620,6 +1654,7 @@ rule prepare_sector_network: input: unpack(input_profile_offwind), unpack(input_heat_source_power), + unpack(input_ptes_operations), **rules.cluster_gas_network.output, **rules.build_gas_input_locations.output, snapshot_weightings=resources( @@ -1649,7 +1684,7 @@ rule prepare_sector_network: else [] ), network=resources("networks/base_s_{clusters}_elec_{opts}.nc"), - eurostat=rules.retrieve_eurostat_balances.output["directory"], + eurostat=resources("eurostat_energy_balances.csv"), pop_weighted_energy_totals=resources( "pop_weighted_energy_totals_s_{clusters}.csv" ), @@ -1702,26 +1737,9 @@ rule prepare_sector_network: )(w) else [] ), - ptes_boost_per_discharge_profiles=lambda w: ( - resources( - "ptes_boost_per_discharge_profiles_base_s_{clusters}_{planning_horizons}.nc" - ) - if config_provider("sector", "district_heating", "ptes", "enable")(w) - and config_provider( - "sector", "district_heating", "ptes", "discharge_resistive_boosting" - )(w) - else [] - ), - heat_source_direct_utilisation_profiles=lambda w: ( - resources( - "heat_source_direct_utilisation_profiles_base_s_{clusters}_{planning_horizons}.nc" - ) - if len(config_provider("sector", "heat_sources", "urban central")(w)) > 0 - else [] - ), - heat_source_preheater_utilisation_profiles=lambda w: ( + heat_source_boosting_profiles=lambda w: ( resources( - "heat_source_preheater_utilisation_profiles_base_s_{clusters}_{planning_horizons}.nc" + "heat_source_boosting_profiles_base_s_{clusters}_{planning_horizons}.nc" ) if len(config_provider("sector", "heat_sources", "urban central")(w)) > 0 else [] diff --git a/rules/common.smk b/rules/common.smk index 168cdfd847..210d79a872 100644 --- a/rules/common.smk +++ b/rules/common.smk @@ -193,6 +193,15 @@ def input_custom_extra_functionality(w): return [] +def output_model(path_template): + def _output_model(w): + if config_provider("solving", "options", "store_model")(w): + return path_template.format(**dict(w)) + return [] + + return _output_model + + def solved_previous_horizon(w): planning_horizons = config_provider("scenario", "planning_horizons")(w) i = planning_horizons.index(int(w.planning_horizons)) diff --git a/rules/development.smk b/rules/development.smk index 33889acd8e..5bec303215 100644 --- a/rules/development.smk +++ b/rules/development.smk @@ -2,31 +2,131 @@ # # SPDX-License-Identifier: MIT -if ( - config["electricity"]["base_network"] == "osm" - and config["data"]["osm"]["source"] == "build" -): - - rule prepare_osm_network_release: - params: - line_types=config["lines"]["types"], - input: - base_network=resources("networks/base.nc"), - stations_polygon=resources("osm/geojson/stations_polygon.geojson"), - buses_polygon=resources("osm/geojson/buses_polygon.geojson"), - output: - buses=resources("osm/upstream/release/buses.csv"), - converters=resources("osm/upstream/release/converters.csv"), - lines=resources("osm/upstream/release/lines.csv"), - links=resources("osm/upstream/release/links.csv"), - transformers=resources("osm/upstream/release/transformers.csv"), - map=resources("osm/upstream/release/map.html"), - log: - logs("prepare_osm_network_release.log"), - benchmark: - benchmarks("prepare_osm_network_release") - threads: 1 - resources: - mem_mb=1000, - script: - scripts("/prepare_osm_network_release.py") + +rule base_network_incumbent: + message: + "Building base network to which to compare against." + params: + countries=config_provider("countries"), + snapshots=config_provider("snapshots"), + drop_leap_day=config_provider("enable", "drop_leap_day"), + lines=config_provider("lines"), + links=config_provider("links"), + transformers=config_provider("transformers"), + clustering=config_provider("clustering", "mode"), + admin_levels=config_provider("clustering", "administrative"), + input: + unpack(input_base_network_incumbent), + nuts3_shapes=resources("nuts3_shapes.geojson"), + country_shapes=resources("country_shapes.geojson"), + offshore_shapes=resources("offshore_shapes.geojson"), + europe_shape=resources("europe_shape.geojson"), + output: + base_network=resources("osm/comparison/incumbent/networks/base.nc"), + regions_onshore=resources("osm/comparison/incumbent/regions_onshore.geojson"), + regions_offshore=resources("osm/comparison/incumbent/regions_offshore.geojson"), + admin_shapes=resources("osm/comparison/incumbent/admin_shapes.geojson"), + log: + logs("base_network_incumbent.log"), + benchmark: + benchmarks("base_network_incumbent") + threads: 4 + resources: + mem_mb=2000, + script: + "../scripts/base_network.py" + + +rule make_network_comparison: + message: + "Create network comparison between two PyPSA networks." + params: + countries=config_provider("countries"), + base_network=config_provider("electricity", "base_network"), + compare_to_version=config_provider( + "osm_network_release", "compare_to", "version" + ), + voltages=config_provider("electricity", "voltages"), + input: + n_release=resources("networks/base.nc"), + n_incumbent=resources("osm/comparison/incumbent/networks/base.nc"), + country_shapes=resources("country_shapes.geojson"), + regions_offshore=resources("regions_offshore.geojson"), + output: + lengths=resources("osm/comparison/lengths.pdf"), + log: + logs("make_network_comparison.log"), + benchmark: + benchmarks("make_network_comparison") + threads: 1 + resources: + mem_mb=2000, + script: + "../scripts/make_network_comparison.py" + + +rule prepare_osm_network_release: + message: + "Preparing OSM network release files and map." + params: + line_types=config["lines"]["types"], + release_version=config_provider("osm_network_release", "release_version"), + include_polygons=True, + export=True, + input: + base_network=resources("networks/base.nc"), + stations_polygon=resources("osm/build/geojson/stations_polygon.geojson"), + buses_polygon=resources("osm/build/geojson/buses_polygon.geojson"), + output: + buses=resources("osm/release/buses.csv"), + converters=resources("osm/release/converters.csv"), + lines=resources("osm/release/lines.csv"), + links=resources("osm/release/links.csv"), + transformers=resources("osm/release/transformers.csv"), + map=resources("osm/release/map.html"), + log: + logs("prepare_osm_network_release.log"), + benchmark: + benchmarks("prepare_osm_network_release") + threads: 1 + resources: + mem_mb=1000, + script: + "../scripts/prepare_osm_network_release.py" + + +rule map_incumbent: + message: + "Preparing map of incumbent network for comparison with OSM release." + params: + line_types=config["lines"]["types"], + release_version="Incumbent", + include_polygons=False, + export=False, + input: + base_network=resources("osm/comparison/incumbent/networks/base.nc"), + output: + map=resources("osm/comparison/map_incumbent.html"), + log: + logs("prepare_osm_network_release.log"), + benchmark: + benchmarks("prepare_osm_network_release") + threads: 1 + resources: + mem_mb=1000, + script: + "../scripts/prepare_osm_network_release.py" + + +rule osm_release: + message: + "Creating OSM network release files, map and comparison with incumbent network." + input: + resources("osm/release/buses.csv"), + resources("osm/release/converters.csv"), + resources("osm/release/lines.csv"), + resources("osm/release/links.csv"), + resources("osm/release/transformers.csv"), + resources("osm/release/map.html"), + resources("osm/comparison/map_incumbent.html"), + resources("osm/comparison/lengths.pdf"), diff --git a/rules/postprocess.smk b/rules/postprocess.smk index 4cd4c33a4d..119cd333c0 100644 --- a/rules/postprocess.smk +++ b/rules/postprocess.smk @@ -447,12 +447,12 @@ rule plot_summary: costs=RESULTS + "csvs/costs.csv", energy=RESULTS + "csvs/energy.csv", balances=RESULTS + "csvs/energy_balance.csv", - eurostat=rules.retrieve_eurostat_balances.output["directory"], + eurostat=resources("eurostat_energy_balances.csv"), co2=rules.retrieve_ghg_emissions.output["csv"], output: - costs=RESULTS + "graphs/costs.svg", - energy=RESULTS + "graphs/energy.svg", - balances=RESULTS + "graphs/balances-energy.svg", + costs=RESULTS + "graphs/costs.pdf", + energy=RESULTS + "graphs/energy.pdf", + balances=RESULTS + "graphs/balances-energy.pdf", threads: 2 resources: mem_mb=10000, diff --git a/rules/retrieve.smk b/rules/retrieve.smk index ea0f94fb23..dbb9c8662c 100755 --- a/rules/retrieve.smk +++ b/rules/retrieve.smk @@ -31,13 +31,11 @@ if (EUROSTAT_BALANCES_DATASET := dataset_version("eurostat_balances"))["source"] message: "Retrieving Eurostat balances data" input: - zip_file=storage(EUROSTAT_BALANCES_DATASET["url"]), + tsv_gz=storage(EUROSTAT_BALANCES_DATASET["url"]), output: - zip_file=f"{EUROSTAT_BALANCES_DATASET['folder']}/balances.zip", - directory=directory(EUROSTAT_BALANCES_DATASET["folder"]), + tsv_gz=f"{EUROSTAT_BALANCES_DATASET['folder']}/estat_nrg_bal_c.tsv.gz", run: - copy2(input["zip_file"], output["zip_file"]) - unpack_archive(output["zip_file"], output["directory"]) + copy2(input["tsv_gz"], output["tsv_gz"]) if ( @@ -60,6 +58,24 @@ if ( copy2(input["csv"], output["csv"]) +if (SWISS_ENERGY_BALANCES_DATASET := dataset_version("swiss_energy_balances"))[ + "source" +] in [ + "archive", + "primary", +]: + + rule retrieve_swiss_energy_balances: + message: + "Retrieving Swiss energy balances data" + input: + xlsx=storage(SWISS_ENERGY_BALANCES_DATASET["url"]), + output: + xlsx=f"{SWISS_ENERGY_BALANCES_DATASET['folder']}/12361-VWZ_Webtabellen_2024.xlsx", + run: + copy2(input["xlsx"], output["xlsx"]) + + if (NUTS3_POPULATION_DATASET := dataset_version("nuts3_population"))["source"] in [ "primary", "archive", @@ -427,6 +443,7 @@ if (COUNTRY_HDD_DATASET := dataset_version("country_hdd"))["source"] in ["archiv if (COSTS_DATASET := dataset_version("costs"))["source"] in [ "primary", + "archive", ]: rule retrieve_cost_data: @@ -442,6 +459,7 @@ if (COSTS_DATASET := dataset_version("costs"))["source"] in [ if (POWERPLANTS_DATASET := dataset_version("powerplants"))["source"] in [ "primary", + "archive", ]: rule retrieve_powerplants: @@ -662,6 +680,83 @@ if ( copy2(input["csv"], output["csv"]) +if (ENERGY_ATLAS_DATASET := dataset_version("jrc_energy_atlas"))["source"] in [ + "primary", + "archive", +]: + + rule retrieve_electricity_demand_energy_atlas: + message: + "Retrieving JRC Energy Atlas electricity demand data raster" + output: + tif=f"{ENERGY_ATLAS_DATASET['folder']}/electricity_tot_demand_2019.tif", + run: + import requests + + url = ENERGY_ATLAS_DATASET["url"] + response = requests.get(url) + response.raise_for_status() + with open(output["tif"], "wb") as f: + f.write(response.content) + + + +if ( + DESNZ_ELECTRICITY_CONSUMPTION_DATASET := dataset_version( + "desnz_electricity_consumption" + ) +)["source"] in ["primary", "archive"]: + + rule retrieve_desnz_electricity_consumption: + message: + "Retrieving DESNZ subnational electricity consumption data" + output: + xlsx=f"{DESNZ_ELECTRICITY_CONSUMPTION_DATASET['folder']}/Subnational_electricity_consumption_statistics_2005-2024.xlsx", + run: + import requests + + url = DESNZ_ELECTRICITY_CONSUMPTION_DATASET["url"] + response = requests.get(url) + response.raise_for_status() + with open(output["xlsx"], "wb") as f: + f.write(response.content) + + + +if (ONS_LAD_DATASET := dataset_version("ons_lad"))["source"] in ["archive"]: + + rule retrieve_ons_lad: + message: + "Retrieving UK ONS Local Authority Districts (LAD) Boundaries data" + input: + geojson=storage(ONS_LAD_DATASET["url"]), + output: + geojson=f"{ONS_LAD_DATASET['folder']}/Local_Authority_Districts_May_2024_Boundaries__UK_BSC.geojson", + run: + copy2(input["geojson"], output["geojson"]) + +elif ONS_LAD_DATASET["source"] in ["primary"]: + + rule retrieve_ons_lad: + message: + "Retrieving UK ONS Local Authority Districts (LAD) Boundaries data" + output: + geojson=f"{ONS_LAD_DATASET['folder']}/Local_Authority_Districts_May_2024_Boundaries__UK_BSC.geojson", + run: + import requests + + url = ONS_LAD_DATASET["url"] + params = { + "outFields": "*", + "where": "1=1", + "f": "geojson", + } + response = requests.get(url, params=params) + with open(output["geojson"], "wb") as f: + f.write(response.content) + + + if (SHIP_RASTER_DATASET := dataset_version("ship_raster"))["source"] in [ "archive", "primary", @@ -1072,40 +1167,50 @@ if (WDPA_MARINE_DATASET := dataset_version("wdpa_marine"))["source"] in [ -# Versioning not implemented as the dataset is used only for validation -# License - (c) EEX AG, all rights reserved. Personal copy for non-commercial use permitted -rule retrieve_monthly_co2_prices: - message: - "Retrieving monthly CO2 prices data for validation" - input: - storage( - "https://public.eex-group.com/eex/eua-auction-report/emission-spot-primary-market-auction-report-2019-data.xls", - ), - output: - "data/validation/emission-spot-primary-market-auction-report-2019-data.xls", - log: - "logs/retrieve_monthly_co2_prices.log", - resources: - mem_mb=5000, - retries: 2 - run: - copy2(input[0], output[0]) - - -# Versioning not implemented as the dataset is used only for validation -# License - custom; no restrictions on use and redistribution, attribution required -rule retrieve_monthly_fuel_prices: - message: - "Retrieving monthly fuel prices data for validation" - output: - "data/validation/energy-price-trends-xlsx-5619002.xlsx", - log: - "logs/retrieve_monthly_fuel_prices.log", - resources: - mem_mb=5000, - retries: 2 - script: - scripts("retrieve_monthly_fuel_prices.py") +if (INSTRAT_CO2_PRICES_DATASET := dataset_version("instrat_co2_prices"))["source"] in [ + "primary", +]: + + rule retrieve_co2_prices: + message: + "Retrieving CO2 emission allowances price in EU ETS system" + output: + csv=f"{INSTRAT_CO2_PRICES_DATASET['folder']}/prices_eu_ets_all.csv", + log: + "logs/retrieve_co2_prices.log", + resources: + mem_mb=5000, + retries: 2 + run: + import pandas as pd + + url = "https://energy-api.instrat.pl/api/prices/co2?all=1" + headers = { + "User-Agent": "Mozilla/5.0", + "Accept": "application/json", + "Referer": "https://energy.instrat.pl/", + } + + r = requests.get(url, headers=headers) + r.raise_for_status() + + df = pd.read_json(r.text) + df.to_csv(output["csv"], index=False) + + +if ( + WORLD_BANK_COMMODITY_PRICES_DATASET := dataset_version("worldbank_commodity_prices") +)["source"] in ["primary", "archive"]: + + rule retrieve_worldbank_commodity_prices: + message: + "Retrieving monthly commodity price time series (including fossil fuels)" + input: + xlsx=storage(WORLD_BANK_COMMODITY_PRICES_DATASET["url"]), + output: + xlsx=f"{WORLD_BANK_COMMODITY_PRICES_DATASET['folder']}/CMO-Historical-Data-Monthly.xlsx", + run: + copy2(input["xlsx"], output["xlsx"]) if (TYDNP_DATASET := dataset_version("tyndp"))["source"] in ["primary", "archive"]: @@ -1138,18 +1243,63 @@ if (TYDNP_DATASET := dataset_version("tyndp"))["source"] in ["primary", "archive -if OSM_DATASET["source"] in ["archive"]: - - OSM_ARCHIVE_FILES = [ +def get_osm_archive_files(version): + return [ "buses.csv", "converters.csv", "lines.csv", "links.csv", "transformers.csv", # Newer versions include the additional map.html file for visualisation - *(["map.html"] if float(OSM_DATASET["version"]) >= 0.6 else []), + *(["map.html"] if float(version) >= 0.6 else []), + ] + + +def get_osm_network_incumbent( + version: str = "latest", + source: str = "archive", +) -> pd.Series: + fp = workflow.source_path("../data/versions.csv") + data_versions = load_data_versions(fp) + name = "osm" + + dataset = data_versions.loc[ + (data_versions["dataset"] == name) + & (data_versions["source"] == source) + & (data_versions["supported"]) # Limit to supported versions only + & (data_versions["version"] == version if "latest" != version else True) + & (data_versions["latest"] if "latest" == version else True) ] + if dataset.empty: + raise ValueError( + f"OSM network for version '{version}' not found in data/versions.csv." + ) + + # Return single-row DataFrame as a Series + dataset = dataset.squeeze() + + # Generate output folder path in the `data` directory + dataset["folder"] = Path( + "data", name, dataset["source"], dataset["version"] + ).as_posix() + + return dataset + + +def input_base_network_incumbent(w): + version = config_provider("osm_network_release", "compare_to", "version")(w) + source = config_provider("osm_network_release", "compare_to", "source")(w) + osm_dataset = get_osm_network_incumbent(version, source) + osm_path = osm_dataset["folder"] + components = {"buses", "lines", "links", "converters", "transformers"} + inputs = {c: f"{osm_path}/{c}.csv" for c in components} + return inputs + + +if OSM_DATASET["source"] in ["archive"]: + OSM_ARCHIVE_FILES = get_osm_archive_files(OSM_DATASET["version"]) + rule retrieve_osm_archive: message: "Retrieving OSM archive data" @@ -1170,8 +1320,50 @@ if OSM_DATASET["source"] in ["archive"]: copy2(input[key], output[key]) -elif OSM_DATASET["source"] == "build": +# Only create incumbent rule if it points to a different folder +OSM_DATASET_INCUMBENT = get_osm_network_incumbent( + version=config.get("osm_network_release", {}) + .get("compare_to", {}) + .get("version", "latest"), + source=config.get("osm_network_release", {}) + .get("compare_to", {}) + .get("source", "archive"), +) + +if OSM_DATASET_INCUMBENT["source"] in ["archive"] and OSM_DATASET_INCUMBENT[ + "folder" +] != OSM_DATASET.get("folder"): + + OSM_ARCHIVE_FILES_INCUMBENT = get_osm_archive_files( + OSM_DATASET_INCUMBENT["version"] + ) + + rule retrieve_osm_archive_incumbent: + message: + "Retrieving OSM archive incumbent data" + input: + **{ + file: storage(f"{OSM_DATASET_INCUMBENT['url']}/{file}") + for file in OSM_ARCHIVE_FILES_INCUMBENT + }, + output: + **{ + file: f"{OSM_DATASET_INCUMBENT['folder']}/{file}" + for file in OSM_ARCHIVE_FILES_INCUMBENT + }, + log: + "logs/retrieve_osm_archive_incumbent.log", + threads: 1 + resources: + mem_mb=500, + run: + for key in input.keys(): + copy2(input[key], output[key]) + + + +if OSM_DATASET["source"] == "build": OSM_RAW_JSON = [ "cables_way.json", "lines_way.json", @@ -1182,7 +1374,7 @@ elif OSM_DATASET["source"] == "build": rule retrieve_osm_data_raw: message: - "Retrieving OSM raw data for {wildcards.country}" + "Retrieving OSM electricity grid raw data for {wildcards.country}" params: overpass_api=config_provider("overpass_api"), output: diff --git a/rules/solve_electricity.smk b/rules/solve_electricity.smk index 97f699f7cf..1259943104 100644 --- a/rules/solve_electricity.smk +++ b/rules/solve_electricity.smk @@ -18,6 +18,11 @@ rule solve_network: output: network=RESULTS + "networks/base_s_{clusters}_elec_{opts}.nc", config=RESULTS + "configs/config.base_s_{clusters}_elec_{opts}.yaml", + model=( + RESULTS + "models/base_s_{clusters}_elec_{opts}.nc" + if config["solving"]["options"]["store_model"] + else [] + ), log: solver=normpath( RESULTS + "logs/solve_network/base_s_{clusters}_elec_{opts}_solver.log" diff --git a/rules/solve_myopic.smk b/rules/solve_myopic.smk index d90c332b5d..e2ff1fc2c0 100644 --- a/rules/solve_myopic.smk +++ b/rules/solve_myopic.smk @@ -116,6 +116,7 @@ rule solve_sector_network_myopic: ), custom_extra_functionality=input_custom_extra_functionality, input: + unpack(input_ptes_operations), network=resources( "networks/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}_brownfield.nc" ), @@ -124,6 +125,12 @@ rule solve_sector_network_myopic: + "networks/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}.nc", config=RESULTS + "configs/config.base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}.yaml", + model=( + RESULTS + + "models/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}.nc" + if config["solving"]["options"]["store_model"] + else [] + ), shadow: shadow_config log: diff --git a/rules/solve_overnight.smk b/rules/solve_overnight.smk index 270609ecf2..907d356a3b 100644 --- a/rules/solve_overnight.smk +++ b/rules/solve_overnight.smk @@ -14,6 +14,7 @@ rule solve_sector_network: ), custom_extra_functionality=input_custom_extra_functionality, input: + unpack(input_ptes_operations), network=resources( "networks/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}.nc" ), @@ -22,6 +23,12 @@ rule solve_sector_network: + "networks/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}.nc", config=RESULTS + "configs/config.base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}.yaml", + model=( + RESULTS + + "models/base_s_{clusters}_{opts}_{sector_opts}_{planning_horizons}.nc" + if config["solving"]["options"]["store_model"] + else [] + ), shadow: shadow_config log: diff --git a/rules/solve_perfect.smk b/rules/solve_perfect.smk index 59ec549254..856b1f65e3 100644 --- a/rules/solve_perfect.smk +++ b/rules/solve_perfect.smk @@ -101,6 +101,7 @@ rule solve_sector_network_perfect: ), custom_extra_functionality=input_custom_extra_functionality, input: + unpack(input_ptes_operations), network=resources( "networks/base_s_{clusters}_{opts}_{sector_opts}_brownfield_all_years.nc" ), @@ -110,6 +111,12 @@ rule solve_sector_network_perfect: + "networks/base_s_{clusters}_{opts}_{sector_opts}_brownfield_all_years.nc", config=RESULTS + "configs/config.base_s_{clusters}_{opts}_{sector_opts}_brownfield_all_years.yaml", + model=( + RESULTS + + "models/base_s_{clusters}_{opts}_{sector_opts}_brownfield_all_years.nc" + if config["solving"]["options"]["store_model"] + else [] + ), threads: solver_threads resources: mem_mb=config_provider("solving", "mem"), diff --git a/scripts/_helpers.py b/scripts/_helpers.py index e4927e382c..ad314aab28 100644 --- a/scripts/_helpers.py +++ b/scripts/_helpers.py @@ -396,21 +396,21 @@ def aggregate_costs(n, flatten=False, opts=None, existing_only=False): costs = {} for c, (p_nom, p_attr) in zip( - n.iterate_components(components.keys(), skip_empty=False), components.values() + n.components[list(components.keys())], components.values() ): - if c.df.empty: + if c.static.empty: continue if not existing_only: p_nom += "_opt" costs[(c.list_name, "capital")] = ( - (c.df[p_nom] * c.df.capital_cost).groupby(c.df.carrier).sum() + (c.static[p_nom] * c.static.capital_cost).groupby(c.static.carrier).sum() ) if p_attr is not None: - p = c.pnl[p_attr].sum() + p = c.dynamic[p_attr].sum() if c.name == "StorageUnit": p = p.loc[p > 0] costs[(c.list_name, "marginal")] = ( - (p * c.df.marginal_cost).groupby(c.df.carrier).sum() + (p * c.static.marginal_cost).groupby(c.static.carrier).sum() ) costs = pd.concat(costs) @@ -712,7 +712,7 @@ def update_config_from_wildcards(config, w, inplace=True): config["electricity"]["gaslimit"] = gasl_value * 1e6 if "Ept" in opts: - config["costs"]["emission_prices"]["co2_monthly_prices"] = True + config["costs"]["emission_prices"]["dynamic"] = True ep_enable, ep_value = find_opt(opts, "Ep") if ep_enable: diff --git a/scripts/add_brownfield.py b/scripts/add_brownfield.py index c71a2cb2f8..366d5eb8ae 100644 --- a/scripts/add_brownfield.py +++ b/scripts/add_brownfield.py @@ -59,49 +59,58 @@ def add_brownfield( dc_i = n.links[n.links.carrier == "DC"].index n.links.loc[dc_i, "p_nom_min"] = n_p.links.loc[dc_i, "p_nom_opt"] - for c in n_p.iterate_components(["Link", "Generator", "Store"]): + for c in n_p.components[["Link", "Generator", "Store"]]: + if c.static.empty: + continue attr = "e" if c.name == "Store" else "p" # first, remove generators, links and stores that track # CO2 or global EU values since these are already in n - n_p.remove(c.name, c.df.index[c.df.lifetime == np.inf]) + n_p.remove(c.name, c.static.index[c.static.lifetime == np.inf]) # remove assets whose build_year + lifetime <= year - n_p.remove(c.name, c.df.index[c.df.build_year + c.df.lifetime <= year]) + n_p.remove( + c.name, c.static.index[c.static.build_year + c.static.lifetime <= year] + ) # remove assets if their optimized nominal capacity is lower than a threshold # since CHP heat Link is proportional to CHP electric Link, make sure threshold is compatible - chp_heat = c.df.index[ - (c.df[f"{attr}_nom_extendable"] & c.df.index.str.contains("urban central")) - & c.df.index.str.contains("CHP") - & c.df.index.str.contains("heat") + chp_heat = c.static.index[ + ( + c.static[f"{attr}_nom_extendable"] + & c.static.index.str.contains("urban central") + ) + & c.static.index.str.contains("CHP") + & c.static.index.str.contains("heat") ] if not chp_heat.empty: threshold_chp_heat = ( capacity_threshold - * c.df.efficiency[chp_heat.str.replace("heat", "electric")].values - * c.df.p_nom_ratio[chp_heat.str.replace("heat", "electric")].values - / c.df.efficiency[chp_heat].values + * c.static.efficiency[chp_heat.str.replace("heat", "electric")].values + * c.static.p_nom_ratio[chp_heat.str.replace("heat", "electric")].values + / c.static.efficiency[chp_heat].values ) n_p.remove( c.name, - chp_heat[c.df.loc[chp_heat, f"{attr}_nom_opt"] < threshold_chp_heat], + chp_heat[ + c.static.loc[chp_heat, f"{attr}_nom_opt"] < threshold_chp_heat + ], ) n_p.remove( c.name, - c.df.index[ - (c.df[f"{attr}_nom_extendable"] & ~c.df.index.isin(chp_heat)) - & (c.df[f"{attr}_nom_opt"] < capacity_threshold) + c.static.index[ + (c.static[f"{attr}_nom_extendable"] & ~c.static.index.isin(chp_heat)) + & (c.static[f"{attr}_nom_opt"] < capacity_threshold) ], ) # copy over assets but fix their capacity - c.df[f"{attr}_nom"] = c.df[f"{attr}_nom_opt"] - c.df[f"{attr}_nom_extendable"] = False + c.static[f"{attr}_nom"] = c.static[f"{attr}_nom_opt"] + c.static[f"{attr}_nom_extendable"] = False - n.add(c.name, c.df.index, **c.df) + n.add(c.name, c.static.index, **c.static) # copy time-dependent selection = n.component_attrs[c.name].type.str.contains( @@ -109,7 +118,7 @@ def add_brownfield( ) & n.component_attrs[c.name].status.str.contains("Input") for tattr in n.component_attrs[c.name].index[selection]: # TODO: Needs to be rewritten to - n._import_series_from_df(c.pnl[tattr], c.name, tattr) + n._import_series_from_df(c.dynamic[tattr], c.name, tattr) # deal with gas network if h2_retrofit: diff --git a/scripts/add_electricity.py b/scripts/add_electricity.py index 87c2dab7df..84fd226dfd 100755 --- a/scripts/add_electricity.py +++ b/scripts/add_electricity.py @@ -219,9 +219,9 @@ def sanitize_carriers(n, config): Raises a warning if any carrier's "tech_colors" are not defined in the config dictionary. """ - for c in n.iterate_components(): - if "carrier" in c.df: - add_missing_carriers(n, c.df.carrier) + for c in n.components: + if "carrier" in c.static: + add_missing_carriers(n, c.static.carrier) carrier_i = n.carriers.index nice_names = ( @@ -267,7 +267,7 @@ def add_co2_emissions(n, costs, carriers): def load_and_aggregate_powerplants( ppl_fn: str, costs: pd.DataFrame, - consider_efficiency_classes: bool = False, + consider_efficiency_classes: bool | list[float] = False, aggregation_strategies: dict = None, exclude_carriers: list = None, ) -> pd.DataFrame: @@ -331,15 +331,21 @@ def load_and_aggregate_powerplants( df = ppl[to_aggregate].copy() if consider_efficiency_classes: + quantiles = ( + [0.1, 0.9] + if consider_efficiency_classes is True + else consider_efficiency_classes + ) for c in df.carrier.unique(): df_c = df.query("carrier == @c") - low = df_c.efficiency.quantile(0.10) - high = df_c.efficiency.quantile(0.90) - if low < high: - labels = ["low", "medium", "high"] - suffix = pd.cut( - df_c.efficiency, bins=[0, low, high, 1], labels=labels - ).astype(str) + thresholds = df_c.efficiency.quantile(quantiles).tolist() + if thresholds[0] < thresholds[-1]: + unique_thresholds, indices = np.unique(thresholds, return_index=True) + labels = ["Q0"] + [ + f"Q{int(quantiles[i] * 100)}" for i in sorted(indices) + ] + bins = [0.0] + unique_thresholds.tolist() + [1.0] + suffix = pd.cut(df_c.efficiency, bins=bins, labels=labels).astype(str) df.update({"carrier": df_c.carrier + " " + suffix + " efficiency"}) grouper = ["bus", "carrier"] @@ -353,15 +359,21 @@ def load_and_aggregate_powerplants( aggregated = df.groupby(grouper, as_index=False).agg(strategies) aggregated.index = aggregated.bus + " " + aggregated.carrier aggregated.build_year = aggregated.build_year.astype(int) + aggregated.carrier = aggregated.carrier.str.replace( + r" Q\d+ efficiency", "", regex=True + ) - disaggregated = ppl[~to_aggregate][aggregated.columns].copy() + disaggregated = ppl[~to_aggregate].copy() disaggregated.index = ( disaggregated.bus + " " + disaggregated.carrier + " " + disaggregated.index.astype(str) + + " " + + disaggregated.name ) + disaggregated = disaggregated[aggregated.columns] return pd.concat([aggregated, disaggregated]) @@ -565,6 +577,7 @@ def attach_conventional_generators( ppl: pd.DataFrame, conventional_carriers: list, extendable_carriers: dict, + renewable_carriers: set, conventional_params: dict, conventional_inputs: dict, unit_commitment: pd.DataFrame = None, @@ -585,6 +598,8 @@ def attach_conventional_generators( List of conventional energy carriers. extendable_carriers : dict Dictionary of extendable energy carriers. + renewable_carriers : set + Set of carriers added separately in attach_wind_and_solar(). conventional_params : dict Dictionary of conventional generator parameters. conventional_inputs : dict @@ -594,9 +609,12 @@ def attach_conventional_generators( fuel_price : pd.DataFrame, optional DataFrame containing fuel price data, by default None. """ - carriers = list(set(conventional_carriers) | set(extendable_carriers["Generator"])) + carriers = list( + set(conventional_carriers) + | set(extendable_carriers["Generator"]) - set(renewable_carriers) + ) - ppl = ppl.query("carrier in @carriers") + ppl = ppl.query("carrier in @carriers").copy() # reduce carriers to those in power plant dataset carriers = list(set(carriers) & set(ppl.carrier.unique())) @@ -606,10 +624,13 @@ def attach_conventional_generators( if unit_commitment is not None: committable_attrs = ppl.carrier.isin(unit_commitment).to_frame("committable") for attr in unit_commitment.index: - default = n.component_attrs["Generator"].loc[attr, "default"] + default = n.components["Generator"].defaults.loc[attr, "default"] committable_attrs[attr] = ppl.carrier.map(unit_commitment.loc[attr]).fillna( default ) + # These values are given per MW, but PyPSA expects them in total. + if attr in {"start_up_cost", "shut_down_cost", "stand_by_cost"}: + committable_attrs[attr] *= ppl.p_nom else: committable_attrs = {} @@ -655,9 +676,15 @@ def attach_conventional_generators( if f"conventional_{carrier}_{attr}" in conventional_inputs: # Values affecting generators of technology k country-specific # First map generator buses to countries; then map countries to p_max_pu - values = pd.read_csv( + df = pd.read_csv( conventional_inputs[f"conventional_{carrier}_{attr}"], index_col=0 - ).iloc[:, 0] + ) + try: + df.columns = df.columns.astype(int) + year = n.snapshots[0].year + values = df[year] + except (ValueError, TypeError): + values = df.iloc[:, -1] # take last column if year selection fails bus_values = n.buses.country.map(values) n.generators.update( {attr: n.generators.loc[idx].bus.map(bus_values).dropna()} @@ -667,6 +694,43 @@ def attach_conventional_generators( n.generators.loc[idx, attr] = values +def attach_existing_batteries( + n: pypsa.Network, + costs: pd.DataFrame, + ppl: pd.DataFrame, +) -> None: + """Attach existing battery storage units from the power plant dataset.""" + batt = ppl.query('carrier == "battery"') + if batt.empty: + return + + add_missing_carriers(n, ["battery"]) + efficiency = np.sqrt(costs.at["battery inverter", "efficiency"]) + batt["max_hours"] = batt.max_hours.fillna(batt.max_hours.median()) + + n.add( + "StorageUnit", + batt.index, + carrier="battery", + bus=batt.bus, + p_nom=batt.p_nom, + capital_cost=batt.capital_cost, + max_hours=batt.max_hours, + efficiency_store=efficiency, + efficiency_dispatch=efficiency, + cyclic_state_of_charge=True, + ) + + stats = ( + batt.groupby("country") + .p_nom.sum() + .div(1e3) + .round(3) + .sort_values(ascending=False) + ) + logger.info(f"Added {len(batt)} existing battery storage units\n({stats} MW)") + + def attach_hydro( n: pypsa.Network, costs: pd.DataFrame, @@ -834,7 +898,7 @@ def attach_hydro( ) -def attach_GEM_renewables( +def attach_renewable_powerplants( n: pypsa.Network, tech_map: dict[str, list[str]], smk_inputs: list[str] ) -> None: """ @@ -848,9 +912,11 @@ def attach_GEM_renewables( - None """ tech_string = ", ".join(tech_map.values()) - logger.info(f"Using GEM renewable capacities for carriers {tech_string}.") + logger.info( + f"Using powerplantmatching renewable capacities for carriers {tech_string}." + ) - df = pm.data.GEM().powerplant.convert_country_to_alpha2() + df = pd.read_csv(smk_inputs["powerplants"], index_col=0).drop("bus", axis=1) technology_b = ~df.Technology.isin(["Onshore", "Offshore"]) df["Fueltype"] = df.Fueltype.where(technology_b, df.Technology).replace( {"Solar": "PV"} @@ -961,7 +1027,7 @@ def attach_storageunits( n: pypsa.Network, costs: pd.DataFrame, buses_i: list, - extendable_carriers: dict, + extendable_carriers: list, max_hours: dict, ): """ @@ -975,7 +1041,7 @@ def attach_storageunits( DataFrame containing the cost data. buses_i : list List of high voltage electricity buses. - extendable_carriers : dict + extendable_carriers : list List of extendable storage units carrier names. max_hours : dict Dictionary of maximum hours for storage units. @@ -1026,7 +1092,7 @@ def attach_stores( n: pypsa.Network, costs: pd.DataFrame, buses_i: list, - extendable_carriers: dict, + extendable_carriers: list, ): """ Attach stores to the network. @@ -1039,7 +1105,7 @@ def attach_stores( DataFrame containing the cost data. buses_i : list List of high voltage electricity buses. - extendable_carriers : dict + extendable_carriers : list List of extendable storage carrier names. """ available_carriers = get_available_storage_carriers(extendable_carriers) @@ -1121,7 +1187,7 @@ def attach_stores( if "snakemake" not in globals(): from scripts._helpers import mock_snakemake - snakemake = mock_snakemake("add_electricity", clusters=100) + snakemake = mock_snakemake("add_electricity", clusters=60) configure_logging(snakemake) # pylint: disable=E0606 set_scenario_config(snakemake) @@ -1176,7 +1242,7 @@ def attach_stores( if params.conventional["dynamic_fuel_price"]: fuel_price = pd.read_csv( - snakemake.input.fuel_price, index_col=0, header=0, parse_dates=True + snakemake.input.fuel_price, index_col=0, parse_dates=True ) fuel_price = fuel_price.reindex(n.snapshots).ffill() else: @@ -1188,8 +1254,9 @@ def attach_stores( ppl, conventional_carriers, extendable_carriers, - params.conventional, - conventional_inputs, + renewable_carriers, + conventional_params=params.conventional, + conventional_inputs=conventional_inputs, unit_commitment=unit_commitment, fuel_price=fuel_price, ) @@ -1229,12 +1296,13 @@ def attach_stores( expansion_limit = estimate_renewable_caps["expansion_limit"] year = estimate_renewable_caps["year"] - if estimate_renewable_caps["from_gem"]: - attach_GEM_renewables(n, tech_map, snakemake.input) + if estimate_renewable_caps["from_powerplantmatching"]: + attach_renewable_powerplants(n, tech_map, snakemake.input) - estimate_renewable_capacities( - n, year, tech_map, expansion_limit, params.countries - ) + if estimate_renewable_caps["from_irenastat"]: + estimate_renewable_capacities( + n, year, tech_map, expansion_limit, params.countries + ) update_p_nom_max(n) @@ -1243,6 +1311,9 @@ def attach_stores( ) attach_stores(n, costs, n.buses.index, extendable_carriers["Store"]) + if params.electricity.get("estimate_battery_capacities", False): + attach_existing_batteries(n, costs, ppl) + sanitize_carriers(n, snakemake.config) if "location" in n.buses: sanitize_locations(n) diff --git a/scripts/add_existing_baseyear.py b/scripts/add_existing_baseyear.py index d2ee648c4e..4f0027070f 100644 --- a/scripts/add_existing_baseyear.py +++ b/scripts/add_existing_baseyear.py @@ -48,21 +48,25 @@ def add_build_year_to_new_assets(n: pypsa.Network, baseyear: int) -> None: Year in which optimized assets are built """ # Give assets with lifetimes and no build year the build year baseyear - for c in n.iterate_components(["Link", "Generator", "Store"]): - assets = c.df.index[(c.df.lifetime != np.inf) & (c.df.build_year == 0)] - c.df.loc[assets, "build_year"] = baseyear + for c in n.components[["Link", "Generator", "Store"]]: + if c.static.empty: + continue + assets = c.static.index[ + (c.static.lifetime != np.inf) & (c.static.build_year == 0) + ] + c.static.loc[assets, "build_year"] = baseyear # add -baseyear to name - rename = pd.Series(c.df.index, c.df.index) + rename = pd.Series(c.static.index, c.static.index) rename[assets] += f"-{str(baseyear)}" - c.df.rename(index=rename, inplace=True) + c.static.rename(index=rename, inplace=True) # rename time-dependent selection = n.component_attrs[c.name].type.str.contains( "series" ) & n.component_attrs[c.name].status.str.contains("Input") for attr in n.component_attrs[c.name].index[selection]: - c.pnl[attr] = c.pnl[attr].rename(columns=rename) + c.dynamic[attr] = c.dynamic[attr].rename(columns=rename) def add_existing_renewables( @@ -209,6 +213,8 @@ def add_power_capacities_installed_before_baseyear( "Waste", "Other", "CCGT, Thermal", + "Battery", + "Heat Storage", ] technology_to_drop = ["Pv", "Storage Technologies"] @@ -218,14 +224,16 @@ def add_power_capacities_installed_before_baseyear( df_agg.drop(df_agg.index[df_agg.Technology.isin(technology_to_drop)], inplace=True) df_agg.Fueltype = df_agg.Fueltype.map(rename_fuel) - # Intermediate fix for DateIn & DateOut # Fill missing DateIn - biomass_i = df_agg.loc[df_agg.Fueltype == "urban central solid biomass CHP"].index - mean = df_agg.loc[biomass_i, "DateIn"].mean() - df_agg.loc[biomass_i, "DateIn"] = df_agg.loc[biomass_i, "DateIn"].fillna(int(mean)) - # Fill missing DateOut - dateout = df_agg.loc[biomass_i, "DateIn"] + lifetime_values["lifetime"] - df_agg.loc[biomass_i, "DateOut"] = df_agg.loc[biomass_i, "DateOut"].fillna(dateout) + df_agg["DateIn"] = df_agg.groupby("Fueltype")["DateIn"].transform( + lambda x: x.fillna(x.mean() // 1) + ) + df_agg.dropna(subset="DateIn", inplace=True) + + # Estimate missing DateOut + df_agg["DateOut"] = df_agg.DateOut.combine_first( + df_agg.DateIn + df_agg.Fueltype.map(costs.lifetime).fillna(30) + ) # include renewables in df_agg add_existing_renewables( @@ -250,9 +258,13 @@ def add_power_capacities_installed_before_baseyear( to_drop = df_agg[df_agg.DateIn > max(grouping_years)].index df_agg.drop(to_drop, inplace=True) - df_agg["grouping_year"] = np.take( - grouping_years, np.digitize(df_agg.DateIn, grouping_years, right=True) - ) + df_agg["grouping_year"] = pd.cut( + df_agg.DateIn, + bins=grouping_years, + labels=grouping_years[1:], + right=True, + include_lowest=True, + ).astype(int) # calculate (adjusted) remaining lifetime before phase-out (+1 because assuming # phase out date at the end of the year) diff --git a/scripts/base_network.py b/scripts/base_network.py index cb9d4ff2e6..327a14df21 100644 --- a/scripts/base_network.py +++ b/scripts/base_network.py @@ -264,7 +264,7 @@ def _apply_parameter_corrections(n, parameter_corrections): return for component, attrs in corrections.items(): - df = n.df(component) + df = n.components[component].static oid = _get_oid(df) if attrs is None: continue diff --git a/scripts/build_biomass_potentials.py b/scripts/build_biomass_potentials.py index a5373d10a0..796bd9e554 100755 --- a/scripts/build_biomass_potentials.py +++ b/scripts/build_biomass_potentials.py @@ -13,7 +13,6 @@ import pandas as pd from scripts._helpers import configure_logging, set_scenario_config -from scripts.build_energy_totals import build_eurostat logger = logging.getLogger(__name__) AVAILABLE_BIOMASS_YEARS = [2010, 2020, 2030, 2040, 2050] @@ -246,7 +245,7 @@ def convert_nuts2_to_regions(bio_nuts2, regions): return bio_regions -def add_unsustainable_potentials(df): +def add_unsustainable_potentials(df, input_eurostat): """ Add unsustainable biomass potentials to the given dataframe. The difference between the data of JRC and Eurostat is assumed to be unsustainable @@ -269,36 +268,29 @@ def add_unsustainable_potentials(df): else: latest_year = 2021 idees_rename = {"GR": "EL", "GB": "UK"} + year = max(min(latest_year, int(snakemake.wildcards.planning_horizons)), 1990) # noqa: F841 df_unsustainable = ( - build_eurostat( - countries=snakemake.config["countries"], - input_eurostat=snakemake.input.eurostat, - nprocesses=int(snakemake.threads), - ) - .xs( - max(min(latest_year, int(snakemake.wildcards.planning_horizons)), 1990), - level=1, - ) - .xs("Primary production", level=2) - .droplevel([1, 2, 3]) + pd.read_csv(input_eurostat) + .query("year == @year and nrg_bal == 'PPRD'") # Primary production + .set_index(["country", "siec"]) + .value.unstack("siec") ) - df_unsustainable.index = df_unsustainable.index.str.strip() df_unsustainable = df_unsustainable.rename( {v: k for k, v in idees_rename.items()}, axis=0 ) bio_carriers = [ - "Primary solid biofuels", - "Biogases", - "Renewable municipal waste", - "Pure biogasoline", - "Blended biogasoline", - "Pure biodiesels", - "Blended biodiesels", - "Pure bio jet kerosene", - "Blended bio jet kerosene", - "Other liquid biofuels", + "R5110-5150_W6000RI", # Primary solid biofuels + "R5300", # Biogases + "W6210", # Renewable municipal waste + "R5210P", # Pure biogasoline + "R5210B", # Blended biogasoline + "R5220P", # Pure biodiesels + "R5220B", # Blended biodiesels + "R5230P", # Pure bio jet kerosene + "R5230B", # Blended bio jet kerosene + "R5290", # Other liquid biofuels ] df_unsustainable = df_unsustainable[bio_carriers] @@ -310,12 +302,18 @@ def add_unsustainable_potentials(df): # Calculate unsustainable solid biomass df_wo_ch["unsustainable solid biomass"] = _calc_unsustainable_potential( - df_wo_ch, df_unsustainable, share_unsus, "Primary solid biofuels" + df_wo_ch, + df_unsustainable, + share_unsus, + "R5110-5150_W6000RI", # Primary solid biofuels ) # Calculate unsustainable biogas df_wo_ch["unsustainable biogas"] = _calc_unsustainable_potential( - df_wo_ch, df_unsustainable, share_unsus, "Biogases" + df_wo_ch, + df_unsustainable, + share_unsus, + "R5300", # Biogases ) # Calculate unsustainable bioliquids @@ -323,7 +321,7 @@ def add_unsustainable_potentials(df): df_wo_ch, df_unsustainable, share_unsus, - resource_type="gasoline|diesel|kerosene|liquid", + resource_type="R5210|R5220|R5230|R5290", # gasoline, diesel, kerosene, liquids ) share_sus = params.get("share_sustainable_potential_available").get(investment_year) @@ -391,7 +389,8 @@ def add_unsustainable_potentials(df): grouper = {v: k for k, vv in params["classes"].items() for v in vv} df = df.T.groupby(grouper).sum().T - df = add_unsustainable_potentials(df) + input_eurostat = snakemake.input.eurostat + df = add_unsustainable_potentials(df, input_eurostat) df *= 1e6 # TWh/a to MWh/a df.index.name = "MWh/a" diff --git a/scripts/build_co2_prices.py b/scripts/build_co2_prices.py new file mode 100644 index 0000000000..a8e564e7d8 --- /dev/null +++ b/scripts/build_co2_prices.py @@ -0,0 +1,41 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT +""" +Build CO2 price time series. +""" + +import logging + +import pandas as pd + +from scripts._helpers import configure_logging, set_scenario_config + +logger = logging.getLogger(__name__) + +if __name__ == "__main__": + if "snakemake" not in globals(): + from scripts._helpers import mock_snakemake + + snakemake = mock_snakemake("build_co2_prices") + rootpath = ".." + else: + rootpath = "." + configure_logging(snakemake) + set_scenario_config(snakemake) + + df = pd.read_csv(snakemake.input["csv"], parse_dates=True, index_col=0)["price"] + + rolling_window = snakemake.params["rolling_window"] + + df_smoothed = ( + df.rolling(window=rolling_window, center=True, min_periods=1) + .mean() + .resample("1h") + .mean() + .ffill() + ) + + df_smoothed.index = df_smoothed.index.tz_localize(None) + + df_smoothed.to_csv(snakemake.output["csv"]) diff --git a/scripts/build_co2_sequestration_potentials.py b/scripts/build_co2_sequestration_potentials.py index 238839b3e8..62987c400a 100644 --- a/scripts/build_co2_sequestration_potentials.py +++ b/scripts/build_co2_sequestration_potentials.py @@ -82,7 +82,10 @@ def create_capacity_map_storage(table_fn: str, map_fn: str) -> gpd.GeoDataFrame: df = pd.read_csv(table_fn) sel = ["COUNTRYCOD", "ID", "geometry"] - gdf = gpd.read_file(map_fn).rename(columns={"id": "ID"})[sel] + gdf = gpd.read_file(map_fn).rename(columns={"id": "ID"}) + if gdf.ID.isna().all() and "ID2" in gdf.columns: + gdf["ID"] = gdf["ID2"] + gdf = gdf[sel] gdf.geometry = gdf.geometry.buffer(0) # Combine shapes with the same id into one multi-polygon @@ -155,7 +158,10 @@ def create_capacity_map_traps(table_fn: list[str], map_fn: str) -> gpd.GeoDataFr df = pd.concat([pd.read_csv(path) for path in table_fn], ignore_index=True) sel = ["COUNTRYCOD", "ID", "geometry"] - gdf = gpd.read_file(map_fn).rename(columns={"id": "ID"})[sel] + gdf = gpd.read_file(map_fn).rename(columns={"id": "ID"}) + if gdf.ID.isna().all() and "ID2" in gdf.columns: + gdf["ID"] = gdf["ID2"] + gdf = gdf[sel] # Combine shapes with the same id into one multi-polygon gdf = gdf.groupby(["COUNTRYCOD", "ID"]).agg(unary_union).reset_index() @@ -298,7 +304,7 @@ def merge_maps( if "snakemake" not in globals(): from scripts._helpers import mock_snakemake - snakemake = mock_snakemake("build_co2_storage") + snakemake = mock_snakemake("build_co2_sequestration_potentials") table_fn = snakemake.input.storage_table map_fn = snakemake.input.storage_map diff --git a/scripts/build_cop_profiles/run.py b/scripts/build_cop_profiles/run.py index 6af8b02e8a..d4712c2661 100644 --- a/scripts/build_cop_profiles/run.py +++ b/scripts/build_cop_profiles/run.py @@ -65,7 +65,7 @@ from scripts.build_cop_profiles.decentral_heating_cop_approximator import ( DecentralHeatingCopApproximator, ) -from scripts.definitions.heat_source import HeatSource +from scripts.definitions.heat_source import HeatSource, HeatSourceType from scripts.definitions.heat_system_type import HeatSystemType @@ -167,6 +167,14 @@ def get_source_temperature( heat_source = HeatSource(heat_source_name) if heat_source.temperature_from_config: return snakemake_params["heat_source_temperatures"][heat_source_name] + elif heat_source.source_type == HeatSourceType.STORAGE: + # PTES layer temperatures are explicit constants from config. + ptes_layer_temperatures = snakemake_params["ptes_layer_temperatures"] + if heat_source_name.startswith("ptes layer"): + layer_idx = int(heat_source_name.split()[-1]) + return float(ptes_layer_temperatures[layer_idx]) + else: + return float(ptes_layer_temperatures[0]) else: return xr.open_dataarray(snakemake_input[f"temp_{heat_source_name}"]) @@ -207,9 +215,9 @@ def get_source_inlet_temperature( # When source temperature <= return temperature, no preheating: # heat pump draws directly from the source. return xr.where( - source_temperature > central_heating_return_temperature, - central_heating_return_temperature, + source_temperature < central_heating_return_temperature, source_temperature, + central_heating_return_temperature, ) @@ -245,11 +253,23 @@ def get_sink_inlet_temperature( """ return xr.where( source_temperature > central_heating_return_temperature, - source_temperature, central_heating_return_temperature, + source_temperature, ) +def expand_heat_sources_for_ptes_layers( + heat_sources_by_system: dict[str, list[str]], + ptes_layer_temperatures: list[float] | None, +) -> dict[str, list[str]]: + """Replace 'ptes' by per-layer labels when multiple PTES layers exist.""" + + for layer in range(len(ptes_layer_temperatures)): + heat_sources_by_system["urban central"].append(f"ptes layer {layer}") + + return heat_sources_by_system + + if __name__ == "__main__": if "snakemake" not in globals(): from scripts._helpers import mock_snakemake @@ -268,8 +288,16 @@ def get_sink_inlet_temperature( snakemake.input.central_heating_return_temperature_profiles ) + if snakemake.params.layered_ptes: + heat_sources_by_system = expand_heat_sources_for_ptes_layers( + heat_sources_by_system=snakemake.params.heat_sources, + ptes_layer_temperatures=snakemake.params.ptes_layer_temperatures, + ) + else: + heat_sources_by_system = snakemake.params.heat_sources + cop_all_system_types = [] - for heat_system_type, heat_sources in snakemake.params.heat_sources.items(): + for heat_system_type, heat_sources in heat_sources_by_system.items(): cop_this_system_type = [] if not heat_sources: cop_all_system_types.append( @@ -311,7 +339,7 @@ def get_sink_inlet_temperature( cop_dataarray = xr.concat( cop_all_system_types, - dim=pd.Index(snakemake.params.heat_sources.keys(), name="heat_system"), + dim=pd.Index(heat_sources_by_system.keys(), name="heat_system"), ) cop_dataarray.to_netcdf(snakemake.output.cop_profiles) diff --git a/scripts/build_electricity_demand_base.py b/scripts/build_electricity_demand_base.py index ba07b7bfa8..4cd84b9faf 100644 --- a/scripts/build_electricity_demand_base.py +++ b/scripts/build_electricity_demand_base.py @@ -6,86 +6,219 @@ """ import logging -from itertools import product +import country_converter as coco import geopandas as gpd import numpy as np import pandas as pd import pypsa -import scipy.sparse as sparse +import rasterio as rio import xarray as xr -from shapely.prepared import prep +from rasterstats import zonal_stats from scripts._helpers import configure_logging, set_scenario_config logger = logging.getLogger(__name__) +cc = coco.CountryConverter() + def normed(s: pd.Series) -> pd.Series: return s / s.sum() -def shapes_to_shapes(orig: gpd.GeoSeries, dest: gpd.GeoSeries) -> sparse.lil_matrix: +def redistribute_attribute( + orig: gpd.GeoDataFrame, dest: gpd.GeoDataFrame, attr: str +) -> pd.Series: + """ + Redistributes an attribute from origin GeoDataFrame to destination GeoDataFrame based on overlapping areas. + + Computes the intersection between geometries and proportionally assigns the attribute values + according to the share of overlapping area. + + Parameters + ---------- + orig : gpd.GeoDataFrame + Source GeoDataFrame containing the attribute to redistribute + dest : gpd.GeoDataFrame + Target GeoDataFrame to receive redistributed values + attr : str + Name of the attribute column to redistribute + + Returns + ------- + pd.Series + Redistributed attribute values indexed by destination's 'name' column + """ + if orig.crs != 3035: + orig = orig.to_crs(epsg=3035) + if dest.crs != 3035: + dest = dest.to_crs(epsg=3035) + orig["area_orig"] = orig.area + overlay = gpd.overlay(dest, orig, keep_geom_type=False) + overlay["share"] = overlay.area / overlay.area_orig + overlay["attr"] = overlay[attr].mul(overlay.share) + return overlay.dissolve("name", aggfunc="sum")["attr"] + + +def energy_atlas_distribution_keys( + raster_fn: str, regions: gpd.GeoDataFrame +) -> pd.Series: """ - Adopted from vresutils.transfer.Shapes2Shapes() + Calculate distribution keys for regions based on energy atlas raster data. + + Parameters + ---------- + fn : str + File path to the raster data (GeoTIFF format). + regions : gpd.GeoDataFrame + GeoDataFrame containing the regions with a 'country' column. + + Returns + ------- + pd.Series + Series of distribution keys indexed by region names. + Sum of keys per country equals 1 (unless omitted islands in regions). """ - orig_prepped = list(map(prep, orig)) - transfer = sparse.lil_matrix((len(dest), len(orig)), dtype=float) - for i, j in product(range(len(dest)), range(len(orig))): - if orig_prepped[j].intersects(dest.iloc[i]): - area = orig.iloc[j].intersection(dest.iloc[i]).area - transfer[i, j] = area / dest.iloc[i].area + raster = rio.open(raster_fn) + band = raster.read(1) - return transfer + distribution_keys = [] + for country, group in regions.groupby("country"): + if country not in cc.EU27as("ISO2").ISO2.to_list(): + continue + weights = zonal_stats( + group, band, affine=raster.transform, nodata=-1, stats="sum" + ) + group["weights"] = [w["sum"] for w in weights] + distribution_keys.append(group["weights"] / group["weights"].sum()) + distribution_keys = pd.concat(distribution_keys).reindex(regions.index) + return distribution_keys + + +def gb_distribution_keys( + excel_fn: str, geojson_fn: str, regions: gpd.GeoDataFrame +) -> pd.Series: + """ + Calculate distribution keys for Great Britain regions based on electricity consumption statistics. + + Parameters + ---------- + excel_fn : str + File path to the Excel file containing electricity consumption by local authority districts. + geojson_fn : str + File path to the GeoJSON file containing geometries of local authority districts. + regions : gpd.GeoDataFrame + GeoDataFrame containing the network regions. + + Returns + ------- + pd.Series + Series of distribution keys indexed by region names. + """ + + df = pd.read_excel(excel_fn, skiprows=4, sheet_name="2019") + df = df.loc[~df["Local authority"].isin(["All local authorities", "Unallocated"])] + gdf = gpd.read_file(geojson_fn).to_crs(epsg=3035) + gdf = gdf.rename(columns={"LAD24CD": "Code"}).merge(df, on="Code") + + attr = "Total consumption\n(GWh):\nAll meters" + redistributed = redistribute_attribute(gdf, regions.reset_index(drop=True), attr) + distribution_keys = normed(redistributed) + return distribution_keys + + +def nuts3_distribution_keys( + nuts3_fn: str, distribution_key: dict[str, float], regions: gpd.GeoDataFrame +) -> pd.Series: + """ + Calculate distribution keys for regions based on NUTS3 data (GDP and population). + + Parameters + ---------- + nuts3_fn : str + File path to the NUTS3 GeoJSON file containing geometries and attributes. + distribution_key : dict[str, float] + Weights for GDP and population in the distribution key calculation. + Example: {"gdp": 0.6, "pop": 0.4} + regions : gpd.GeoDataFrame + GeoDataFrame containing the regions with a 'country' column. + + Returns + ------- + pd.Series + Series of distribution keys indexed by region names. + """ + + gdp_weight = distribution_key.get("gdp", 0.6) + pop_weight = distribution_key.get("pop", 0.4) + + nuts3 = gpd.read_file(nuts3_fn).to_crs(epsg=3035) + nuts3.rename(columns={"name": "nuts3_name"}, inplace=True) + + regions["pop"] = redistribute_attribute( + nuts3, regions.reset_index(drop=True), "pop" + ) + regions["gdp"] = redistribute_attribute( + nuts3, regions.reset_index(drop=True), "gdp" + ) + + nuts3_keys = [] + for country, group in regions.groupby("country"): + factors = normed( + gdp_weight * normed(group["gdp"]) + pop_weight * normed(group["pop"]) + ) + nuts3_keys.append(factors) + return pd.concat(nuts3_keys).reindex(regions.index) def upsample_load( n: pypsa.Network, regions_fn: str, load_fn: str, + raster_fn: str, + gb_excel_fn: str, + gb_geojson_fn: str, nuts3_fn: str, distribution_key: dict[str, float], -) -> pd.DataFrame: - substation_lv_i = n.buses.index[n.buses["substation_lv"]] - gdf_regions = gpd.read_file(regions_fn).set_index("name").reindex(substation_lv_i) + substation_only: bool = False, +) -> xr.DataArray: + regions = gpd.read_file(regions_fn).set_index("name", drop=False).to_crs(epsg=3035) + + if substation_only: + substation_lv_i = n.buses.index[n.buses["substation_lv"]] + regions = regions.reindex(substation_lv_i) load = pd.read_csv(load_fn, index_col=0, parse_dates=True) - nuts3 = gpd.read_file(nuts3_fn).set_index("index") + ea_keys = energy_atlas_distribution_keys(raster_fn, regions) + gb_keys = gb_distribution_keys(gb_excel_fn, gb_geojson_fn, regions) + nuts3_keys = nuts3_distribution_keys(nuts3_fn, distribution_key, regions) - gdp_weight = distribution_key.get("gdp", 0.6) - pop_weight = distribution_key.get("pop", 0.4) + factors = ea_keys.combine_first(gb_keys).combine_first(nuts3_keys) + + # sanitize: need to renormalize since `gb_keys` only cover Great Britain + # and Northern Ireland is taken from `nuts3_keys` + if "GB" in regions.country: + uk_regions_i = regions.query("country == 'GB'").index + uk_weights = factors.loc[uk_regions_i].sum() + factors.loc[uk_regions_i] /= uk_weights data_arrays = [] - for cntry, group in gdf_regions.geometry.groupby(gdf_regions.country): + for cntry, group in regions.geometry.groupby(regions.country): if cntry not in load.columns: - # TODO: Implement TYNDP load data integration and remove this logger.warning(f"Cannot upsample load for {cntry}: no load data defined") continue load_ct = load[cntry] - - if len(group) == 1: - factors = pd.Series(1.0, index=group.index) - - else: - nuts3_cntry = nuts3.loc[nuts3.country == cntry] - transfer = shapes_to_shapes(group, nuts3_cntry.geometry).T.tocsr() - gdp_n = pd.Series( - transfer.dot(nuts3_cntry["gdp"].fillna(1.0).values), index=group.index - ) - pop_n = pd.Series( - transfer.dot(nuts3_cntry["pop"].fillna(1.0).values), index=group.index - ) - - factors = normed(gdp_weight * normed(gdp_n) + pop_weight * normed(pop_n)) + factors_ct = factors.loc[group.index] data_arrays.append( xr.DataArray( - factors.values * load_ct.values[:, np.newaxis], + factors_ct.values * load_ct.values[:, np.newaxis], dims=["time", "bus"], - coords={"time": load_ct.index.values, "bus": factors.index.values}, + coords={"time": load_ct.index.values, "bus": factors_ct.index.values}, ) ) @@ -108,8 +241,12 @@ def upsample_load( n, regions_fn=snakemake.input.regions, load_fn=snakemake.input.load, + raster_fn=snakemake.input.raster, + gb_excel_fn=snakemake.input.gb_excel, + gb_geojson_fn=snakemake.input.gb_geojson, nuts3_fn=snakemake.input.nuts3, distribution_key=params.distribution_key, + substation_only=params.substation_only, ) load.name = "electricity demand (MW)" diff --git a/scripts/build_energy_totals.py b/scripts/build_energy_totals.py index a5241e5852..04f85693d7 100644 --- a/scripts/build_energy_totals.py +++ b/scripts/build_energy_totals.py @@ -5,8 +5,8 @@ Build total energy demands and carbon emissions per country using JRC IDEES, eurostat, and EEA data. -- Country-specific data is read in :func:`build_eurostat`, :func:`build_idees` and `build_swiss`. -- :func:`build_energy_totals` then combines energy data from Eurostat, Swiss, and IDEES data and :func:`rescale_idees_from_eurostat` rescales IDEES data to match Eurostat data. +- Country-specific data is read in :func:`build_idees` and read in from :mod:`scripts/build_eurostat_balances` and :mod:`scripts/build_swiss_energy_balances`. +- :func:`build_energy_totals` then combines energy data from Eurostat, Swiss, and IDEES data. - :func:`build_district_heat_share` calculates the share of district heating for each country from IDEES data. - Historical CO2 emissions are calculated in :func:`build_eea_co2` and :func:`build_eurostat_co2` and combined in :func:`build_co2_totals`. @@ -21,6 +21,7 @@ import logging import multiprocessing as mp from functools import partial +from pathlib import Path import country_converter as coco import geopandas as gpd @@ -119,173 +120,6 @@ def reverse(dictionary: dict) -> dict: } -def eurostat_per_country(input_eurostat: str, country: str) -> pd.DataFrame: - """ - Read energy balance data for a specific country from Eurostat. - - Parameters - ---------- - input_eurostat : str - Path to the directory containing Eurostat data files. - country : str - Country code for the specific country. - - Returns - ------- - pd.DataFrame - Concatenated energy balance data for the specified country. - - Notes - ----- - - The function reads `/.-Energy-balance-sheets-April-2023-edition.xlsb` - - It removes the "Cover" sheet from the data and concatenates all the remaining sheets into a single DataFrame. - """ - - filename = ( - f"{input_eurostat}/{country}-Energy-balance-sheets-April-2023-edition.xlsb" - ) - sheet = pd.read_excel( - filename, - engine="pyxlsb", - sheet_name=None, - skiprows=4, - index_col=list(range(4)), - na_values=":", - ) - sheet.pop("Cover") - return pd.concat(sheet) - - -def build_eurostat( - input_eurostat: str, - countries: list[str], - nprocesses: int = 1, - disable_progressbar: bool = False, -) -> pd.DataFrame: - """ - Return multi-index for all countries' energy data in TWh/a. - - Parameters - ---------- - input_eurostat : str - Path to the Eurostat database. - countries : list[str] - List of countries for which energy data is to be retrieved. - nprocesses : int, optional - Number of processes to use for parallel execution, by default 1. - disable_progressbar : bool, optional - Whether to disable the progress bar, by default False. - - Returns - ------- - pd.DataFrame - Multi-index DataFrame containing energy data for all countries in TWh/a. - - Notes - ----- - - The function first renames the countries in the input list using the `idees_rename` mapping and removes "CH". - - It then reads country-wise data using :func:`eurostat_per_country` into a single DataFrame. - - The data is reordered, converted to TWh/a, and missing values are filled. - """ - - countries = {idees_rename.get(country, country) for country in countries} - {"CH"} - - func = partial(eurostat_per_country, input_eurostat) - tqdm_kwargs = dict( - ascii=False, - unit=" country", - total=len(countries), - desc="Build from eurostat database", - disable=disable_progressbar, - ) - with mute_print(): - with mp.Pool(processes=nprocesses) as pool: - dfs = list(tqdm(pool.imap(func, countries), **tqdm_kwargs)) - - index_names = ["country", "year", "lvl1", "lvl2", "lvl3", "lvl4"] - df = pd.concat(dfs, keys=countries, names=index_names) - df.index = df.index.set_levels(df.index.levels[1].astype(int), level=1) - - # drop columns with all NaNs - unnamed_cols = df.columns[df.columns.astype(str).str.startswith("Unnamed")] - df.drop(unnamed_cols, axis=1, inplace=True) - df.drop(list(range(1990, 2022)), axis=1, inplace=True, errors="ignore") - - # make numeric values where possible - df.replace("Z", 0, inplace=True) - df = df.apply(pd.to_numeric, errors="coerce") - df = df.select_dtypes(include=[np.number]) - - # write 'International aviation' to the lower level of the multiindex - int_avia = df.index.get_level_values(3) == "International aviation" - temp = df.loc[int_avia] - temp.index = pd.MultiIndex.from_frame( - temp.index.to_frame().fillna("International aviation") - ) - df = pd.concat([temp, df.loc[~int_avia]]).sort_index() - - # Fill in missing data on "Domestic aviation" for each country. - for country in countries: - slicer = idx[country, :, :, :, "Domestic aviation"] - # For the Total and Fossil energy columns, fill in zeros with - # the closest non-zero value in the year index. - for col in ["Total", "Fossil energy"]: - df.loc[slicer, col] = ( - df.loc[slicer, col].replace(0.0, np.nan).ffill().bfill() - ) - - # Renaming some indices - index_rename = { - "Households": "Residential", - "Commercial & public services": "Services", - "Domestic navigation": "Domestic Navigation", - "International maritime bunkers": "Bunkers", - "UK": "GB", - "EL": "GR", - } - columns_rename = {"Total": "Total all products"} - df.rename(index=index_rename, columns=columns_rename, inplace=True) - df.sort_index(inplace=True) - - # convert to TWh/a from ktoe/a - df *= 11.63 / 1e3 - - return df - - -def build_swiss() -> pd.DataFrame: - """ - Return a pd.DataFrame of Swiss energy data in TWh/a. - - Returns - ------- - pd.DataFrame - Swiss energy data in TWh/a. - - Notes - ----- - - Reads Swiss energy data from `data/switzerland-new_format-all_years.csv`. - - Reshapes and renames data. - - Converts energy units from PJ/a to TWh/a. - """ - fn = snakemake.input.swiss - - df = pd.read_csv(fn, index_col=[0, 1]) - - df.columns = df.columns.astype(int) - - df.columns.name = "year" - - df = df.stack().unstack("item") - - df.columns.name = None - - # convert PJ/a to TWh/a - df /= 3.6 - - return df - - def idees_per_country(ct: str, base_dir: str) -> pd.DataFrame: """ Calculate energy totals per country using JRC-IDEES data. @@ -310,9 +144,18 @@ def idees_per_country(ct: str, base_dir: str) -> pd.DataFrame: """ ct_idees = idees_rename.get(ct, ct) - fn_residential = f"{base_dir}/{ct_idees}/JRC-IDEES-2021_Residential_{ct_idees}.xlsx" - fn_tertiary = f"{base_dir}/{ct_idees}/JRC-IDEES-2021_Tertiary_{ct_idees}.xlsx" - fn_transport = f"{base_dir}/{ct_idees}/JRC-IDEES-2021_Transport_{ct_idees}.xlsx" + + root = Path(base_dir, ct_idees) + years = ("2023", "2021") + + fn_residential, fn_tertiary, fn_transport = [ + next( + p + for y in years + if (p := root / f"JRC-IDEES-{y}_{s}_{ct_idees}.xlsx").exists() + ) + for s in ("Residential", "Tertiary", "Transport") + ] ct_totals = {} @@ -484,7 +327,14 @@ def idees_per_country(ct: str, base_dir: str) -> pd.DataFrame: assert df.index[49] == "Battery electric vehicles" ct_totals["electricity light duty road freight"] = df.iloc[49] - row = "Heavy goods vehicles (Diesel oil incl. biofuels)" + row = next( + r + for r in ( + "Heavy goods vehicles (diesel oil incl. biofuels)", + "Heavy goods vehicles (Diesel oil incl. biofuels)", + ) + if r in df.index + ) ct_totals["total heavy duty road freight"] = df.loc[row] assert df.index[61] == "Passenger cars" @@ -521,15 +371,27 @@ def idees_per_country(ct: str, base_dir: str) -> pd.DataFrame: assert df.index[2] == "Domestic" ct_totals["total domestic aviation passenger"] = df.iloc[2] - assert df.index[6] == "International - Intra-EEAwUK" - assert df.index[7] == "International - Extra-EEAwUK" + assert df.index[6] in ( + "International - Intra-EEAwCHUK", + "International - Intra-EEAwUK", + ) + assert df.index[7] in ( + "International - Extra-EEAwCHUK", + "International - Extra-EEAwUK", + ) ct_totals["total international aviation passenger"] = df.iloc[[6, 7]].sum() assert df.index[9] == "Domestic" - assert df.index[10] == "International - Intra-EEAwUK" + assert df.index[10] in ( + "International - Intra-EEAwCHUK", + "International - Intra-EEAwUK", + ) ct_totals["total domestic aviation freight"] = df.iloc[[9, 10]].sum() - assert df.index[11] == "International - Extra-EEAwUK" + assert df.index[11] in ( + "International - Extra-EEAwCHUK", + "International - Extra-EEAwUK", + ) ct_totals["total international aviation freight"] = df.iloc[11] ct_totals["total domestic aviation"] = ( @@ -598,7 +460,7 @@ def build_idees(countries: list[str]) -> pd.DataFrame: ) # clean up dataframe - years = np.arange(2000, 2022) + years = np.arange(2000, 2024) totals = totals[totals.index.get_level_values(1).isin(years)] # efficiency kgoe/100km -> ktoe/100km so that after conversion TWh/100km @@ -679,9 +541,8 @@ def build_energy_totals( - `Norway heating data `_ """ - eurostat_fuels = {"electricity": "Electricity", "total": "Total all products"} - eurostat_countries = eurostat.index.unique(0) - eurostat_years = eurostat.index.unique(1) + eurostat_countries = eurostat.country.unique() + eurostat_years = eurostat.year.unique() new_index = pd.MultiIndex.from_product( [countries, eurostat_years], names=["country", "year"] @@ -697,8 +558,11 @@ def build_energy_totals( # add international navigation - slicer = idx[in_eurostat, :, :, "Bunkers", :] - fill_values = eurostat.loc[slicer, "Total all products"].groupby(level=[0, 1]).sum() + fill_values = ( + eurostat.query("nrg_bal == 'INTMARB' and siec == 'TOTAL'") + .groupby(["country", "year"]) + .value.sum(min_count=1) + ) # fill missing years for some countries by mean over the other years fill_values = fill_missing_years(fill_values) df.loc[in_eurostat, "total international navigation"] = fill_values @@ -719,10 +583,11 @@ def build_energy_totals( y = to_fill.get_level_values("year") # take total final energy consumption from Eurostat - eurostat_sector = "Agriculture & forestry" - slicer = idx[c, y, :, :, eurostat_sector] - - fill_values = eurostat.loc[slicer]["Total all products"].groupby(level=[0, 1]).sum() + fill_values = ( + eurostat.query("nrg_bal == 'FC_OTH_AF_E' and siec == 'TOTAL'") + .groupby(["country", "year"]) + .value.sum(min_count=1) + ) # fill missing years for some countries by mean over the other years fill_values = fill_missing_years(fill_values) df.loc[to_fill, "total agriculture"] = fill_values @@ -746,18 +611,24 @@ def build_energy_totals( df["total residential"].isna() & df.index.get_level_values("country").isin(eurostat_countries) ] - c = to_fill.get_level_values("country") - y = to_fill.get_level_values("year") - - for sector in ["residential", "services", "road", "rail"]: - eurostat_sector = sector.capitalize() - + c = to_fill.get_level_values("country") # noqa: F841 + y = to_fill.get_level_values("year") # noqa: F841 + + for sector, s in [ + ("residential", "FC_OTH_HH_E"), + ("services", "FC_OTH_CP_E"), + ("road", "FC_TRA_ROAD_E"), + ("rail", "FC_TRA_RAIL_E"), + ]: # fuel use - for fuel in ["electricity", "total"]: - slicer = idx[c, y, :, :, eurostat_sector] + for fuel, f in [("electricity", "E7000"), ("total", "TOTAL")]: fill_values = ( - eurostat.loc[slicer, eurostat_fuels[fuel]].groupby(level=[0, 1]).sum() + eurostat.query( + "nrg_bal == @s and siec == @f and country in @c and year in @y" + ) + .groupby(["country", "year"]) + .value.sum(min_count=1) ) # fill missing years for some countries by mean over the other years fill_values = fill_missing_years(fill_values) @@ -834,22 +705,31 @@ def build_energy_totals( # Missing aviation - slicer = idx[c, y, :, :, "Domestic aviation"] - fill_values = eurostat.loc[slicer, "Total all products"].groupby(level=[0, 1]).sum() + fill_values = ( + eurostat.query("nrg_bal == 'FC_TRA_DAVI_E' and siec == 'TOTAL'") + .groupby(["country", "year"]) + .value.sum(min_count=1) + ) # fill missing years for some countries by mean over the other years fill_values = fill_missing_years(fill_values) df.loc[to_fill, "total domestic aviation"] = fill_values - slicer = idx[c, y, :, :, "International aviation"] - fill_values = eurostat.loc[slicer, "Total all products"].groupby(level=[0, 1]).sum() + fill_values = ( + eurostat.query("nrg_bal == 'INTAVI' and siec == 'TOTAL'") + .groupby(["country", "year"]) + .value.sum(min_count=1) + ) # fill missing years for some countries by mean over the other years fill_values = fill_missing_years(fill_values) df.loc[to_fill, "total international aviation"] = fill_values # missing domestic navigation - slicer = idx[c, y, :, :, "Domestic Navigation"] - fill_values = eurostat.loc[slicer, "Total all products"].groupby(level=[0, 1]).sum() + fill_values = ( + eurostat.query("nrg_bal == 'FC_TRA_DNAVI_E' and siec == 'TOTAL'") + .groupby(["country", "year"]) + .value.sum(min_count=1) + ) # fill missing years for some countries by mean over the other years fill_values = fill_missing_years(fill_values) df.loc[to_fill, "total domestic navigation"] = fill_values @@ -904,8 +784,8 @@ def build_energy_totals( if "BA" in df.index: # fill missing data for BA (services and road energy data) # proportional to RS with ratio of total residential demand - mean_BA = df.loc["BA"].loc[2014:2021, "total residential"].mean() - mean_RS = df.loc["RS"].loc[2014:2021, "total residential"].mean() + mean_BA = df.loc["BA"].loc[2014:2023, "total residential"].mean() + mean_RS = df.loc["RS"].loc[2014:2023, "total residential"].mean() ratio = mean_BA / mean_RS df.loc["BA"] = ( df.loc["BA"].replace(0.0, np.nan).infer_objects(copy=False).values @@ -1092,18 +972,19 @@ def build_eurostat_co2(eurostat: pd.DataFrame, year: int = 1990) -> pd.Series: - `EIA Electricity Annual `_ """ - eurostat_year = eurostat.xs(year, level="year") - - specific_emissions = pd.Series(index=eurostat.columns, dtype=float) - - # emissions in tCO2_equiv per MWh_th - specific_emissions["Solid fossil fuels"] = 0.36 # Approximates coal - specific_emissions["Oil and petroleum products"] = ( - 0.285 # Average of distillate and residue + emissions = pd.Series( + { + "C0000X0350-0370": 0.36, # solid fossil fuels + "O4000XBIO": 0.285, # oil and petroleum products + "G3000": 0.2, # natural gas + } + ) + return ( + eurostat.query("year == @year and siec in @emissions.index") + .assign(value=lambda df: df["value"] * df["siec"].map(emissions)) + .groupby(["country", "nrg_bal"])["value"] + .sum(min_count=1) ) - specific_emissions["Natural gas"] = 0.2 # For natural gas - - return eurostat_year.multiply(specific_emissions).sum(axis=1) def build_co2_totals( @@ -1137,24 +1018,23 @@ def build_co2_totals( ["BA", "RS", "XK", "AL", "ME", "MK", "UA", "MD"] ): mappings = { - "electricity": (ct, "+", "Electricity & heat generation", np.nan), - "residential non-elec": (ct, "+", "+", "Residential"), - "services non-elec": (ct, "+", "+", "Services"), - "road non-elec": (ct, "+", "+", "Road"), - "rail non-elec": (ct, "+", "+", "Rail"), - "domestic navigation": (ct, "+", "+", "Domestic Navigation"), - "international navigation": (ct, "-", "Bunkers"), - "domestic aviation": (ct, "+", "+", "Domestic aviation"), - "international aviation": (ct, "-", "International aviation"), + "electricity": "TI_EHG_E", + "residential non-elec": "FC_OTH_HH_E", + "services non-elec": "FC_OTH_CP_E", + "road non-elec": "FC_TRA_ROAD_E", + "rail non-elec": "FC_TRA_RAIL_E", + "domestic navigation": "FC_TRA_DNAVI_E", + "international navigation": "INTMARB", + "domestic aviation": "FC_TRA_DAVI_E", + "international aviation": "INTAVI", # does not include industrial process emissions or fuel processing/refining - "industrial non-elec": (ct, "+", "Industry sector"), + "industrial non-elec": "FC_IND_E", # does not include non-energy emissions - "agriculture": (eurostat_co2.index.get_level_values(0) == ct) - & eurostat_co2.index.isin(["Agriculture & forestry", "Fishing"], level=3), + "agriculture": ["FC_OTH_AF_E", "FC_OTH_FISH_E"], } for i, mi in mappings.items(): - co2.at[ct, i] = eurostat_co2.loc[mi].sum() + co2.at[ct, i] = eurostat_co2.loc[ct, mi].sum() return co2 @@ -1189,7 +1069,7 @@ def build_transport_data( ---------- - Swiss transport data: `BFS `_ """ - years = np.arange(2000, 2022) + years = np.arange(2000, 2024) # first collect number of cars transport_data = pd.DataFrame(idees["passenger cars"]) @@ -1261,205 +1141,6 @@ def build_transport_data( return transport_data -def rescale_idees_from_eurostat( - idees_countries: list[str], energy: pd.DataFrame, eurostat: pd.DataFrame -) -> pd.DataFrame: - """ - Takes JRC IDEES data from 2021 and rescales it by the ratio of the Eurostat - data and the 2021 Eurostat data. - Missing data: ['passenger car efficiency', 'passenger cars'] - - Parameters - ---------- - idees_countries : list[str] - List of IDEES country codes. - energy : pd.DataFrame - DataFrame with JRC IDEES data. - eurostat : pd.DataFrame - DataFrame with Eurostat data. - - Returns - ------- - pd.DataFrame - DataFrame with rescaled IDEES data. - - Notes - ----- - - The function first reads in the Eurostat data for 2015 and calculates the ratio of that data with other Eurostat data. - - This ratio is mapped to the IDEES data. - - References - ---------- - - JRC IDEES data: `JRC IDEES `_ - - Eurostat data: `Eurostat `_ - """ - - main_cols = ["Total all products", "Electricity"] - # read in the eurostat data for 2015 - eurostat_2021 = eurostat.xs(2021, level="year")[main_cols] - # calculate the ratio of the two data sets - ratio = eurostat[main_cols] / eurostat_2021 - ratio = ratio.droplevel([2, 5]) - cols_rename = {"Total all products": "total", "Electricity": "ele"} - index_rename = {v: k for k, v in idees_rename.items()} - ratio.rename(columns=cols_rename, index=index_rename, inplace=True) - - mappings = { - "Residential": { - "total": [ - "total residential space", - "total residential water", - "total residential cooking", - "total residential", - "distributed heat residential", - "thermal uses residential", - ], - "elec": [ - "electricity residential space", - "electricity residential water", - "electricity residential cooking", - "electricity residential", - ], - }, - "Services": { - "total": [ - "total services space", - "total services water", - "total services cooking", - "total services", - "distributed heat services", - "thermal uses services", - ], - "elec": [ - "electricity services space", - "electricity services water", - "electricity services cooking", - "electricity services", - ], - }, - "Agriculture & forestry": { - "total": [ - "total agriculture heat", - "total agriculture machinery", - "total agriculture", - ], - "elec": [ - "total agriculture electricity", - ], - }, - "Road": { - "total": [ - "total road", - "total passenger cars", - "total other road passenger", - "total light duty road freight", - "total heavy duty road freight", - ], - "elec": [ - "electricity road", - "electricity passenger cars", - "electricity other road passenger", - "electricity light duty road freight", - ], - }, - "Rail": { - "total": [ - "total rail", - "total rail passenger", - "total rail freight", - ], - "elec": [ - "electricity rail", - "electricity rail passenger", - "electricity rail freight", - ], - }, - } - - avia_inter = [ - "total aviation passenger", - "total aviation freight", - "total international aviation passenger", - "total international aviation freight", - "total international aviation", - ] - avia_domestic = [ - "total domestic aviation passenger", - "total domestic aviation freight", - "total domestic aviation", - ] - navigation = [ - "total domestic navigation", - ] - # international navigation is already read in from the eurostat data directly - - for country in idees_countries: - filling_years = [(2015, slice(2016, 2021)), (2000, slice(1990, 1999))] - - for source_year, target_years in filling_years: - slicer_source = idx[country, source_year, :, :] - slicer_target = idx[country, target_years, :, :] - - for sector, mapping in mappings.items(): - sector_ratio = ratio.loc[ - (country, slice(None), slice(None), sector) - ].droplevel("lvl2") - - energy.loc[slicer_target, mapping["total"]] = cartesian( - sector_ratio.loc[target_years, "total"], - energy.loc[slicer_source, mapping["total"]].squeeze(axis=0), - ).values - energy.loc[slicer_target, mapping["elec"]] = cartesian( - sector_ratio.loc[target_years, "ele"], - energy.loc[slicer_source, mapping["elec"]].squeeze(axis=0), - ).values - - level_drops = ["country", "lvl2", "lvl3"] - - slicer = idx[country, :, :, "Domestic aviation"] - avi_d = ratio.loc[slicer, "total"].droplevel(level_drops) - - slicer = idx[country, :, :, "International aviation"] - avi_i = ratio.loc[slicer, "total"].droplevel(level_drops) - - slicer = idx[country, :, :, "Domestic Navigation"] - nav = ratio.loc[slicer, "total"].droplevel(level_drops) - - energy.loc[slicer_target, avia_inter] = cartesian( - avi_i.loc[target_years], - energy.loc[slicer_source, avia_inter].squeeze(axis=0), - ).values - - energy.loc[slicer_target, avia_domestic] = cartesian( - avi_d.loc[target_years], - energy.loc[slicer_source, avia_domestic].squeeze(axis=0), - ).values - - energy.loc[slicer_target, navigation] = cartesian( - nav.loc[target_years], - energy.loc[slicer_source, navigation].squeeze(axis=0), - ).values - - # set the total of agriculture/road to the sum of all agriculture/road categories (corresponding to the IDEES data) - rows = idx[country, :] - cols = [ - "total agriculture electricity", - "total agriculture heat", - "total agriculture machinery", - ] - energy.loc[rows, "total agriculture"] = energy.loc[rows, cols].sum(axis=1) - - cols = [ - "total passenger cars", - "total other road passenger", - "total light duty road freight", - "total heavy duty road freight", - ] - energy.loc[rows, "total road"] = energy.loc[rows, cols].sum(axis=1) - - return energy - - def update_residential_from_eurostat(energy: pd.DataFrame) -> pd.DataFrame: """ Updates energy balances for residential from disaggregated data from @@ -1538,9 +1219,10 @@ def build_transformation_output_coke(eurostat, fn): The resulting transformation output data for coke ovens is saved as a CSV file at the path specified in fn. """ - slicer = pd.IndexSlice[:, :, :, "Coke ovens", "Other sources", :] - df = eurostat.loc[slicer, :].droplevel(level=[2, 3, 4, 5]) - df.to_csv(fn) + + eurostat.query("nrg_bal == 'TO_CO'").set_index(["country", "year", "siec"])[ + "value" + ].unstack("siec").to_csv(fn) def build_heating_efficiencies( @@ -1611,19 +1293,14 @@ def build_heating_efficiencies( countries = snakemake.params.countries idees_countries = pd.Index(countries).intersection(eu27) - input_eurostat = snakemake.input.eurostat - eurostat = build_eurostat( - input_eurostat, - countries, - nprocesses=snakemake.threads, - disable_progressbar=snakemake.config["run"].get("disable_progressbar", False), - ) + eurostat = pd.read_csv(snakemake.input.eurostat) build_transformation_output_coke( eurostat, snakemake.output.transformation_output_coke ) - swiss = build_swiss() + swiss = pd.read_csv(snakemake.input.swiss, index_col=[0, 1]) + idees = build_idees(idees_countries) energy = build_energy_totals(countries, eurostat, swiss, idees) diff --git a/scripts/build_eurostat_balances.py b/scripts/build_eurostat_balances.py new file mode 100644 index 0000000000..dac63dce7d --- /dev/null +++ b/scripts/build_eurostat_balances.py @@ -0,0 +1,85 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT +""" +Preprocess energy balances from Eurostat. +""" + +import logging + +import pandas as pd + +from scripts._helpers import configure_logging, set_scenario_config + +logger = logging.getLogger(__name__) + + +def build_eurostat( + input_eurostat: str, +) -> pd.DataFrame: + """ + Return long-format energy balances for all countries in TWh/a. + + Parameters + ---------- + input_eurostat : str + Path to the Eurostat database. + + Returns + ------- + pd.DataFrame + Long-format DataFrame containing energy data for all countries in TWh/a. + """ + + # Python engine to allow multiple delimiters, but slower + raw = pd.read_csv( + input_eurostat, + sep=",|\t| [^ ]?\t", + engine="python", + na_values=[":", ": m", 0.0], + ).rename(columns={"geo\\TIME_PERIOD": "country"}) + + df = raw.melt( + id_vars=["freq", "nrg_bal", "siec", "unit", "country"], + var_name="year", + value_name="value", + ).query("unit == 'GWH'") + + # Clean up formatting + df["year"] = df["year"].astype(int) + df.drop(["freq", "unit"], axis=1, inplace=True) + + # For total and fossil energy, fill in missing values with + # closest non-missing value in year index + for country in df.country.unique(): + mask = ( + (df["country"] == country) + & (df["nrg_bal"] == "FC_TRA_DAVI_E") + & (df["siec"].isin(["TOTAL", "FE"])) + ) + + df.loc[mask, "value"] = ( + df[mask].groupby("siec")["value"].transform(lambda x: x.ffill().bfill()) + ) + + # Follow JRC-IDEES country code convention + df["country"] = df["country"].replace({"UK": "GB", "EL": "GR"}) + + # Convert from GWh to TWh + df["value"] = df["value"] / 1000 + + return df + + +if __name__ == "__main__": + if "snakemake" not in globals(): + from scripts._helpers import mock_snakemake + + snakemake = mock_snakemake("build_eurostat_balances") + + configure_logging(snakemake) + set_scenario_config(snakemake) + + eurostat = build_eurostat(snakemake.input.tsv_gz) + + eurostat.to_csv(snakemake.output.csv, index=False) diff --git a/scripts/build_heat_source_utilisation_profiles.py b/scripts/build_heat_source_utilisation_profiles.py index 4d18185fcf..70c960c7a1 100644 --- a/scripts/build_heat_source_utilisation_profiles.py +++ b/scripts/build_heat_source_utilisation_profiles.py @@ -2,27 +2,25 @@ # # SPDX-License-Identifier: MIT """ -Build heat source utilisation profiles for district heating networks. +Build heat source boosting ratio profiles for district heating networks. -This script calculates when and how much heat from various sources (geothermal, -PTES, river water, etc.) can be used, based on the temperature relationship -between the heat source and the district heating network. +This script calculates the boosting ratio (b) for each heat source: how +much heat pump output is needed per unit of source heat to reach the forward +temperature of the district heating network. -Two utilisation modes are calculated: +**Boosting ratio profile**: For each heat source and timestep, b is: -1. **Direct utilisation**: When the source temperature meets or exceeds the - forward temperature (T_source ≥ T_forward), the heat source can directly - supply the district heating network. Profile value is 1.0 (full utilisation) - or 0.0 (not possible). +- 0 when T_source ≥ T_forward (direct use, no HP boost needed) +- 1 when T_source < T_return (source cannot preheat return flow) +- (T_forward − T_source) / (T_source − T_return) otherwise, clipped to [0, 1] -2. **Preheater utilisation**: When the source temperature is between the return - and forward temperatures (T_return < T_source < T_forward), the heat source - can preheat the return flow before a heat pump lifts it to forward temperature. - The profile value represents that share of the heat above the return temperature which is utilised to increase the heat pump's sink inflow temperature. The return flow serves as the source inlet. +The boosting ratio is consumed by ``prepare_sector_network.py`` to set the +efficiencies of the heat source utilisation link (forward, p ≥ 0): -These profiles are used by ``prepare_sector_network.py`` to configure heat -utilisation links that model cascading temperature use: direct supply when -possible, preheating when beneficial, with heat pumps handling the final lift. +- bus0 (source) → bus1 (DH heat) at efficiency (1 − b) +- bus0 (source) → bus2 (HP input bus) at efficiency2 = b + +Energy is conserved: (1 − b) + b = 1. Relevant Settings ----------------- @@ -34,7 +32,6 @@ - air - geothermal district_heating: - heat_source_cooling: 6 # K geothermal: constant_temperature_celsius: 65 @@ -48,12 +45,9 @@ Outputs ------- -- ``resources//heat_source_direct_utilisation_profiles_base_s_{clusters}_{planning_horizons}.nc`` - Direct utilisation profiles indexed by (time, name, heat_source). - Values: 1.0 when T_source ≥ T_forward, 0.0 otherwise. -- ``resources//heat_source_preheater_utilisation_profiles_base_s_{clusters}_{planning_horizons}.nc`` - Preheater utilisation profiles indexed by (time, name, heat_source). - Values: heat extraction efficiency when T_return < T_source < T_forward, 0.0 otherwise. +- ``resources//heat_source_boosting_profiles_base_s_{clusters}_{planning_horizons}.nc`` + Boosting ratio profiles indexed by (time, name, heat_source). + Values in [0, 1]: 0 = direct use, 1 = full HP boosting required. """ import logging @@ -61,7 +55,7 @@ import xarray as xr from scripts._helpers import configure_logging, set_scenario_config -from scripts.definitions.heat_source import HeatSource +from scripts.definitions.heat_source import HeatSource, HeatSourceType logger = logging.getLogger(__name__) @@ -96,6 +90,13 @@ def get_source_temperature( heat_source = HeatSource(heat_source_name) if heat_source.temperature_from_config: return snakemake_params["heat_source_temperatures"][heat_source_name] + elif heat_source.source_type == HeatSourceType.STORAGE: + # PTES layer temperatures are constants from the ptes_operations dataset + if heat_source_name.startswith("ptes layer"): + layer_idx = int(heat_source_name.split()[-1]) + return float(ptes_ds["layer_temperatures"].sel(layer=layer_idx).item()) + else: + return float(ptes_ds.attrs["top_temperature"]) else: if f"temp_{heat_source_name}" not in snakemake_input.keys(): raise ValueError( @@ -104,137 +105,60 @@ def get_source_temperature( return xr.open_dataarray(snakemake_input[f"temp_{heat_source_name}"]) -def get_direct_utilisation_profile( - source_temperature: float | xr.DataArray, forward_temperature: xr.DataArray -) -> xr.DataArray | float: - """ - Calculate when a heat source can directly supply district heating. - - Direct utilisation is possible when the source temperature meets or exceeds - the required forward temperature of the district heating network. - - Parameters - ---------- - source_temperature : float | xr.DataArray - Heat source temperature in °C. If float, applies uniformly. - If DataArray, indexed by (time, name). - forward_temperature : xr.DataArray - District heating forward temperature profiles in °C, - indexed by (time, name). - - Returns - ------- - xr.DataArray - Binary profile: 1.0 where T_source ≥ T_forward (direct use possible), - 0.0 otherwise. - """ - return xr.where(source_temperature >= forward_temperature, 1.0, 0.0) - - -def get_preheater_utilisation_profile( +def get_boosting_profile( source_temperature: float | xr.DataArray, forward_temperature: xr.DataArray, return_temperature: xr.DataArray, - heat_source_cooling: float, -) -> xr.DataArray | float: +) -> xr.DataArray: """ - Calculate preheater utilisation efficiency for intermediate-temperature sources. + Calculate the boosting ratio: HP heat needed per unit of source heat. - When a heat source temperature is between the return and forward temperatures, - it can preheat the return flow before a heat pump provides the final temperature - lift. This improves overall efficiency by reducing the heat pump's lift. + The boosting ratio b represents the fraction of source heat that must be + routed through the heat pump (rather than used directly) to reach the + district heating forward temperature: - The efficiency represents the fraction of heat extracted from the source that - goes into preheating (vs. the additional cooling through the heat pump): + b = 0 if T_source ≥ T_forward + b = 1 if T_source < T_return + b = (T_forward − T_source) / (T_source − T_return) otherwise - efficiency = (T_source - T_return) / (T_source - T_return + heat_source_cooling) + The result is clipped to [0, 1]. Parameters ---------- source_temperature : float | xr.DataArray - Heat source temperature in °C. If float, applies uniformly. - If DataArray, indexed by (time, name). + Heat source temperature in °C. forward_temperature : xr.DataArray - District heating forward temperature profiles in °C, - indexed by (time, name). + District heating forward temperature in °C, indexed by (time, name). return_temperature : xr.DataArray - District heating return temperature profiles in °C, - indexed by (time, name). - heat_source_cooling : float | xr.DataArray - Additional temperature drop (K) when extracting heat from the source - through the heat pump, beyond the preheating contribution. + District heating return temperature in °C, indexed by (time, name). Returns ------- xr.DataArray - Preheater efficiency profile: value in (0, 1) where T_return < T_source < T_forward, - 0.0 otherwise (source too cold or hot enough for direct use). + Boosting ratio profile in [0, 1]: 0 = direct use, 1 = full HP boosting. + Shape matches forward_temperature. """ return xr.where( - (source_temperature < forward_temperature) - * (source_temperature > return_temperature), - (source_temperature - return_temperature) - / (source_temperature - return_temperature + heat_source_cooling), + source_temperature >= forward_temperature, + # no boosting needed if source_temp > forward_temp 0.0, + xr.where( + source_temperature < return_temperature, + # source does not pre-heat return flow if below return temp + 1, + # if source is between return and forward temp, it pre-heats return flow (part of heat is utilised directly, part is boosted by HP) + (forward_temperature - source_temperature) + / (source_temperature - return_temperature), + ).clip(min=0, max=1), ) -def get_heat_pump_cooling( - heat_source_name: str, - default_heat_source_cooling: float, - snakemake_input: dict, - return_temperature: xr.DataArray = None, -) -> float | xr.DataArray: - """ - Get the additional heat source cooling (temperature drop) through the heat pump for a heat source. - - For PTES, this equals the temperature difference between - return flow and bottom layers (return_temperature - bottom_temperature), which can - be time-varying. For other sources, uses the default constant value. - - Parameters - ---------- - heat_source_name : str - Name of the heat source (e.g., 'ptes', 'geothermal', 'air'). - default_heat_source_cooling : float - Default heat source cooling in Kelvin, from config. - snakemake_input : dict - Snakemake input files, may contain PTES temperature profiles. - return_temperature : xr.DataArray, optional - District heating return temperature profiles in °C. Required for PTES. - - Returns - ------- - float | xr.DataArray - Heat source cooling in Kelvin. Returns a float for most sources, - or a DataArray for PTES when temperatures vary with time. - - Raises - ------ - ValueError - If heat source is PTES but bottom temperature profile is not provided. - """ - if heat_source_name == "ptes": - if "temp_ptes_bottom" not in snakemake_input.keys(): - raise ValueError( - "PTES heat source requires bottom temperature profile " - "(temp_ptes_bottom) to calculate heat source cooling." - ) - if return_temperature is None: - raise ValueError( - "PTES heat source requires return_temperature to calculate heat pump cooling." - ) - ptes_bottom_temperature = xr.open_dataarray(snakemake_input["temp_ptes_bottom"]) - return return_temperature - ptes_bottom_temperature - return default_heat_source_cooling - - if __name__ == "__main__": if "snakemake" not in globals(): from scripts._helpers import mock_snakemake snakemake = mock_snakemake( - "build_cop_profiles", + "build_heat_source_utilisation_profiles", clusters=48, ) configure_logging(snakemake) @@ -243,12 +167,21 @@ def get_heat_pump_cooling( heat_sources: list[str] = snakemake.params.heat_sources ptes_enable: bool = snakemake.params.ptes_enable - # Validate PTES configuration - if ptes_enable and "ptes" not in heat_sources: - raise ValueError( - "PTES is enabled (district_heating.ptes.enable=true) but 'ptes' " - "is not in heat_sources.urban_central. PTES requires being listed in heat_sources to create the necessary buses and links for heat discharge to the 'urban central heat' bus." - ) + # PTES uses dedicated routing in prepare_sector_network and no longer + # consumes the generic boosting profile pathway. + filtered_heat_sources = [ + hs + for hs in heat_sources + if not (ptes_enable and HeatSource(hs).source_type == HeatSourceType.STORAGE) + ] + + # Load PTES operations dataset if enabled + if ptes_enable: + ptes_ds = xr.open_dataset(snakemake.input.ptes_operations) + num_ptes_layers = int(ptes_ds.attrs["num_layers"]) + else: + ptes_ds = None + num_ptes_layers = 0 central_heating_forward_temperature: xr.DataArray = xr.open_dataarray( snakemake.input.central_heating_forward_temperature_profiles @@ -257,39 +190,27 @@ def get_heat_pump_cooling( snakemake.input.central_heating_return_temperature_profiles ) - xr.concat( - [ - get_direct_utilisation_profile( - source_temperature=get_source_temperature( - snakemake_params=snakemake.params, - snakemake_input=snakemake.input, - heat_source_name=heat_source_key, - ), - forward_temperature=central_heating_forward_temperature, - ).assign_coords(heat_source=heat_source_key) - for heat_source_key in heat_sources - ], - dim="heat_source", - ).to_netcdf(snakemake.output.heat_source_direct_utilisation_profiles) - - xr.concat( - [ - get_preheater_utilisation_profile( - source_temperature=get_source_temperature( - heat_source_name=heat_source_key, - snakemake_params=snakemake.params, - snakemake_input=snakemake.input, - ), - forward_temperature=central_heating_forward_temperature, - return_temperature=central_heating_return_temperature, - heat_source_cooling=get_heat_pump_cooling( - heat_source_name=heat_source_key, - default_heat_source_cooling=snakemake.params.heat_source_cooling, - snakemake_input=snakemake.input, + if filtered_heat_sources: + boosting_profiles = xr.concat( + [ + get_boosting_profile( + source_temperature=get_source_temperature( + snakemake_params=snakemake.params, + snakemake_input=snakemake.input, + heat_source_name=heat_source_key, + ), + forward_temperature=central_heating_forward_temperature, return_temperature=central_heating_return_temperature, - ), - ).assign_coords(heat_source=heat_source_key) - for heat_source_key in heat_sources - ], - dim="heat_source", - ).to_netcdf(snakemake.output.heat_source_preheater_utilisation_profiles) + ).assign_coords(heat_source=heat_source_key) + for heat_source_key in filtered_heat_sources + ], + dim="heat_source", + ) + else: + boosting_profiles = xr.DataArray( + [], + coords={"heat_source": []}, + dims=["heat_source"], + ) + + boosting_profiles.to_netcdf(snakemake.output.heat_source_boosting_profiles) diff --git a/scripts/build_hydro_profile.py b/scripts/build_hydro_profile.py index fd360db427..7a4e2d9461 100644 --- a/scripts/build_hydro_profile.py +++ b/scripts/build_hydro_profile.py @@ -198,7 +198,8 @@ def approximate_missing_eia_stats( if norm_year: eia_stats.loc[years_in_time] = eia_stats.loc[norm_year] elif missing_years.any(): - eia_stats.loc[missing_years] = eia_stats.median() + for year in missing_years: + eia_stats.loc[year] = eia_stats.median() inflow = cutout.runoff( shapes=country_shapes, diff --git a/scripts/build_industrial_energy_demand_per_country_today.py b/scripts/build_industrial_energy_demand_per_country_today.py index 7474ea9d26..9896a24d87 100644 --- a/scripts/build_industrial_energy_demand_per_country_today.py +++ b/scripts/build_industrial_energy_demand_per_country_today.py @@ -51,6 +51,7 @@ import logging import multiprocessing as mp from functools import partial +from pathlib import Path import country_converter as coco import pandas as pd @@ -108,6 +109,21 @@ "Electricity": "electricity", } +fuels_eurostat = { + "TOTAL": "all", # Total + "C0000X0350-0370": "solid", # Solid fossil fuels + "P1000": "solid", # Peat and peat products + "S2000": "solid", # Oil shale and oil sands + "O4000XBIO": "liquid", # Oil and petroleum products + "C0350-0370": "gas", # Manufactured gases + "G3000": "gas", # Natural gas + "N900H": "heat", # Nuclear heat + "H8000": "heat", # Heat + "RA000": "biomass", # Renewables and biofuels + "W6100_6220": "waste", # Non-renewable waste + "E7000": "electricity", # Electricity +} + eu27 = cc.EU27as("ISO2").ISO2.tolist() jrc_names = {"GR": "EL", "GB": "UK"} @@ -115,7 +131,13 @@ def industrial_energy_demand_per_country(country, year, jrc_dir, endogenous_ammonia): jrc_country = jrc_names.get(country, country) - fn = f"{jrc_dir}/{jrc_country}/JRC-IDEES-2021_EnergyBalance_{jrc_country}.xlsx" + + root = Path(jrc_dir, jrc_country) + fn = next( + p + for y in ("2023", "2021") + if (p := root / f"JRC-IDEES-{y}_EnergyBalance_{jrc_country}.xlsx").exists() + ) sheets = list(sector_sheets.values()) df_dict = pd.read_excel(fn, sheet_name=sheets, index_col=0) @@ -263,8 +285,13 @@ def add_coke_ovens(demand, fn, year, factor=0.75): """ df = pd.read_csv(fn, index_col=[0, 1]).xs(year, level=1) - df = df.rename(columns={"Total all products": "Total"})[fuels.keys()] - df = df.rename(columns=fuels).T.groupby(level=0).sum().T + df = ( + df[fuels_eurostat.keys()] + .rename(columns=fuels_eurostat) + .T.groupby(level=0) + .sum() + .T + ) df["other"] = df["all"] - df.loc[:, df.columns != "all"].sum(axis=1) df = df.T.reindex_like(demand.xs("Integrated steelworks", axis=1, level=1)).fillna( 0 diff --git a/scripts/build_industrial_production_per_country.py b/scripts/build_industrial_production_per_country.py index 8282ca3a67..77f5482373 100644 --- a/scripts/build_industrial_production_per_country.py +++ b/scripts/build_industrial_production_per_country.py @@ -44,6 +44,7 @@ import logging import multiprocessing as mp from functools import partial +from pathlib import Path import country_converter as coco import numpy as np @@ -134,17 +135,17 @@ } eb_sectors = { - "Iron & steel": "Iron and steel", - "Chemical & petrochemical": "Chemical industry", - "Non-ferrous metals": "Non-metallic mineral products", - "Paper, pulp & printing": "Pulp, paper and printing", - "Food, beverages & tobacco": "Food, beverages and tobacco", - "Non-metallic minerals": "Non Ferrous Metals", - "Transport equipment": "Transport equipment", - "Machinery": "Machinery equipment", - "Textile & leather": "Textiles and leather", - "Wood & wood products": "Wood and wood products", - "Not elsewhere specified (industry)": "Other industrial sectors", + "FC_IND_IS_E": "Iron and steel", + "FC_IND_CPC_E": "Chemical industry", + "FC_IND_NFM_E": "Non Ferrous Metals", + "FC_IND_NMM_E": "Non-metallic mineral products", + "FC_IND_TE_E": "Transport equipment", + "FC_IND_MAC_E": "Machinery equipment", + "FC_IND_FBT_E": "Food, beverages and tobacco", + "FC_IND_PPP_E": "Pulp, paper and printing", + "FC_IND_WP_E": "Wood and wood products", + "FC_IND_TL_E": "Textiles and leather", + "FC_IND_NSP_E": "Other industrial sectors", } @@ -170,29 +171,33 @@ def find_physical_output(df): return slice(start, end) -def get_energy_ratio(country, eurostat_dir, jrc_dir, year, snakemake): +def get_energy_ratio(country, eurostat, jrc_dir, year, snakemake): if country == "CH": # data ranges between 2014-2023 e_country = pd.read_csv( snakemake.input.ch_industrial_production, index_col=0 ).dropna() e_country = e_country.rename(index=ch_mapping).groupby(level=0).sum() - e_country = e_country[str(min(2019, year))] + e_country = e_country[str(year)] e_country *= tj_to_ktoe else: - ct_eurostat = country.replace("GB", "UK") # estimate physical output, energy consumption in the sector and country - fn = f"{eurostat_dir}/{ct_eurostat}-Energy-balance-sheets-April-2023-edition.xlsb" - df = pd.read_excel( - fn, - sheet_name=str(min(2019, year)), - index_col=2, - header=0, - skiprows=4, + e_country = ( + eurostat.query( + "year == @year and country == @country and " + "siec == 'TOTAL' and nrg_bal in @eb_sectors.keys()" + ) + .set_index("nrg_bal") + .value.rename(eb_sectors) + .div(ktoe_to_twh) ) - e_country = df.loc[eb_sectors.keys(), "Total"].rename(eb_sectors) - fn = f"{jrc_dir}/EU27/JRC-IDEES-2021_Industry_EU27.xlsx" + root = Path(jrc_dir, "EU27") + fn = next( + p + for y in ("2023", "2021") + if (p := root / f"JRC-IDEES-{y}_Industry_EU27.xlsx").exists() + ) with mute_print(): df = pd.read_excel(fn, sheet_name="Ind_Summary", index_col=0, header=0).squeeze( @@ -209,10 +214,15 @@ def get_energy_ratio(country, eurostat_dir, jrc_dir, year, snakemake): return pd.Series({k: e_ratio[v] for k, v in sub2sect.items()}) -def industry_production_per_country(country, year, eurostat_dir, jrc_dir, snakemake): +def industry_production_per_country(country, year, eurostat, jrc_dir, snakemake): def get_sector_data(sector, country): jrc_country = jrc_names.get(country, country) - fn = f"{jrc_dir}/{jrc_country}/JRC-IDEES-2021_Industry_{jrc_country}.xlsx" + root = Path(jrc_dir, jrc_country) + fn = next( + p + for y in ("2023", "2021") + if (p := root / f"JRC-IDEES-{y}_Industry_{jrc_country}.xlsx").exists() + ) sheet = sub_sheet_name_dict[sector] with mute_print(): df = pd.read_excel(fn, sheet_name=sheet, index_col=0, header=0).squeeze( @@ -233,7 +243,7 @@ def get_sector_data(sector, country): if country not in eu27: demand *= get_energy_ratio( country, - eurostat_dir, + eurostat, jrc_dir, year, snakemake, @@ -244,14 +254,14 @@ def get_sector_data(sector, country): return demand -def industry_production(countries, year, eurostat_dir, jrc_dir): +def industry_production(countries, year, eurostat, jrc_dir): nprocesses = snakemake.threads disable_progress = snakemake.config["run"].get("disable_progressbar", False) func = partial( industry_production_per_country, year=year, - eurostat_dir=eurostat_dir, + eurostat=eurostat, jrc_dir=jrc_dir, snakemake=snakemake, ) @@ -327,9 +337,10 @@ def separate_basic_chemicals(demand, year): params = snakemake.params.industry jrc_dir = snakemake.input.jrc - eurostat_dir = snakemake.input.eurostat - demand = industry_production(countries, year, eurostat_dir, jrc_dir) + eurostat = pd.read_csv(snakemake.input.eurostat) + + demand = industry_production(countries, year, eurostat, jrc_dir) separate_basic_chemicals(demand, year) diff --git a/scripts/build_industry_sector_ratios.py b/scripts/build_industry_sector_ratios.py index 7a07ca6b44..9fa24d9483 100644 --- a/scripts/build_industry_sector_ratios.py +++ b/scripts/build_industry_sector_ratios.py @@ -29,6 +29,7 @@ """ import logging +from pathlib import Path import country_converter as coco import pandas as pd @@ -83,9 +84,16 @@ def load_idees_data(sector, country="EU27"): def usecols(x): return isinstance(x, str) or x == year + root = Path(snakemake.input.idees, country) + fn = next( + p + for y in ("2023", "2021") + if (p := root / f"JRC-IDEES-{y}_Industry_{country}.xlsx").exists() + ) + with mute_print(): idees = pd.read_excel( - f"{snakemake.input.idees}/{country}/JRC-IDEES-2021_Industry_{country}.xlsx", + fn, sheet_name=list(sheets.values()), index_col=0, header=0, diff --git a/scripts/build_monthly_prices.py b/scripts/build_monthly_prices.py index 611dcfca03..43df084d6c 100644 --- a/scripts/build_monthly_prices.py +++ b/scripts/build_monthly_prices.py @@ -5,103 +5,77 @@ #!/usr/bin/env python3 # -*- coding: utf-8 -*- """ -This script extracts monthly fuel prices of oil, gas, coal and lignite, as well -as CO2 prices. +This script extracts monthly fuel prices of oil, gas and coal. Description ----------- -The rule :mod:`build_monthly_prices` collects monthly fuel prices and CO2 prices -and translates them from different input sources to pypsa syntax - -Data sources: - [1] Fuel price index. Destatis - https://www.destatis.de/EN/Home/_node.html - [2] average annual fuel price lignite, ENTSO-E - https://2020.entsos-tyndp-scenarios.eu/fuel-commodities-and-carbon-prices/ - [3] CO2 Prices, Emission spot primary auction, EEX - https://www.eex.com/en/market-data/environmental-markets/eua-primary-auction-spot-download - - -Data was accessed at 16.5.2023 +The rule :mod:`build_monthly_prices` collects monthly fuel prices +and translates them from different input sources to pypsa syntax. """ import logging import pandas as pd +from pydeflate import imf_gdp_deflate, set_pydeflate_path from scripts._helpers import configure_logging, set_scenario_config -logger = logging.getLogger(__name__) +set_pydeflate_path("../data/pydeflate/") +logger = logging.getLogger(__name__) -# keywords in datasheet -keywords = { - "coal": " GP09-051 Hard coal", - "lignite": " GP09-052 Lignite and lignite briquettes", - "oil": " GP09-0610 10 Mineral oil, crude", - "gas": "GP09-062 Natural gas", -} - -# sheet names to pypsa syntax -sheet_name_map = { - "coal": "5.1 Hard coal and lignite", - "lignite": "5.1 Hard coal and lignite", - "oil": "5.2 Mineral oil", - "gas": "5.3.1 Natural gas - indices", -} - - -# import fuel price 2015 in Eur/MWh -# source lignite, price for 2020, scaled by price index, ENTSO-E [3] -price_2020 = ( - pd.Series({"coal": 3.0, "oil": 10.6, "gas": 5.6, "lignite": 1.1}) * 3.6 -) # Eur/MWh - -# manual adjustment of coal price -price_2020["coal"] = 2.4 * 3.6 -price_2020["lignite"] = 1.6 * 3.6 - - -def get_fuel_price(): - price = {} - for carrier, keyword in keywords.items(): - sheet_name = sheet_name_map[carrier] - df = pd.read_excel( - snakemake.input.fuel_price_raw, - sheet_name=sheet_name, - index_col=0, - skiprows=6, - nrows=18, - ) - df = df.dropna(axis=0).iloc[:, :12] - start, end = df.index[0], str(int(df.index[-1][:4]) + 1) - df = df.stack() - df.index = pd.date_range(start=start, end=end, freq="MS", inclusive="left") - scale = price_2020[carrier] / df["2020"].mean() # scale to 2020 price - df = df.mul(scale) - price[carrier] = df - - return pd.concat(price, axis=1) - - -def get_co2_price(): - # emission price - co2_price = pd.read_excel(snakemake.input.co2_price_raw, index_col=1, header=5) - return co2_price["Auction Price €/tCO2"] - +MMBTU_PER_MWH = 3.41214 +BBL_PER_MWH = 0.5883 +METRIC_TON_PER_MWH_COAL = 0.1433 if __name__ == "__main__": if "snakemake" not in globals(): from scripts._helpers import mock_snakemake - snakemake = mock_snakemake("build_monthly_prices") + snakemake = mock_snakemake("build_fossil_fuel_prices") configure_logging(snakemake) set_scenario_config(snakemake) - fuel_price = get_fuel_price() - fuel_price.to_csv(snakemake.output.fuel_price) - - co2_price = get_co2_price() - co2_price.to_csv(snakemake.output.co2_price) + df = pd.read_excel( + snakemake.input.fuel_price_raw, + skiprows=[0, 1, 2, 3, 5], + header=0, + index_col=0, + sheet_name="Monthly Prices", + parse_dates=True, + date_format="%YM%m", + na_values=["…"], + ) + + COLUMNS = { + "Crude oil, Brent": "oil", + "Coal, South African **": "coal", + "Natural gas, Europe": "gas", + } + df = df.rename(columns=COLUMNS)[list(COLUMNS.values())] + + # Convert from nominal to real prices (deflate to base year 2020) + df["year"] = df.index.year + df["iso_code"] = "DEU" + for col in COLUMNS.values(): + df[col] = imf_gdp_deflate( + df, + value_column=col, + source_currency="USD", + target_currency="EUR", + base_year=2020, + )["value"].values + df = df[df.index.year >= 1999] # only available from 1999 onwards + df = df.drop(columns=["year", "iso_code"]) + + df["oil"] *= BBL_PER_MWH + df["gas"] *= MMBTU_PER_MWH + df["coal"] *= METRIC_TON_PER_MWH_COAL + + # rolling mean for smoothing + window = snakemake.params.rolling_window + df = df.rolling(window=window, center=True, min_periods=1).mean() + + df.to_csv(snakemake.output.fuel_price) diff --git a/scripts/build_osm_network.py b/scripts/build_osm_network.py index a41594d890..a4f1523980 100644 --- a/scripts/build_osm_network.py +++ b/scripts/build_osm_network.py @@ -4,6 +4,7 @@ import itertools import logging +import re import string import geopandas as gpd @@ -26,6 +27,7 @@ GEO_CRS = "EPSG:4326" DISTANCE_CRS = "EPSG:3035" BUS_TOL = 500 # meters +COORD_PRECISION = 8 # decimals to round coordinates to, avoiding potential errors in voronoi calculations BUSES_COLUMNS = [ "station_id", "voltage", @@ -130,7 +132,7 @@ def _merge_identical_lines(lines): return lines_all -def _add_line_endings(buses, lines, add=0, name="line-end"): +def _add_line_endings(lines): """ Adds virtual buses based on line endings to the set of buses. @@ -139,17 +141,17 @@ def _add_line_endings(buses, lines, add=0, name="line-end"): Parameters ---------- - - buses (pd.DataFrame): DataFrame containing bus information. - lines (pd.DataFrame): DataFrame containing line information, including 'voltage' and 'geometry' columns. - - add (int, optional): Offset to add to the bus index for generating unique bus IDs. Default is 0. - name (str, optional): Name to assign to the 'contains' column for the virtual buses. Default is "line-end". Returns ------- - pd.DataFrame: DataFrame containing the virtual bus endpoints with columns 'bus_id', 'voltage', 'geometry', and 'contains'. """ + line_data = lines[["voltage", "geometry", "line_id"]] line_geoms = line_data["geometry"].apply(_remove_loops_from_multiline) + endpoints0 = line_data.assign( geometry=get_point(line_geoms.geometry, 0), endpoint=0 ) @@ -157,16 +159,53 @@ def _add_line_endings(buses, lines, add=0, name="line-end"): geometry=get_point(line_geoms.geometry, -1), endpoint=1 ) endpoints = pd.concat([endpoints0, endpoints1], ignore_index=True) - endpoints.drop_duplicates(subset=["geometry", "voltage"], inplace=True) - endpoints.reset_index(drop=True, inplace=True) - # Create deterministic ID from line_id and endpoint - endpoints["bus_id"] = ( - "virtual_" + endpoints["line_id"] + "_" + endpoints["endpoint"].astype(str) + # Clean line_id (remove voltage suffix) + endpoints["line_id"] = endpoints["line_id"].str.split("-").str[0] + endpoints["osm_id"] = endpoints["line_id"].str.extract( + r"((?:way|relation)/\d+)", expand=False + ) + # Create endpoint names: line_id + endpoint number + endpoints["endpoint_name"] = ( + endpoints["line_id"] + ":" + endpoints["endpoint"].astype(str) + ) + + # Create deterministic bus ids and tags + def create_bus_data(group): + endpoint_names = group["endpoint_name"] + + # Extract numeric parts + numeric_parts = endpoint_names.str.extract(r"/(\d+)", expand=False).astype(int) + + # Find all with minimum numeric value + min_numeric = numeric_parts.min() + candidates = endpoint_names[numeric_parts == min_numeric] + + # Among those, sort alphabetically and take first + bus_id = candidates.sort_values().iloc[0] + osm_ids = list(set(group["osm_id"].tolist())) + + return pd.Series( + { + "bus_id": bus_id, + "contains": osm_ids, + } + ) + + # Group by voltage and geometry, and apply create_bus_data to get bus_id and tags + endpoints = ( + endpoints.groupby(["voltage", "geometry"]) + .apply(create_bus_data, include_groups=False) + .reset_index() ) - endpoints.drop(columns=["line_id", "endpoint"], inplace=True) - endpoints["contains"] = name + # Now add voltage prefix, now bus_ids are persistent and unique + endpoints["bus_id"] = ( + "virtual_" + + endpoints["bus_id"] + + "-" + + (endpoints["voltage"] / 1000).astype(int).astype(str) + ) return endpoints[["bus_id", "voltage", "geometry", "contains"]] @@ -271,9 +310,14 @@ def split_overpassing_lines(lines, buses, distance_crs=DISTANCE_CRS, tol=1): # update geometries df_append["geometry"] = new_geometries # update name of the line if there are multiple line segments + original_line_id = str(df_append["line_id"].iloc[0]) + # Split to separate base ID from voltage: "way/123456-220" -> ["way/123456", "220"] + parts = original_line_id.rsplit("-", 1) + base_id = parts[0] # e.g., "way/123456" + voltage = parts[1] if len(parts) > 1 else "" # e.g., "220" + df_append["line_id"] = [ - str(df_append["line_id"].iloc[0]) - + (f"-{letter}" if n_geoms > 1 else "") + f"{base_id}:{letter}-{voltage}" if n_geoms > 1 else original_line_id for letter in string.ascii_lowercase[:n_geoms] ] @@ -532,6 +576,7 @@ def _merge_lines_over_virtual_buses( lines_to_add["bus0"] = None lines_to_add["bus1"] = None lines_to_add["length"] = lines_to_add["geometry"].to_crs(distance_crs).length + lines_to_add["contains"] = lines_to_add["contains_lines"] # Reorder lines_to_add = lines_to_add[lines_merged.columns] @@ -640,32 +685,6 @@ def _create_station_seeds( buses_all_agg["country"] = updated_country_mapping - # Rename rows virtual buses that are not actual substations - buses_to_rename = buses_all_agg.loc[ - ( - ~buses_all_agg.index.str.startswith("way/") - & ~buses_all_agg.index.str.startswith("relation/") - ), - ["country", "poi"], - ] - - buses_to_rename["lat"] = buses_to_rename["poi"].apply(lambda p: p.y) - buses_to_rename["lon"] = buses_to_rename["poi"].apply(lambda p: p.x) - - # Now sort by country, latitude (north to south), and longitude (west to east) - buses_to_rename = buses_to_rename.sort_values( - by=["country", "lat", "lon"], ascending=[True, False, True] - ) - buses_to_rename["bus_id"] = buses_to_rename[ - "country" - ] + buses_to_rename.index.str.replace("virtual", "") - - # Dict to rename virtual buses - dict_rename = buses_to_rename["bus_id"].to_dict() - - # Rename virtual buses in buses_all_agg with dict - buses_all_agg.rename(index=dict_rename, inplace=True) - # extract substring before - from index buses_all_agg["osm_identifier"] = buses_all_agg.index.str.split("-").str[0] buses_all_agg.reset_index(inplace=True) @@ -1176,7 +1195,11 @@ def _add_transformers(buses, geo_crs=GEO_CRS): for g_name, g_value in buses_all.groupby("station_id"): if g_value["voltage"].nunique() > 1: - combinations = list(itertools.combinations(sorted(g_value.index), 2)) + combinations = list( + itertools.combinations( + g_value.sort_values("voltage", ascending=False).index, 2 + ) + ) station_transformers = pd.DataFrame(combinations, columns=["bus0", "bus1"]) station_transformers["voltage_bus0"] = station_transformers["bus0"].map( @@ -1454,6 +1477,47 @@ def _closest_voltage(voltage, voltage_list): return min(voltage_list, key=lambda x: abs(x - voltage)) +def _treat_under_construction( + df, decision, remove_after +): # decision is "keep" or "remove" + """ + Keep or remove elements that are under construction based on the provided boolean flag. + + Parameters + ---------- + df (pandas.DataFrame): The input DataFrame containing the data. + decision (str): A string indicating whether to "keep" or "remove" elements under construction. + remove_after (str): A date-time string in 'YYYY-MM-DD' format. Elements under construction with a date after this will be removed. + + Returns + ------- + pandas.DataFrame: The DataFrame with under construction elements removed if the flag is True. + """ + if decision == "keep": + logger.info("Keeping elements under construction.") + + elif decision == "remove": + logger.info("Removing elements under construction...") + len_before = len(df) + idx_remove = df.index[df["under_construction"]] + df = df.drop(index=idx_remove) + len_after = len(df) + logger.info(f"Removed {len_before - len_after} elements under construction.") + + if remove_after is not None: + logger.info(f"Removing elements with a start date after {remove_after}...") + df["start_date"] = pd.to_datetime(df["start_date"], errors="coerce") + len_before = len(df) + idx_remove = df.index[df["start_date"] > pd.to_datetime(remove_after)] + df = df.drop(index=idx_remove) + len_after = len(df) + logger.info( + f"Removed {len_before - len_after} elements with start date after {remove_after}." + ) + + return df + + def _finalise_network(all_buses, converters, lines, links, transformers): """ Finalises network components and prepares for export. @@ -1470,6 +1534,22 @@ def _finalise_network(all_buses, converters, lines, links, transformers): ------- - tuple: A tuple containing the updated DataFrames for buses, converters, lines, links, and transformers """ + + def _contains_to_tags(x): + if isinstance(x, list): + return ";".join( + set(item.split("-")[0] for item in x if isinstance(item, str)) + ) + elif isinstance(x, str): + return x.split("-")[0] + else: + return "" # handles NaN / float from concat of AC+DC buses + + def _tags_to_osm_ids(tags: str) -> str: + if not isinstance(tags, str) or not tags: + return "" + return ";".join(sorted(set(re.findall(r"(?:way|relation)/\d+", tags)))) + logger.info("Finalising network components and preparing for export.") buses_all = all_buses.copy() converters_all = converters.copy() @@ -1481,7 +1561,8 @@ def _finalise_network(all_buses, converters, lines, links, transformers): logger.info("- buses") buses_all["symbol"] = "Substation" buses_all["under_construction"] = False - buses_all["tags"] = buses_all["bus_id"].str.split("-").str[0] + buses_all["tags"] = buses_all["contains"].apply(_contains_to_tags) + buses_all["tags"] = buses_all["tags"].apply(_tags_to_osm_ids) buses_all["voltage"] = buses_all["voltage"] / 1000 buses_all["x"] = buses_all["geometry"].x buses_all["y"] = buses_all["geometry"].y @@ -1495,7 +1576,8 @@ def _finalise_network(all_buses, converters, lines, links, transformers): lines_all["voltage"] = lines_all["voltage"] / 1000 lines_all["length"] = lines_all["length"].round(2) lines_all["under_construction"] = False - lines_all["tags"] = lines_all["contains_lines"].apply(lambda x: ";".join(x)) + lines_all["tags"] = lines_all["contains_lines"].apply(_contains_to_tags) + lines_all["tags"] = lines_all["tags"].apply(_tags_to_osm_ids) lines_all["underground"] = lines_all["underground"].replace({True: "t", False: "f"}) lines_all["under_construction"] = lines_all["under_construction"].replace( {True: "t", False: "f"} @@ -1517,6 +1599,7 @@ def _finalise_network(all_buses, converters, lines, links, transformers): links_all["length"] = links_all["length"].round(2) links_all["under_construction"] = False links_all["tags"] = links_all["link_id"].str.split("-").str[0] + links_all["tags"] = links_all["tags"].apply(_tags_to_osm_ids) links_all = links_all.replace({True: "t", False: "f"}) links_all = links_all[["link_id"] + LINKS_COLUMNS] links_all.set_index("link_id", inplace=True) @@ -1537,19 +1620,31 @@ def build_network( country_shapes, voltages, line_types, + under_construction, + remove_after, ): logger.info("Reading input data.") # Buses buses = gpd.read_file(inputs["substations"]) buses.drop(columns=["country"], inplace=True) + buses = _treat_under_construction( + buses, decision=under_construction, remove_after=remove_after + ).drop(columns=["start_date"]) + buses_polygon = gpd.read_file(inputs["substations_polygon"]) + buses_polygon = buses_polygon[ + buses_polygon["bus_id"].isin(buses["bus_id"]) + ] # Only keep buses that are in buses buses_polygon["bus_id"] = buses_polygon["bus_id"].apply(lambda x: x.split("-")[0]) buses_polygon.drop_duplicates(subset=["bus_id", "geometry"], inplace=True) buses_polygon.drop(columns=["voltage"], inplace=True) # Lines - lines = gpd.read_file(inputs["lines"]).drop("contains", axis=1) + lines = gpd.read_file(inputs["lines"]) + lines = _treat_under_construction( + lines, decision=under_construction, remove_after=remove_after + ).drop(columns=["start_date"]) lines = _merge_identical_lines(lines) # Floor voltages to 3 decimal places (e.g., 66600 becomes 66000, 220000 stays 220000) @@ -1561,7 +1656,8 @@ def build_network( ) ### DATA PROCESSING (AC) - buses_line_endings = _add_line_endings(buses, lines) + buses_line_endings = _add_line_endings(lines) + buses = pd.concat([buses, buses_line_endings], ignore_index=True) # Split lines overpassing nearby buses (tolerance 1 m) @@ -1570,7 +1666,7 @@ def build_network( # Update end points bool_virtual_buses = buses["bus_id"].str.startswith("virtual") buses = buses[~bool_virtual_buses] - buses_updated_line_endings = _add_line_endings(buses, lines) + buses_updated_line_endings = _add_line_endings(lines) buses = pd.concat([buses, buses_updated_line_endings], ignore_index=True) # Update length of lines @@ -1584,6 +1680,20 @@ def build_network( stations = _create_station_seeds(buses, buses_polygon, country_shapes) buses = _merge_buses_to_stations(buses, stations) + # Round stations to 8 decimals to avoid floating point errors (e.g. voronoi creation) + # Round POINT in "geometry" and "poi" + buses["geometry"] = gpd.points_from_xy( + buses.geometry.x.round(COORD_PRECISION), + buses.geometry.y.round(COORD_PRECISION), + crs=buses.crs, + ) + + buses["poi"] = gpd.points_from_xy( + buses.poi.x.round(COORD_PRECISION), + buses.poi.y.round(COORD_PRECISION), + crs=buses.crs, + ) + # Drop lines that are fully within stations.polygon internal_lines = gpd.sjoin(lines, stations, how="inner", predicate="within").line_id logger.info( @@ -1626,10 +1736,43 @@ def build_network( ### DATA PROCESSING (DC) links = gpd.read_file(inputs["links"]) + links = _treat_under_construction( + links, decision=under_construction, remove_after=remove_after + ).drop(columns=["start_date"]) + converters_polygon = gpd.read_file(inputs["converters_polygon"]) + converters_polygon = _treat_under_construction( + converters_polygon, decision=under_construction, remove_after=remove_after + ).drop(columns=["start_date"]) # Create DC buses dc_buses = _add_dc_buses(converters_polygon, links, buses, country_shapes) + + # Import DC switching stations + dc_switching = gpd.read_file(inputs["dc_switching"]) + + if not dc_switching.empty: + dc_switching = _treat_under_construction( + dc_switching, + decision=under_construction, + remove_after=remove_after, + ).drop(columns=["start_date"]) + dc_switching_polygon = gpd.read_file(inputs["dc_switching_polygon"]) + dc_switching_polygon = dc_switching_polygon[ + dc_switching_polygon["bus_id"].isin(dc_switching["bus_id"]) + ] + dc_switching["polygon"] = ( + dc_switching_polygon.set_index("bus_id") + .loc[dc_switching["bus_id"], "geometry"] + .values + ) + dc_switching["poi"] = dc_switching["geometry"] + dc_switching["station_id"] = dc_switching["bus_id"] + dc_switching = dc_switching[ + [col for col in dc_switching.columns if col in dc_buses.columns] + ] + dc_buses = pd.concat([dc_buses, dc_switching], ignore_index=True) + links, dc_buses = _map_links_to_dc_buses(links, dc_buses) # Drop incomplete links (missing buses), relevant if network is built for single (islanded) regions @@ -1643,6 +1786,7 @@ def build_network( # Concatenate AC and DC buses buses["dc"] = False dc_buses["dc"] = True + dc_buses["contains"] = dc_buses["bus_id"].str.split("-").str[0] all_buses = pd.concat([buses, dc_buses], ignore_index=True) if not links.empty: @@ -1703,17 +1847,22 @@ def build_network( set_scenario_config(snakemake) # Parameters + inputs = snakemake.input + country_shapes = gpd.read_file(snakemake.input["country_shapes"]).set_index("name") voltages = snakemake.params.voltages line_types = snakemake.params.line_types - country_shapes = gpd.read_file(snakemake.input["country_shapes"]).set_index("name") + under_construction = snakemake.params.under_construction + remove_after = snakemake.params.remove_after # Build network buses, converters, lines, links, transformers, stations_polygon, buses_polygon = ( build_network( - snakemake.input, + inputs, country_shapes, voltages, line_types, + under_construction, + remove_after, ) ) diff --git a/scripts/build_powerplants.py b/scripts/build_powerplants.py index 4a8009349a..364b286356 100755 --- a/scripts/build_powerplants.py +++ b/scripts/build_powerplants.py @@ -66,11 +66,12 @@ import itertools import logging +import geopandas as gpd import numpy as np import pandas as pd import powerplantmatching as pm import pypsa -from powerplantmatching.export import map_country_bus +from shapely.geometry import MultiPolygon, Polygon from scripts._helpers import configure_logging, set_scenario_config @@ -137,23 +138,90 @@ def replace_natural_gas_technology(df): return df.Technology.mask(df.Fueltype == "Natural Gas", tech) -def replace_natural_gas_fueltype(df): +def replace_natural_gas_fueltype(df: pd.DataFrame) -> pd.Series: return df.Fueltype.mask( (df.Technology == "OCGT") | (df.Technology == "CCGT"), "Natural Gas" ) +def fill_unoccupied_holes(gdf: gpd.GeoDataFrame) -> gpd.GeoSeries: + def _fill_poly(poly, idx): + if not poly.interiors: + return poly + kept = [h for h in poly.interiors if gdf.drop(idx).intersects(Polygon(h)).any()] + return Polygon(poly.exterior, kept) + + result = gdf.geometry.copy() + for idx in gdf.index: + g = gdf.geometry[idx] + if g.geom_type == "Polygon": + result[idx] = _fill_poly(g, idx) + elif g.geom_type == "MultiPolygon": + result[idx] = MultiPolygon([_fill_poly(p, idx) for p in g.geoms]) + return result + + +def map_to_country_bus( + ppl: gpd.GeoDataFrame, regions: gpd.GeoDataFrame, max_distance: float = 10000 +) -> gpd.GeoDataFrame: + """ + Assign power plants to region buses of the same country. + + First, spatial join is performed per country to avoid cross-border + misassignment. Remaining unmatched plants are assigned via nearest + neighbor (max 10000m) within the same country. + """ + assigned = [] + unmatched = [] + + for country, plants in ppl.groupby("Country"): + country_regions = regions[regions.index.str[:2] == country] + joined = ( + plants.sjoin(country_regions) + .rename(columns={"name": "bus"}) + .reindex(plants.index) + ) + assigned.append(joined.dropna(subset=["bus"])) + missing = joined[joined["bus"].isna()] + if not missing.empty: + unmatched.append(plants.loc[missing.index]) + + if unmatched: + unmatched = pd.concat(unmatched) + for country, plants in unmatched.groupby("Country"): + country_regions = regions[regions.index.str[:2] == country] + nearest = ( + plants.to_crs(3035) + .sjoin_nearest(country_regions.to_crs(3035), max_distance=max_distance) + .rename(columns={"name": "bus"}) + .to_crs(4326) + ) + missing = plants.index.difference(nearest.index) + print(country, missing) + nearest = pd.concat([nearest, plants.loc[missing]]) + assigned.append(nearest) + + return pd.concat(assigned) + + if __name__ == "__main__": if "snakemake" not in globals(): from scripts._helpers import mock_snakemake - snakemake = mock_snakemake("build_powerplants") + snakemake = mock_snakemake("build_powerplants", clusters=256) configure_logging(snakemake) set_scenario_config(snakemake) n = pypsa.Network(snakemake.input.network) countries = snakemake.params.countries + fn_onshore = snakemake.input.regions_onshore + fn_offshore = snakemake.input.regions_offshore + + regions = pd.concat([gpd.read_file(fn_onshore), gpd.read_file(fn_offshore)]) + regions = regions.dissolve("name") + regions["geometry"] = fill_unoccupied_holes(regions) + # Steps copied from PPM: Usually run by PPM when using pm.powerplants(...) from cache ppl = ( pd.read_csv(snakemake.input.powerplants, index_col=0, header=[0]) @@ -161,24 +229,13 @@ def replace_natural_gas_fueltype(df): .pipe(pm.collection.set_column_name, "Matched Data") ) ppl = ( - ppl.powerplant.fill_missing_decommissioning_years() - .powerplant.convert_country_to_alpha2() - .query('Fueltype not in ["Solar", "Wind"] and Country in @countries') + ppl.powerplant.convert_country_to_alpha2() + .query("Country in @countries") .assign(Technology=replace_natural_gas_technology) .assign(Fueltype=replace_natural_gas_fueltype) .replace({"Solid Biomass": "Bioenergy", "Biogas": "Bioenergy"}) ) - # Correct bioenergy for countries where possible - opsd = pm.data.OPSD_VRE().powerplant.convert_country_to_alpha2() - opsd = opsd.replace({"Solid Biomass": "Bioenergy", "Biogas": "Bioenergy"}).query( - 'Country in @countries and Fueltype == "Bioenergy"' - ) - opsd["Name"] = "Biomass" - available_countries = opsd.Country.unique() - ppl = ppl.query('not (Country in @available_countries and Fueltype == "Bioenergy")') - ppl = pd.concat([ppl, opsd]) - ppl_query = snakemake.params.powerplants_filter if isinstance(ppl_query, str): ppl.query(ppl_query, inplace=True) @@ -198,18 +255,23 @@ def replace_natural_gas_fueltype(df): ) ppl = ppl.dropna(subset=["lat", "lon"]) - ppl = map_country_bus(ppl, n.buses) + + ppl = gpd.GeoDataFrame(ppl, geometry=gpd.points_from_xy(ppl.lon, ppl.lat), crs=4326) + + ppl = map_to_country_bus(ppl, regions) bus_null_b = ppl["bus"].isnull() if bus_null_b.any(): + stats = ( + ppl.loc[bus_null_b] + .groupby(by=["Country", "Fueltype"]) + .Capacity.sum() + .sort_values(ascending=False) + ) logger.warning( - f"Couldn't find close bus for {bus_null_b.sum()} powerplants. " - "Removing them from the powerplants list." + f"Couldn't assign sufficiently close region for {bus_null_b.sum()} powerplants.\n" + f"Removing the following capacities (MW) from the powerplants dataset:\n {stats}" ) ppl = ppl[~bus_null_b] - # TODO: This has to fixed in PPM, some powerplants are still duplicated - cumcount = ppl.groupby(["bus", "Fueltype"]).cumcount() + 1 - ppl.Name = ppl.Name.where(cumcount == 1, ppl.Name + " " + cumcount.astype(str)) - ppl.reset_index(drop=True).to_csv(snakemake.output[0]) diff --git a/scripts/build_ptes_operations/ptes_approximator.py b/scripts/build_ptes_operations/ptes_approximator.py new file mode 100644 index 0000000000..f7f96bb8ef --- /dev/null +++ b/scripts/build_ptes_operations/ptes_approximator.py @@ -0,0 +1,350 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +import numpy as np +import pandas as pd +import xarray as xr + + +class PtesApproximator: + def __init__( + self, + forward_temperature: xr.DataArray, + return_temperature: xr.DataArray, + layer_temperatures: list[float] | np.ndarray, + design_top_temperature: float, + design_bottom_temperature: float, + design_standing_losses: float, + interlayer_heat_transfer_coefficient: float, + cop: xr.DataArray, + rho=1000, + # Specific heat in MWh/kg/K to keep rho*c_p*DeltaT in MWh/m3. + c_p=4184 / 3.6e9, + ): + self.forward_temperature = forward_temperature + self.return_temperature = return_temperature + + layer_temperatures = np.asarray(layer_temperatures, dtype=float) + + self._layer_temperatures = layer_temperatures + self.top_temperature = float(layer_temperatures[0]) + self.bottom_temperature = float(layer_temperatures[-1]) + self.num_layers = int(layer_temperatures.size) + self.design_top_temperature = design_top_temperature + self.design_bottom_temperature = design_bottom_temperature + self.design_standing_losses = design_standing_losses + self.interlayer_heat_transfer_coefficient = interlayer_heat_transfer_coefficient + self.rho = rho + self.c_p = c_p + self._cop = cop + + self._time_dim = [d for d in forward_temperature.dims if d != "name"][0] + + @property + def cop(self): + return xr.concat( + [ + self._cop.sel( + heat_system="urban central", heat_source=f"ptes layer {i}" + ).drop("heat_source") + for i in range(self.num_layers) + ], + dim=pd.Index(np.arange(self.num_layers), name="layer"), + ).drop("heat_system") + + @property + def layer_temperatures(self) -> np.ndarray: + """Fixed temperature of each layer [°C], hottest first.""" + return self._layer_temperatures + + @property + def layer_temperatures_da(self) -> xr.DataArray: + """Fixed temperature of each layer [°C], hottest first.""" + return xr.DataArray( + self._layer_temperatures, + dims=["layer"], + coords={"layer": np.arange(len(self._layer_temperatures))}, + ) + + @property + def charging_availability(self) -> xr.DataArray: + """ + Binary charging availability Φ⁺_{l,t}. + + For each timestep, only the layer whose temperature is closest to the forward temperature can receive charge. Returns a DataArray with dimensions (snapshot, name, layer). + """ + + closest_layer_to_forward = np.abs( + self.forward_temperature - self.layer_temperatures_da + ).argmin(dim="layer") # (snapshot, name, layer) + + return xr.concat( + [closest_layer_to_forward == l for l in range(self.num_layers)], + dim=pd.Index(np.arange(self.num_layers), name="layer"), + ) + + @property + def preheater_efficiency(self) -> xr.DataArray: + """ + Conversion factor from volume to energy flow for heat exchange with return temperature. For each layer, this is (T_layer - T_return) * rho * c_p, but only if T_layer > T_return (otherwise 0). Returns a DataArray with dimensions (snapshot, name, layer). + """ + + return xr.where( + self.return_temperature < self.layer_temperatures_da, + self.rho + * self.c_p + * (self.layer_temperatures_da - self.return_temperature), + 0, + ) + + @property + def heat_pump_efficiency(self) -> xr.DataArray: + """ + Conversion factor from volume to energy flow for heat exchange with return temperature. For each layer, this is (T_layer - T_return) * rho * c_p, but only if T_layer > T_return (otherwise 0). Returns a DataArray with dimensions (snapshot, name, layer). + """ + + return xr.where( + self.layer_temperatures_da > self.forward_temperature, + 0.0, + xr.where( + self.layer_temperatures_da > self.return_temperature, + self.rho + * self.c_p + * (self.forward_temperature - self.layer_temperatures_da), + self.rho + * self.c_p + * (self.forward_temperature - self.return_temperature), + ), + ) + + @property + def layer_needs_boosting(self) -> xr.DataArray: + """ + Binary indicator whether a layer requires boosting to reach forward temperature. + + Returns dimensions (snapshot, name, layer). + """ + return xr.where(self.forward_temperature > self.layer_temperatures_da, 1, 0) + + @property + def charger_efficiency(self) -> xr.DataArray: + """Heat-to-volume conversion efficiency for PTES charging [MWh to m3].""" + return xr.where( + self.charging_availability, self.charging_availability / self.m3_to_mwh, 0 + ) + + @property + def m3_to_mwh(self) -> np.ndarray: + """Per-layer conversion from volume state to energy equivalent [MWh/m3].""" + return ( + self.rho * self.c_p * (self.layer_temperatures_da - self.bottom_temperature) + ) + + @property + def e_max_pu(self) -> float: + """Scalar PTES capacity scaling against design temperature spread.""" + design_delta_t = self.design_top_temperature - self.design_bottom_temperature + if design_delta_t <= 0: + raise ValueError( + "design_top_temperature must be larger than design_bottom_temperature" + ) + + operational_delta_t = self.top_temperature - self.bottom_temperature + return max(operational_delta_t / design_delta_t, 0.0) + + @property + def return_temp_layer(self) -> xr.DataArray: + """Closest layer index to node-wise mean return temperature.""" + + return ( + np.abs(self.layer_temperatures_da - self.return_temperature) + .argmin(dim="layer") + .astype(int) + ) + + @property + def preheater_return_layer(self) -> xr.DataArray: + """ + Reinjection layer index for the preheater's no-boost return volume. + + For each source layer l and node: + a) T_l > T_ret and l is not the closest-to-T_ret layer: target = closest-to-T_ret + b) T_l > T_ret and l is the closest-to-T_ret layer: target = min(l + 1, num_layers - 1) + (next colder modelled layer; prevents the self-loop that produces phantom heat) + c) T_l <= T_ret: no physical feedback; placeholder = num_layers - 1. + The preheater's efficiency3 (= 1 - layer_needs_boosting) masks this flow + to 0 because any layer colder than T_ret always needs boosting + (T_fwd > T_ret >= T_l). + + Returns dimensions (layer, name). + """ + ret_layer = self.return_temp_layer + next_colder = xr.where( + ret_layer < self.num_layers - 1, ret_layer + 1, self.num_layers - 1 + ) + layer_idx = self.layer_temperatures_da.layer + + return xr.where( + layer_idx < ret_layer, + ret_layer, + xr.where( + layer_idx == ret_layer, + next_colder, + self.num_layers - 1, + ), + ).astype(int) + + @property + def hp_return_layer(self) -> xr.DataArray: + """ + Reinjection layer index for PTES layer heat pumps. + + For each source layer l and node, select an "other" layer according to: + a) if T_l < T_ret: target = T_l - dT + b) else: target = T_ret - dT + + Then choose the candidate layer with minimum |T_other - target|, + where candidates are strictly colder than the source layer. + Returns dimensions (layer, name). + """ + + delta_t = xr.where( + self.return_temperature < self.layer_temperatures_da, + (self.forward_temperature - self.layer_temperatures_da) + * (1 - 1 / self.cop.clip(min=1)), + (self.forward_temperature - self.return_temperature) + * (1 - 1 / self.cop.clip(min=1)), + ) + + target_temp = xr.where( + self.return_temperature < self.layer_temperatures_da, + self.return_temperature - delta_t, + self.layer_temperatures_da - delta_t, + ) + + # take min over time (target layer must be constant) + target_temp = target_temp.min(dim="time") + + ret_val = [] + for l in range(self.num_layers): + closest_layer = abs( + self.layer_temperatures_da - target_temp.sel(layer=l) + ).argmin(dim="layer") + closest_layer = xr.where( + (closest_layer <= l) & (closest_layer < self.num_layers - 1), + closest_layer + 1, + closest_layer, + ) + ret_val.append(closest_layer) + + return xr.concat( + ret_val, dim=pd.Index(np.arange(self.num_layers), name="layer") + ) + + @property + def interlayer_heat_transfer_coefficients(self) -> xr.DataArray: + """.""" + return xr.full_like( + self.layer_temperatures_da, self._interlayer_heat_transfer_coefficient() + ) + + def _interlayer_heat_transfer_coefficient( + self, + conductivity=0.6, + density=1000, + heat_capacity=4184, + storage_height=15, + thermocline=1, + seconds_per_hour=3600, + ) -> np.ndarray: + """ + Interlayer heat transfer coefficient relative to layer state-of-charge. Requires "nominal" layer height, which is assumed to be storage_height distributed equally across layers. Returns array of length num_layers - 1, where each entry corresponds to the coefficient between layer l and l+1. + + Args: + ---- + conductivity: Thermal conductivity of the storage medium [W/m/K] + density: Density of the storage medium [kg/m3] + heat_capacity: Specific heat capacity of the storage medium [J/kg/K] + storage_height: Total height of the storage medium [m] + seconds_per_hour: Number of seconds in an hour (for unit conversion) + """ + return 0.001 + layer_height = storage_height / ( + self.num_layers + 1 + ) # assuming equal layer heights + + return ( + conductivity + / (density * heat_capacity * layer_height) + * seconds_per_hour + * (self.layer_temperatures[:-1] - self.layer_temperatures[1:]) + / (self.layer_temperatures[:-1] - self.bottom_temperature) + / thermocline + ) + + @property + def standing_losses(self) -> float: + """Tbd.""" + return np.full(self.num_layers, self.design_standing_losses) + + def to_dataset(self) -> xr.Dataset: + """ + Export all pre-computed parameters as a single xr.Dataset. + + Variables: + - layer_temperatures: (layer,) + - return_temperature: (snapshot, name) + - return_layer_index: (name,) + - m3_to_mwh: (layer,) + - hx_volume_to_return_temp: (snapshot, name, layer) + - hx_volume_to_forward_temp: (snapshot, name, layer) + - charger_efficiency: (snapshot, name, layer) + - charging_availability: (snapshot, name, layer) + - interlayer_transfer_coefficients: (layer_pair,) + - standing_losses: (layer,) + - e_max_pu: scalar + """ + layer_coord = np.arange(self.num_layers) + + ds = xr.Dataset( + { + "layer_temperatures": xr.DataArray( + self.layer_temperatures, + dims=["layer"], + coords={"layer": layer_coord}, + ), + "return_temperature_layer": self.return_temp_layer, + "preheater_return_layer": self.preheater_return_layer, + "hp_return_layer": self.hp_return_layer, + "m3_to_mwh": xr.DataArray( + self.m3_to_mwh, + dims=["layer"], + coords={"layer": layer_coord}, + ), + "preheater_efficiency": self.preheater_efficiency, + "heat_pump_efficiency": self.heat_pump_efficiency, + "layer_needs_boosting": self.layer_needs_boosting, + "charger_efficiency": self.charger_efficiency, + "charging_availability": self.charging_availability, + "interlayer_heat_transfer_coefficients": self.interlayer_heat_transfer_coefficients, + "standing_losses": xr.DataArray( + self.standing_losses, + dims=["layer"], + coords={"layer": layer_coord}, + ), + "e_max_pu": self.e_max_pu, + }, + attrs={ + "num_layers": self.num_layers, + "top_temperature": self.top_temperature, + "bottom_temperature": self.bottom_temperature, + "storage_height": 15, # m, assumed for interlayer coefficient calculation + "design_top_temperature": self.design_top_temperature, + "design_bottom_temperature": self.design_bottom_temperature, + "design_standing_losses": self.design_standing_losses, + "rho": self.rho, + "c_p": self.c_p, + }, + ) + return ds diff --git a/scripts/build_ptes_operations/ptes_temperature_approximator.py b/scripts/build_ptes_operations/ptes_temperature_approximator.py deleted file mode 100644 index 61140ef31d..0000000000 --- a/scripts/build_ptes_operations/ptes_temperature_approximator.py +++ /dev/null @@ -1,315 +0,0 @@ -# SPDX-FileCopyrightText: Contributors to PyPSA-Eur -# -# SPDX-License-Identifier: MIT - -import logging - -import xarray as xr - -logger = logging.getLogger(__name__) - - -class PtesTemperatureApproximator: - """ - A unified class to handle pit thermal energy storage (PTES) temperature-related calculations. - - It calculates top temperature profiles, determines when charge or discharge boosting is needed, - and approximates storage capacity based on temperature differences. - - Attributes - ---------- - forward_temperature : xr.DataArray - The forward temperature profile from the district heating network. - return_temperature : xr.DataArray - The return temperature profile from the district heating network. - top_temperature : float | str - Operational temperature specification for top layer in PTES. - bottom_temperature : float | str - Operational temperature specification for bottom layer in PTES. - charge_boosting_required : bool - Whether charge boosting is required/allowed. - discharge_boosting_required : bool - Whether discharge boosting is required/allowed. - temperature_dependent_capacity : bool - Whether storage capacity varies with temperature. If False, assumes constant capacity. - design_top_temperature : float - Maximum design temperature for the top layer of PTES, used for capacity normalization. - design_bottom_temperature : float - Minimum design temperature for the bottom layer of PTES, used for capacity normalization. - """ - - def __init__( - self, - forward_temperature: xr.DataArray, - return_temperature: xr.DataArray, - top_temperature: float | str, - bottom_temperature: float | str, - charge_boosting_required: bool, - discharge_boosting_required: bool, - temperature_dependent_capacity: bool, - design_top_temperature: float, - design_bottom_temperature: float, - ): - """ - Initialize PtesTemperatureApproximator. - - Parameters - ---------- - forward_temperature : xr.DataArray - The forward temperature profile from the district heating network. - return_temperature : xr.DataArray - The return temperature profile from the district heating network. - top_temperature : float | str - Operational temperature of top layer in PTES. Either a float value or 'forward' for dynamic profiles. - bottom_temperature : float | str - Operational temperature of bottom layer in PTES. Either a float value or 'return' for dynamic profiles. - charge_boosting_required : bool - Whether charge boosting is required/allowed. - discharge_boosting_required : bool - Whether discharge boosting is required/allowed. - temperature_dependent_capacity : bool - Whether storage capacity varies with temperature. If False, assumes constant capacity. - design_top_temperature : float - Maximum design temperature for the top layer of PTES, used for capacity normalization - and clipping dynamic top temperature profiles. - design_bottom_temperature : float - Minimum design temperature for the bottom layer of PTES, used for capacity normalization. - """ - self.forward_temperature = forward_temperature - self.return_temperature = return_temperature - self.top_temperature = top_temperature - self.bottom_temperature = bottom_temperature - self.charge_boosting_required = charge_boosting_required - self.discharge_boosting_required = discharge_boosting_required - self.temperature_dependent_capacity = temperature_dependent_capacity - self.design_top_temperature = design_top_temperature - self.design_bottom_temperature = design_bottom_temperature - - if self.charge_boosting_required: - raise NotImplementedError( - "Charge boosting for PTES is currently not supported but might be retintroduced in the future." - ) - - @property - def top_temperature_profile(self) -> xr.DataArray: - """ - PTES top layer temperature profile. - - Returns either the forward temperature (if top_temperature == 'forward'), - clipped to the design_top_temperature, or a constant temperature profile - (if top_temperature is a numeric value). - - Returns - ------- - xr.DataArray - The resulting top temperature profile for PTES. - """ - if self.top_temperature == "forward": - logger.info( - f"PTES top temperature profile: Using dynamic forward temperature from district heating network, clipped by design top temperature to {self.design_top_temperature}°C " - f"Forward temperature range: {float(self.forward_temperature.min().values):.1f}°C to {float(self.forward_temperature.max().values):.1f}°C)" - ) - return self.forward_temperature.where( - self.forward_temperature <= self.design_top_temperature, - self.design_top_temperature, - ) - elif isinstance(self.top_temperature, (int, float)): - logger.info( - f"PTES top temperature profile: Using constant temperature of {self.top_temperature}°C " - f"for all {self.forward_temperature.size} snapshots and nodes" - ) - return xr.full_like(self.forward_temperature, self.top_temperature) - else: - raise ValueError( - f"Invalid top_temperature: {self.top_temperature}. " - "Must be 'forward' or a numeric value." - ) - - @property - def bottom_temperature_profile(self) -> xr.DataArray: - """ - PTES bottom layer temperature profile. - - Returns either the return temperature (if bottom_temperature == 'return') - or a constant temperature profile (if bottom_temperature is a numeric value). - - Returns - ------- - xr.DataArray - The resulting bottom temperature profile for PTES. - """ - if self.bottom_temperature == "return": - logger.info( - f"PTES bottom temperature profile: Using dynamic return temperature from district heating network " - f"(shape: {self.return_temperature.shape}, range: {float(self.return_temperature.min().values):.1f}°C to {float(self.return_temperature.max().values):.1f}°C)" - ) - return self.return_temperature - elif isinstance(self.bottom_temperature, (int, float)): - logger.info( - f"PTES bottom temperature profile: Using constant temperature of {self.bottom_temperature}°C " - f"for all {self.return_temperature.size} snapshots and nodes" - ) - return xr.full_like(self.return_temperature, self.bottom_temperature) - else: - raise ValueError( - f"Invalid bottom_temperature: {self.bottom_temperature}. " - "Must be 'return' or a numeric value." - ) - - @property - def e_max_pu(self) -> xr.DataArray: - """ - Calculate e_max_pu for PTES as design_temperature_delta / actual_temperature_delta. - - Returns - ------- - xr.DataArray - Normalized delta T values between 0 and 1, representing the - available storage capacity as a fraction of maximum design capacity. - If temperature_dependent_capacity is False, returns constant capacity of 1.0. - """ - if self.temperature_dependent_capacity: - delta_t = self.top_temperature_profile - self.bottom_temperature_profile - # Get max possible delta_t for normalization - max_delta_t = self.design_top_temperature - self.design_bottom_temperature - normalized_delta_t = delta_t / max_delta_t - result = normalized_delta_t.clip(min=0) # Ensure non-negative values - logger.info( - f"PTES capacity (e_max_pu): Calculating temperature-dependent capacity. " - f"Normalization: max_delta_t={max_delta_t:.2f}K (max_top={self.design_top_temperature:.2f}°C, min_bottom={self.design_bottom_temperature:.2f}°C). " - f"Resulting capacity range: {float(result.min().values):.3f} to {float(result.max().values):.3f} p.u." - ) - return result - else: - logger.info( - f"PTES capacity (e_max_pu): Using constant capacity of 1.0 p.u. (temperature-independent) " - f"for all {self.forward_temperature.size} snapshots and nodes" - ) - return xr.ones_like(self.forward_temperature) - - @property - def boost_per_discharge(self) -> xr.DataArray: - """ - Calculate the additional lift required between the store's - current top temperature and the forward temperature with the lift - already achieved inside the store. - - Notes - ----- - The total thermal output required to reach the forward temperature is: - - Q_total = Q_discharge + Q_boost - - The total heat transfer is partitioned into: - - Q_discharge = Ṽ·ρ·cₚ·(T_top − T_bottom) - Q_boost = Ṽ·ρ·cₚ·(T_forward − T_top) - - Solving this to constant Ṽ gives α as the ratio of required boost to available store energy: - - α = Q_boost / Q_discharge - = (T_forward − T_top) / (T_top − T_bottom) - - This expression quantifies the share of PTES output that is covered - by stored energy relative to the additional heating needed to meet - the desired forward temperature. - - Returns - ------- - xr.DataArray - The resulting fraction of PTES charge that must be further heated. - """ - if self.discharge_boosting_required: - result = ( - (self.forward_temperature - self.top_temperature_profile) - / (self.top_temperature_profile - self.bottom_temperature_profile) - ).where(self.forward_temperature > self.top_temperature_profile, 0) - - # Count how many snapshots require boosting - boosting_needed = ( - (self.forward_temperature > self.top_temperature_profile).sum().values - ) - total_snapshots = self.forward_temperature.size - - logger.info( - f"Discharge boosting (boost_per_discharge): Enabled. " - f"Boosting required for {int(boosting_needed)}/{total_snapshots} snapshot-node combinations " - f"(ratio range: {float(result.min().values):.3f} to {float(result.max().values):.3f})" - ) - return result - else: - logger.info( - f"Discharge boosting (boost_per_discharge): Not required. " - f"Returning boost_per_discharge=0 for all {self.forward_temperature.size} snapshots and nodes" - ) - return xr.zeros_like(self.forward_temperature) - - @property - def boost_per_charge(self) -> xr.DataArray: - """ - Calculate the additional boost energy ratio required during charging. - - .. note:: - Charge boosting is currently not implemented and will raise - NotImplementedError if charge_boosting_required is True. - - This calculates how much additional energy is needed to raise the PTES - top layer from the forward temperature to the design top temperature, - relative to the energy delivered by charging. - - Notes - ----- - To fill the storage from the return temperature all the way up to its - design top temperature, the total thermal energy required is split into: - - Q_charge = Ṽ·ρ·cₚ·(T_forward − T_bottom) - Q_boost = Ṽ·ρ·cₚ·(T_top − T_forward) - - - Q_charge is the energy delivered by charging to the forward setpoint. - - Q_boost is the extra boost energy needed to reach the design top temperature. - - Defining α as the ratio of boost energy to charge energy: - - α = Q_boost / Q_charge - = (T_top − T_forward) / (T_forward − T_return) - - Wherever the forward temperature meets or exceeds the design top temperature, - α is set to zero since no further boost is needed. - - Returns - ------- - xr.DataArray - The ratio of additional boost energy needed to the energy delivered by charging. - """ - if self.charge_boosting_required: - # Get the max top temperature value - max_top = ( - self.top_temperature - if isinstance(self.top_temperature, (int, float)) - else self.top_temperature_profile - ) - result = ( - ( - (max_top - self.forward_temperature) - / (self.forward_temperature - self.return_temperature) - ) - .where(self.forward_temperature < max_top, 0) - .clip(max=1) - ) - - # Count how many snapshots require boosting - boosting_needed = (self.forward_temperature < max_top).sum().values - total_snapshots = self.forward_temperature.size - - logger.info( - f"Charge boosting (boost_per_charge): Enabled. " - f"Boosting required for {int(boosting_needed)}/{total_snapshots} snapshot-node combinations " - f"(ratio range: {float(result.min().values):.3f} to {float(result.max().values):.3f})" - ) - return result - else: - logger.info( - f"Charge boosting (boost_per_charge): Not required. " - f"Returning boost_per_charge=0 for all {self.forward_temperature.size} snapshots and nodes" - ) - return xr.zeros_like(self.forward_temperature) diff --git a/scripts/build_ptes_operations/run.py b/scripts/build_ptes_operations/run.py index 347c5e5efe..11cb00052d 100644 --- a/scripts/build_ptes_operations/run.py +++ b/scripts/build_ptes_operations/run.py @@ -4,24 +4,12 @@ """ Build PTES (Pit Thermal Energy Storage) operational profiles. -This script calculates temperature and capacity profiles for pit thermal energy -storage systems integrated with district heating networks. It determines: +This script pre-computes temperature-dependent parameters for pit thermal +energy storage systems integrated with district heating networks, using the +unified ``PtesApproximator`` class. -1. **Top temperature profiles**: The operational top layer temperature, either - following the district heating forward temperature (clipped to design limits) - or a constant value. - -2. **Capacity profiles (e_max_pu)**: Normalized storage capacity based on the - temperature difference between top and bottom layers, relative to the design - temperature difference. This captures how storage capacity varies when - operating temperatures deviate from design conditions. - -3. **Discharge boosting profiles**: When the PTES top temperature is below the - required forward temperature, additional heating (boosting) is needed during - discharge. This profile quantifies the ratio of boost energy to stored energy. - -The outputs are used by ``prepare_sector_network.py`` to configure PTES storage -components, charger/discharger links, and optional resistive boosting infrastructure. +Outputs are consumed by ``prepare_sector_network.py`` and by the COP / heat +source utilisation profile builders. Relevant Settings ----------------- @@ -31,31 +19,23 @@ district_heating: ptes: enable: true - temperature_dependent_capacity: false # if true, e_max_pu varies with temperature difference (static but scaled if top/bottom are constant) - charge_boosting_required: false # currently not supported - discharge_resistive_boosting: false # if true, adds resistive boosting link for discharge boosting and disables heat pump boosting - top_temperature: 90 # or "forward" for dynamic - bottom_temperature: 35 # or "return" for dynamic - design_top_temperature: 90 # used to compute design temperature difference for e_max_pu if temperature_dependent_capacity is true - design_bottom_temperature: 35 # used to compute design temperature difference for e_max_pu if temperature_dependent_capacity is true + top_temperature: 90 + bottom_temperature: 35 + design_top_temperature: 90 + design_bottom_temperature: 35 + discharge_resistive_boosting: false + layered: + layer_temperatures: [90] Inputs ------ - ``resources//central_heating_forward_temperature_profiles_base_s_{clusters}_{planning_horizons}.nc`` - Forward temperature profiles for district heating networks (°C). - ``resources//central_heating_return_temperature_profiles_base_s_{clusters}_{planning_horizons}.nc`` - Return temperature profiles for district heating networks (°C). Outputs ------- -- ``resources//temp_ptes_top_profiles_base_s_{clusters}_{planning_horizons}.nc`` - PTES top layer temperature profile (°C), clipped to design_top_temperature. -- ``resources//ptes_e_max_pu_profiles_base_s_{clusters}_{planning_horizons}.nc`` - Normalized PTES capacity profiles (0-1 p.u.). -- ``resources//ptes_boost_per_discharge_profiles_base_s_{clusters}_{planning_horizons}.nc`` - Discharge boosting ratio profiles. Values represent the ratio of boost energy - to discharge energy needed when T_forward > T_top. Only used when resistive - boosting is enabled. +- ``resources//ptes_layered_params_base_s_{clusters}_{planning_horizons}.nc`` + Pre-computed parameter dataset for the PTES model. References ---------- @@ -69,9 +49,7 @@ import xarray as xr from scripts._helpers import set_scenario_config -from scripts.build_ptes_operations.ptes_temperature_approximator import ( - PtesTemperatureApproximator, -) +from scripts.build_ptes_operations.ptes_approximator import PtesApproximator logger = logging.getLogger(__name__) @@ -87,43 +65,26 @@ set_scenario_config(snakemake) - logger.info( - "Loading district heating temperature profiles and calculating PTES operational profiles" - ) + logger.info("Building PTES operational profiles") logger.info(f"PTES configuration: {snakemake.params}") - # Discharge boosting profiles are calculated when resistive boosting is enabled. - # For heat pump-based boosting, add "ptes" to central heating heat sources instead and disable resistive boosting. - discharge_boosting_required: bool = snakemake.params.discharge_resistive_boosting - - ptes_temperature_approximator = PtesTemperatureApproximator( - forward_temperature=xr.open_dataarray( - snakemake.input.central_heating_forward_temperature_profiles - ), - return_temperature=xr.open_dataarray( - snakemake.input.central_heating_return_temperature_profiles - ), - top_temperature=snakemake.params.top_temperature, - bottom_temperature=snakemake.params.bottom_temperature, - charge_boosting_required=snakemake.params.charge_boosting_required, - discharge_boosting_required=discharge_boosting_required, - temperature_dependent_capacity=snakemake.params.temperature_dependent_capacity, - design_bottom_temperature=snakemake.params.design_bottom_temperature, - design_top_temperature=snakemake.params.design_top_temperature, - ) - - ptes_temperature_approximator.top_temperature_profile.to_netcdf( - snakemake.output.ptes_top_temperature_profiles + forward_temperature = xr.open_dataarray( + snakemake.input.central_heating_forward_temperature_profiles ) - - ptes_temperature_approximator.bottom_temperature_profile.to_netcdf( - snakemake.output.ptes_bottom_temperature_profiles + return_temperature = xr.open_dataarray( + snakemake.input.central_heating_return_temperature_profiles ) - ptes_temperature_approximator.e_max_pu.to_netcdf( - snakemake.output.ptes_e_max_pu_profiles + approximator = PtesApproximator( + forward_temperature=forward_temperature, + return_temperature=return_temperature, + layer_temperatures=snakemake.params.layer_temperatures, + design_top_temperature=snakemake.params.design_top_temperature, + design_bottom_temperature=snakemake.params.design_bottom_temperature, + design_standing_losses=0.0, # placeholder; actual value set from costs data + interlayer_heat_transfer_coefficient=snakemake.params.interlayer_heat_transfer_coefficient, + cop=xr.open_dataarray(snakemake.input.cop_profiles), ) - ptes_temperature_approximator.boost_per_discharge.to_netcdf( - snakemake.output.ptes_boost_per_discharge_profiles - ) + # Write single dataset with all pre-computed PTES parameters + approximator.to_dataset().to_netcdf(snakemake.output.ptes_operations) diff --git a/scripts/build_swiss_energy_balances.py b/scripts/build_swiss_energy_balances.py new file mode 100644 index 0000000000..51f7d62b73 --- /dev/null +++ b/scripts/build_swiss_energy_balances.py @@ -0,0 +1,83 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT +""" +Extract historic Swiss energy balances in TWh/a from Excel file. +""" + +import logging + +import pandas as pd + +from scripts._helpers import configure_logging, set_scenario_config + +logger = logging.getLogger(__name__) + + +def load_sheet(xlsx: pd.ExcelFile, sheet_name: str, index_col: str) -> pd.DataFrame: + df = xlsx.parse(sheet_name, skiprows=5, index_col=index_col) + year_columns = [col for col in df.columns if isinstance(col, int)] + df = df[year_columns].dropna(how="all", axis=0) + return df + + +if __name__ == "__main__": + if "snakemake" not in globals(): + from scripts._helpers import mock_snakemake + + snakemake = mock_snakemake("build_swiss_energy_balances") + + configure_logging(snakemake) + set_scenario_config(snakemake) + + xlsx = pd.ExcelFile(snakemake.input.xlsx) + + tab1 = load_sheet(xlsx, "Tabelle1", index_col="Verwendungszweck") + + tab17 = load_sheet(xlsx, "Tabelle17", index_col="Verwendungszweck") + + tab18 = load_sheet(xlsx, "Tabelle18", index_col="Verwendungszweck") + + tab26 = load_sheet(xlsx, "Tabelle26", index_col="Verwendungszweck") + + tab28 = load_sheet(xlsx, "Tabelle28", index_col="Verwendungszweck") + + tab35 = load_sheet(xlsx, "Tabelle35", index_col="Verkehrsträger") + + tab38 = load_sheet(xlsx, "Tabelle38", index_col="Verkehrsträger") + + data = { + "total residential": tab17.loc["Total Endenergieverbrauch"], + "total residential space": tab17.loc["Raumwärme"], + "total residential water": tab17.loc["Warmwasser"], + "total residential cooking": tab17.loc["Kochen / Geschirrspüler"], + "electricity residential": tab18.loc["Total"], + "electricity residential space": tab18.loc["Raumwärme"], + "electricity residential water": tab18.loc["Warmwasser"], + "electricity residential cooking": tab18.loc["Kochherde"], + "total services": tab26.loc["Total Endenergie"], + "total services space": tab26.loc["Raumwärme"], + "total services water": tab26.loc["Warmwasser"], + "total services cooking": tab26.loc["Prozesswärme"], + "electricity services": tab28.loc["Total Elektrizität"], + "electricity services space": tab28.loc["Raumwärme"], + "electricity services water": tab28.loc["Warmwasser"], + "electricity services cooking": tab28.loc["Prozesswärme"], + "total rail": tab35.loc["Schiene"], + "total road": tab35.loc["Strasse"], + "electricity road": tab38.loc["Strasse"], + "electricity rail": tab38.loc["Schiene"], + "total domestic aviation": tab35.loc["Luft (Inland)"], + "total international aviation": tab1.loc["int. Flugverkehr"], + "total domestic navigation": tab35.loc["Wasser"], + "total international navigation": 0, + } + + df = pd.DataFrame(data) + df.columns.name = None + df.index = pd.MultiIndex.from_product([["CH"], df.index], names=["country", "year"]) + + # convert PJ/a to TWh/a + df /= 3.6 + + df.to_csv(snakemake.output.csv) diff --git a/scripts/clean_osm_data.py b/scripts/clean_osm_data.py index 28623fb569..fce0ce52e6 100644 --- a/scripts/clean_osm_data.py +++ b/scripts/clean_osm_data.py @@ -304,6 +304,51 @@ def _clean_rating(column): return column.astype(str) +def _clean_date(column): + """ + Function to clean the raw date column: manual fixing and drop nan values + Args: + - column: pandas Series, the column to be cleaned + Returns: + - column: pandas Series of datetime64, the cleaned column (with NaT for invalid dates) + """ + logger.info("Cleaning dates.") + column = column.copy() + + # Replace NaN/None with empty string first + column = column.fillna("") + column = column.replace({pd.NA: "", None: ""}) + + # Clean text indicators of uncertainty + column = ( + column.astype(str) + .str.lower() + .str.replace("unknown", "", regex=False) + .str.replace("approx", "", regex=False) + .str.replace("c.", "", regex=False) + .str.replace("circa", "", regex=False) + .str.replace("about", "", regex=False) + .str.replace("?", "", regex=False) + .str.replace("", "", regex=False) + .str.replace("nan", "", regex=False) + .str.replace("none", "", regex=False) + .str.strip() # Remove leading/trailing whitespace + ) + + # Remove all remaining non-numeric characters except for dashes + # Note: removed semicolons unless you have multi-date entries + column = column.apply(lambda x: re.sub(r"[^0-9-]", "", x)) + + # Replace empty strings with NaN before datetime conversion + column = column.replace("", np.nan) + + # Convert to datetime (keeps NaT for invalid/missing dates) + column = pd.to_datetime(column, errors="coerce", format="mixed") + + # Return as datetime64, NOT string + return column + + def _split_cells(df, cols=["voltage"]): """ Split semicolon separated cells i.e. [66000;220000] and create new @@ -413,6 +458,9 @@ def _import_lines_and_cables(path_lines): "frequency", "voltage", "wires", + "construction", + "construction:power", + "start_date", ] df_lines = pd.DataFrame(columns=columns) @@ -442,6 +490,9 @@ def _import_lines_and_cables(path_lines): "frequency", "voltage", "wires", + "construction", + "construction:power", + "start_date", ] tags = pd.json_normalize(df["tags"]).map( @@ -479,10 +530,14 @@ def _import_routes_relation(path_relation): "nodes", "geometry", "country", + "power", "circuits", "cables", "frequency", "voltage", + "construction", + "construction:power", + "start_date", ] df_relation = pd.DataFrame(columns=columns) @@ -507,11 +562,15 @@ def _import_routes_relation(path_relation): df["country"] = country col_tags = [ + "power", "circuits", "cables", "frequency", "voltage", "rating", + "construction", + "construction:power", + "start_date", ] tags = pd.json_normalize(df["tags"]).map( @@ -1009,6 +1068,47 @@ def _create_substations_poi(df_substations, tol=BUS_TOL / 2): return df_substations +def _aggregate_substations(df_substations: pd.DataFrame) -> pd.DataFrame: + """ + Aggregate substations by id, voltage, and country. + + Parameters + ---------- + - df_substations (pd.DataFrame): The input DataFrame containing substations + data. + + Returns + ------- + - df_substations (pd.DataFrame): The aggregated DataFrame with substations + grouped by 'bus_id', 'voltage', and 'country'. + + """ + logger.info("Aggregating substations by id, voltage, and country.") + df_substations = df_substations.copy() + + # Strip -suffix from 'id' to group by original bus_id before splitting + df_substations.loc[:, "id"] = df_substations["id"].apply( + lambda x: x.split("-")[0] if "-" in x else x + ) + + # Group by 'bus_id', 'voltage', and 'country' and aggregate the 'geometry' column + df_substations = ( + df_substations.groupby(["id", "voltage", "country"]) + .agg( + { + **{ + col: "first" + for col in df_substations.columns + if col not in ["id", "voltage", "country"] + }, + } + ) + .reset_index() + ) + + return df_substations + + def _create_lines_geometry(df_lines): """ Create line geometry for the given DataFrame of lines. @@ -1078,12 +1178,14 @@ def _finalise_substations(df_substations): containing substations data. Returns: - df_substations (pandas.DataFrame(): The DataFrame with finalised column + df_substations (pandas.DataFrame): The DataFrame with finalised column types and transformed data. """ logger.info("Finalising substations column types.") + df_substations = df_substations.copy() - # rename columns + + # Rename columns df_substations.rename( columns={ "id": "bus_id", @@ -1093,33 +1195,99 @@ def _finalise_substations(df_substations): inplace=True, ) - # Initiate new columns for subsequent build_osm_network step - df_substations.loc[:, "contains"] = df_substations["bus_id"].apply( - lambda x: x.split("-")[0] - ) - - # Initialise x_node column (if the bus is part of an interconnector) to False, will be set later - df_substations.loc[:, "x_node"] = False + # Handle empty DataFrame early - after rename so column names are correct + if df_substations.empty: + logger.warning("Empty substations DataFrame provided.") + # Add the new columns that would be created below + df_substations["contains"] = pd.Series(dtype=object) + df_substations["x_node"] = pd.Series(dtype=bool) + else: + # Initiate new columns for subsequent build_osm_network step + df_substations.loc[:, "contains"] = df_substations["bus_id"].apply( + lambda x: x.split("-")[0] + ) + # Initialise x_node column to False + df_substations.loc[:, "x_node"] = False - # Only included needed columns + # Only include needed columns (works for both empty and non-empty) df_substations = df_substations[ [ "bus_id", "voltage", "country", "x_node", + "under_construction", + "start_date", "geometry", "polygon", "contains", ] ] - # Substation data types - df_substations["voltage"] = df_substations["voltage"].astype(int) + # Substation data types (skip for empty to avoid errors) + if not df_substations.empty: + df_substations["voltage"] = df_substations["voltage"].astype(int) return df_substations +def _aggregate_lines(df_lines: pd.DataFrame) -> pd.DataFrame: + """ + Aggregate lines by id and voltage. + + Parameters + ---------- + - df_lines (pd.DataFrame): The input DataFrame containing lines data. + + Returns + ------- + - df_lines (pd.DataFrame): The aggregated DataFrame with lines grouped by + 'line_id' and 'voltage'. + + """ + logger.info("Aggregating lines by id and voltage.") + df_lines = df_lines.copy() + + # Strip -suffix from 'id' to group by original line_id before splitting + df_lines.loc[:, "line_id"] = df_lines["line_id"].apply( + lambda x: x.split("-")[0] if "-" in x else x + ) + + # Group by 'line_id' and 'voltage', sum the circuits and take the first value of all else + df_lines = ( + df_lines.groupby(["line_id", "voltage"]) + .agg( + { + **{ + col: "first" + for col in df_lines.columns + if col not in ["line_id", "voltage", "circuits"] + }, + "circuits": "sum", + } + ) + .reset_index() + ) + + # Move circuits column to after line_id + df_lines = df_lines[ + [ + "line_id", + "circuits", + "voltage", + "bus0", + "bus1", + "length", + "underground", + "under_construction", + "start_date", + "geometry", + ] + ] + + return df_lines + + def _finalise_lines(df_lines): """ Finalises the lines column types. @@ -1161,6 +1329,8 @@ def _finalise_lines(df_lines): "bus1", "length", "underground", + "under_construction", + "start_date", "geometry", ] ] @@ -1209,6 +1379,8 @@ def _finalise_links(df_links): "bus1", "length", "underground", + "under_construction", + "start_date", "geometry", ] ] @@ -1242,6 +1414,9 @@ def _import_substations(path_substations): "substation", "voltage", "frequency", + "construction", + "construction:power", + "start_date", ] cols_substations_relation = [ "id", @@ -1250,6 +1425,9 @@ def _import_substations(path_substations): "substation", "voltage", "frequency", + "construction", + "construction:power", + "start_date", ] df_substations_way = pd.DataFrame(columns=cols_substations_way) df_substations_relation = pd.DataFrame(columns=cols_substations_relation) @@ -1278,7 +1456,15 @@ def _import_substations(path_substations): ) df["country"] = country - col_tags = ["power", "substation", "voltage", "frequency"] + col_tags = [ + "power", + "substation", + "voltage", + "frequency", + "construction", + "construction:power", + "start_date", + ] tags = pd.json_normalize(df["tags"]).map( lambda x: str(x) if pd.notnull(x) else x @@ -1537,7 +1723,7 @@ def _extend_lines_to_substations(gdf_lines, gdf_substations_polygon, tol=BUS_TOL # Group by 'line_id' and create a dictionary mapping 'bus_id' to 'geometry_bus', excluding the grouping columns gdf = ( - gdf.groupby("line_id") + gdf.groupby(["line_id", "voltage_line"]) .apply( lambda x: x[["bus_id", "geometry_bus"]] .dropna() @@ -1547,12 +1733,13 @@ def _extend_lines_to_substations(gdf_lines, gdf_substations_polygon, tol=BUS_TOL ) .reset_index() ) - gdf.columns = ["line_id", "bus_dict"] + gdf.columns = ["line_id", "voltage", "bus_dict"] gdf["intersects_bus"] = gdf.apply(lambda row: len(row["bus_dict"]) > 0, axis=1) + gdf.set_index(["line_id", "voltage"], inplace=True) gdf.loc[:, "line_geometry"] = gdf.join( - gdf_lines.set_index("line_id")["geometry"], on="line_id" + gdf_lines.set_index(["line_id", "voltage"])["geometry"], )["geometry"] # Polygons at the endpoints of the linestring @@ -1568,12 +1755,10 @@ def _extend_lines_to_substations(gdf_lines, gdf_substations_polygon, tol=BUS_TOL axis=1, ) - gdf.set_index("line_id", inplace=True) - gdf_lines.set_index("line_id", inplace=True) - + gdf_lines.set_index(["line_id", "voltage"], inplace=True) gdf_lines.loc[:, "geometry"] = gdf["line_geometry_new"] - return gdf_lines + return gdf_lines.reset_index() def _check_if_ways_in_multi(list, longer_list): @@ -1592,7 +1777,11 @@ def _check_if_ways_in_multi(list, longer_list): # Parameters crs = "EPSG:4326" # Correct crs for OSM data - min_voltage_ac = 60000 # [unit: V] Minimum voltage value to filter AC lines. + voltages = snakemake.params.voltages + + min_voltage_ac = ( + min(voltages) * 1e3 + ) # [unit: V] Minimum voltage value to filter AC lines. min_voltage_dc = 150000 # [unit: V] Minimum voltage value to filter DC links. logger.info("---") @@ -1605,7 +1794,15 @@ def _check_if_ways_in_multi(list, longer_list): # Cleaning process df_substations = _import_substations(path_substations) + df_substations["voltage"] = _clean_voltage(df_substations["voltage"]) + # Clean dates and construction status + df_substations["under_construction"] = ( + (df_substations["construction"] == "substation") + | (df_substations["construction:power"] == "substation") + | (df_substations["power"] == "construction") + ) + df_substations["start_date"] = _clean_date(df_substations["start_date"]) # Extract converter subset df_substations.reset_index(drop=True, inplace=True) @@ -1625,7 +1822,17 @@ def _check_if_ways_in_multi(list, longer_list): # Merge touching polygons df_substations = _merge_touching_polygons(df_substations) df_substations = _create_substations_poi(df_substations) + + # Aggregate substations if needed + df_substations = _aggregate_substations(df_substations) + + # Store DC switching stations + df_dc_switching = df_substations.query( + "frequency=='0' & substation=='switching'" + ).copy() + df_substations = _finalise_substations(df_substations) + df_dc_switching = _finalise_substations(df_dc_switching) # Create polygon GeoDataFrame to remove lines within substations gdf_substations_polygon = gpd.GeoDataFrame( @@ -1633,9 +1840,20 @@ def _check_if_ways_in_multi(list, longer_list): geometry="polygon", crs=crs, ) - gdf_substations_polygon["geometry"] = gdf_substations_polygon.polygon.copy() + gdf_dc_switching = gpd.GeoDataFrame( + df_dc_switching.drop(columns=["polygon"]), + geometry="geometry", + crs=crs, + ) + gdf_dc_switching_polygon = gpd.GeoDataFrame( + df_dc_switching[["bus_id", "polygon", "voltage"]], + geometry="polygon", + crs=crs, + ) + gdf_dc_switching_polygon["geometry"] = gdf_dc_switching_polygon.polygon.copy() + # Continue cleaning of converters logger.info("---") logger.info("CONVERTERS") @@ -1645,7 +1863,9 @@ def _check_if_ways_in_multi(list, longer_list): ) df_converters.reset_index(drop=True, inplace=True) gdf_converters = gpd.GeoDataFrame( - df_converters[["id", "geometry"]], geometry="geometry", crs=crs + df_converters[["id", "under_construction", "start_date", "geometry"]], + geometry="geometry", + crs=crs, ) ### Lines/Cables relations @@ -1659,6 +1879,15 @@ def _check_if_ways_in_multi(list, longer_list): df_lines_cables_relation = df_routes_relation.copy() df_lines_cables_relation = _drop_duplicate_lines(df_lines_cables_relation) + df_lines_cables_relation["under_construction"] = ( + (df_lines_cables_relation["construction"].isin(["line", "cable"])) + | (df_lines_cables_relation["construction:power"].isin(["line", "cable"])) + | (df_lines_cables_relation["power"] == "construction") + ) + df_lines_cables_relation["start_date"] = _clean_date( + df_lines_cables_relation["start_date"] + ) + df_lines_cables_relation.loc[:, "voltage"] = _clean_voltage( df_lines_cables_relation["voltage"] ) @@ -1728,7 +1957,15 @@ def _check_if_ways_in_multi(list, longer_list): df_lines_cables_relation.rename(columns={"id": "line_id"}, inplace=True) df_lines_cables_relation = df_lines_cables_relation[ - ["line_id", "circuits", "voltage", "geometry", "contains"] + [ + "line_id", + "circuits", + "voltage", + "under_construction", + "start_date", + "geometry", + "contains", + ] ] df_lines_cables_relation["circuits"] = df_lines_cables_relation["circuits"].astype( int @@ -1762,6 +1999,13 @@ def _check_if_ways_in_multi(list, longer_list): # Cleaning process df_lines.loc[:, "voltage"] = _clean_voltage(df_lines["voltage"]) + # Clean dates and construction status + df_lines["under_construction"] = ( + (df_lines["construction"].isin(["line", "cable"])) + | (df_lines["construction:power"].isin(["line", "cable"])) + | (df_lines["power"] == "construction") + ) + df_lines["start_date"] = _clean_date(df_lines["start_date"]) df_lines, list_voltages = _filter_by_voltage(df_lines, min_voltage=min_voltage_ac) df_lines.loc[:, "circuits"] = _clean_circuits(df_lines["circuits"]) df_lines.loc[:, "cables"] = _clean_cables(df_lines["cables"]) @@ -1797,6 +2041,8 @@ def _check_if_ways_in_multi(list, longer_list): [df_lines, df_lines_cables_relation], axis=0, ignore_index=True ) + df_lines = _aggregate_lines(df_lines) + # Create GeoDataFrame gdf_lines = gpd.GeoDataFrame(df_lines, geometry="geometry", crs=crs) gdf_lines = _remove_lines_within_substations(gdf_lines, gdf_substations_polygon) @@ -1820,6 +2066,15 @@ def _check_if_ways_in_multi(list, longer_list): ) df_links = _drop_duplicate_lines(df_links) + + # Clean dates and construction status + df_links["under_construction"] = ( + (df_links["construction"].isin(["line", "cable"])) + | (df_links["construction:power"].isin(["line", "cable"])) + | (df_links["power"] == "construction") + ) + df_links["start_date"] = _clean_date(df_links["start_date"]) + df_links.loc[:, "voltage"] = _clean_voltage(df_links["voltage"]) df_links, list_voltages = _filter_by_voltage(df_links, min_voltage=min_voltage_dc) # Keep only highest voltage of split string @@ -1863,6 +2118,12 @@ def _check_if_ways_in_multi(list, longer_list): ) logger.info(f"Exporting clean substations to {output_substations}") gdf_substations.to_file(output_substations, driver="GeoJSON") + logger.info("Exporting clean DC switching stations with polygon shapes.") + gdf_dc_switching_polygon.drop(columns=["geometry"]).to_file( + snakemake.output["dc_switching_polygon"], driver="GeoJSON" + ) + logger.info("Exporting clean DC switching stations as subset of substations.") + gdf_dc_switching.to_file(snakemake.output["dc_switching"], driver="GeoJSON") logger.info(f"Exporting converter polygons to {output_converters_polygon}") gdf_converters.to_file(output_converters_polygon, driver="GeoJSON") logger.info(f"Exporting clean lines to {output_lines}") diff --git a/scripts/definitions/heat_source.py b/scripts/definitions/heat_source.py index 6aba369787..2ba24e6019 100644 --- a/scripts/definitions/heat_source.py +++ b/scripts/definitions/heat_source.py @@ -35,7 +35,7 @@ class HeatSourceType(Enum): class HeatSource(Enum): """ - Enumeration representing different heat sources for heat pumps and direct utilisation. + Enumeration representing different heat sources for heat pumps and utilisation. Heat sources are categorized by their characteristics: @@ -44,11 +44,9 @@ class HeatSource(Enum): **Limited sources requiring a bus** (GEOTHERMAL, RIVER_WATER, PTES): Have spatial/temporal constraints, require resource tracking via buses. - May support direct utilisation or preheating depending on temperature. - - **Sources with preheater** (PTES): - When source temperature is between return and forward temperatures, - can preheat return flow before heat pump provides final lift. + A utilisation link splits source heat into direct DH contribution + (fraction 1 − b) and HP input (fraction b), where b is the + boosting ratio from ``build_heat_source_utilisation_profiles``. Attributes ---------- @@ -68,7 +66,7 @@ class HeatSource(Enum): See Also -------- HeatSystem : Defines heat system types (urban central, urban decentral, rural). - build_heat_source_utilisation_profiles : Calculates utilisation profiles for heat sources. + build_heat_source_utilisation_profiles : Calculates boosting ratio profiles for heat sources. build_cop_profiles : Calculates COP profiles for heat pumps using these sources. """ @@ -78,6 +76,16 @@ class HeatSource(Enum): AIR = "air" GROUND = "ground" PTES = "ptes" + PTES_LAYER_0 = "ptes layer 0" + PTES_LAYER_1 = "ptes layer 1" + PTES_LAYER_2 = "ptes layer 2" + PTES_LAYER_3 = "ptes layer 3" + PTES_LAYER_4 = "ptes layer 4" + PTES_LAYER_5 = "ptes layer 5" + PTES_LAYER_6 = "ptes layer 6" + PTES_LAYER_7 = "ptes layer 7" + PTES_LAYER_8 = "ptes layer 8" + PTES_LAYER_9 = "ptes layer 9" # PTX excess heat sources ELECTROLYSIS_WASTE = "electrolysis_waste" FISCHER_TROPSCH_WASTE = "fischer_tropsch_waste" @@ -111,7 +119,19 @@ def source_type(self) -> HeatSourceType: return HeatSourceType.INEXHAUSTIBLE elif self in [HeatSource.GEOTHERMAL, HeatSource.RIVER_WATER]: return HeatSourceType.SUPPLY_LIMITED - elif self == HeatSource.PTES: + elif self in [ + HeatSource.PTES, + HeatSource.PTES_LAYER_0, + HeatSource.PTES_LAYER_1, + HeatSource.PTES_LAYER_2, + HeatSource.PTES_LAYER_3, + HeatSource.PTES_LAYER_4, + HeatSource.PTES_LAYER_5, + HeatSource.PTES_LAYER_6, + HeatSource.PTES_LAYER_7, + HeatSource.PTES_LAYER_8, + HeatSource.PTES_LAYER_9, + ]: return HeatSourceType.STORAGE else: return HeatSourceType.PROCESS_WASTE @@ -154,6 +174,24 @@ def requires_bus(self) -> bool: return self.source_type != HeatSourceType.INEXHAUSTIBLE @property + def supports_preheating(self) -> bool: + """ + Check if the heat source supports preheating district heating return flow. + + Preheating sources have temperatures between return and forward + (T_ret <= T_src < T_fwd). The source directly heats return flow, and a + heat pump boosts only the remaining fraction to forward temperature. + + Non-preheating limited sources (e.g., river_water) act as HP evaporator + input: all source heat enters the HP cold side. + + Returns + ------- + bool + True for PTES and GEOTHERMAL, False otherwise. + """ + return self in [HeatSource.PTES, HeatSource.GEOTHERMAL] + def requires_generator(self) -> bool: """ Check if the heat source requires a generator component in the network. @@ -289,7 +327,10 @@ def requires_heat_pump(self, ptes_discharge_resistive_boosting: bool) -> bool: bool False for PTES with resistive boosting, True otherwise. """ - if self == HeatSource.PTES and ptes_discharge_resistive_boosting: + if ( + self.source_type == HeatSourceType.STORAGE + and ptes_discharge_resistive_boosting + ): logging.info( "PTES configured with resistive boosting during discharge; " "heat pump not built for PTES." @@ -534,12 +575,13 @@ def heat_carrier(self, heat_system) -> str: """ return f"{heat_system} {self} heat" - def preheater_input_carrier(self, heat_system) -> str: + def intermediate_carrier(self, heat_system) -> str: """ - Get the carrier name for partially-cooled heat from this source. + Get the carrier name for the intermediate bus between utilisation link and HP. - Used in cascading temperature utilisation: heat that has been used - for direct supply but still has usable thermal energy. + For preheating sources, the HP produces onto this bus and the utilisation + link consumes from it. For evaporator sources, the utilisation link + produces onto this bus and the HP draws from it as cold-side input. Parameters ---------- @@ -549,32 +591,45 @@ def preheater_input_carrier(self, heat_system) -> str: Returns ------- str - Carrier name with '-pre-heater input' suffix in format '{heat_system} {source} pre-heater input'. + Carrier name in format '{heat_system} {source} heat heat pump output'. """ - return f"{self.heat_carrier(heat_system)} pre-heater input" + return f"{self.heat_carrier(heat_system)} heat pump output" - def heat_pump_input_carrier(self, heat_system) -> str: + def intermediate_bus(self, nodes, heat_system) -> str: """ - Get the carrier name for fully-cooled heat from this source. + Get the intermediate bus connecting the utilisation link and heat pump. - Represents heat pump input, for - final temperature lift by heat pump. + For limited sources (requires_bus=True), returns the dedicated + intermediate bus. For preheating sources, the HP produces onto this bus + and the utilisation link consumes from it. For evaporator sources, the + utilisation link produces onto this bus and the HP draws from it as + cold-side input. For inexhaustible sources, returns an empty string. Parameters ---------- + nodes : pd.Index or str + Node identifier(s). heat_system : HeatSystem or str The heat system (e.g., 'urban central'). Returns ------- str - Carrier name with '-heat-pump input' suffix in format '{heat_system} {source} heat-pump input'. + Bus name for evaporator sources, empty string otherwise. """ - return f"{self.heat_carrier(heat_system)} heat-pump input" + if self.requires_bus and not self.supports_preheating: + return nodes + f" {self.intermediate_carrier(heat_system)}" + else: + return "" - def preheater_input_bus(self, nodes, heat_system) -> str: + def hp_output_bus(self, nodes, heat_system) -> str: """ - Get bus name for partially-cooled heat at the given nodes. + Get the bus where the heat pump outputs its heat (bus0). + + For preheating sources, the HP outputs to the intermediate bus. + For all other sources, the HP outputs directly to the DH heat bus. + This always represents bus0 of the (reverse-operating) HP link, + preserving correct investment sizing. Parameters ---------- @@ -586,9 +641,36 @@ def preheater_input_bus(self, nodes, heat_system) -> str: Returns ------- str - Bus name combining nodes with medium-temperature carrier in format 'nodes + {heat_system} {source} pre-heater input'. + The HP output bus name. + """ + if self.supports_preheating: + return nodes + f" {self.intermediate_carrier(heat_system)}" + else: + return nodes + f" {heat_system} heat" + + def hp_eff2(self, cop): + """ + Get efficiency2 for the heat pump link. + + For preheating sources, eff2=0 (bus2 is unused). For evaporator + sources, eff2 = 1 - 1/COP represents the fraction of HP output + drawn from the cold side. For inexhaustible sources the same + formula applies but bus2="" so the value is irrelevant. + + Parameters + ---------- + cop : float or pd.DataFrame + The coefficient of performance of the heat pump. + + Returns + ------- + float or pd.DataFrame + 0 for preheating sources, 1 - 1/COP otherwise. """ - return nodes + f" {self.preheater_input_carrier(heat_system)}" + if self.supports_preheating: + return 0 + else: + return 1 - 1 / cop def resource_bus(self, nodes, heat_system) -> str: """ diff --git a/scripts/definitions/heat_system.py b/scripts/definitions/heat_system.py index b7ad87994b..6302d521ea 100644 --- a/scripts/definitions/heat_system.py +++ b/scripts/definitions/heat_system.py @@ -229,17 +229,18 @@ def heat_pump_costs_name(self, heat_source: HeatSource | str) -> str: heat_source = HeatSource(heat_source) # Check if this is an excess-heat-sourced heat pump + # Includes PTES (all layers), geothermal, water sources, and PTX waste heat sources if heat_source in [ HeatSource.PTES, HeatSource.GEOTHERMAL, HeatSource.SEA_WATER, HeatSource.RIVER_WATER, - HeatSource.ELECTROLYSIS_waste, - HeatSource.FISCHER_TROPSCH_waste, - HeatSource.SABATIER_waste, - HeatSource.HABER_BOSCH_waste, - HeatSource.METHANOLISATION_waste, - HeatSource.FUEL_CELL_waste, + HeatSource.ELECTROLYSIS_WASTE, + HeatSource.FISCHER_TROPSCH_WASTE, + HeatSource.SABATIER_WASTE, + HeatSource.HABER_BOSCH_WASTE, + HeatSource.METHANOLISATION_WASTE, + HeatSource.FUEL_CELL_WASTE, ]: return f"{self.central_or_decentral} excess-heat-sourced heat pump" else: diff --git a/scripts/determine_availability_matrix.py b/scripts/determine_availability_matrix.py index 3b3262c5de..ea1e249fe6 100644 --- a/scripts/determine_availability_matrix.py +++ b/scripts/determine_availability_matrix.py @@ -60,8 +60,11 @@ import atlite import geopandas as gpd +import matplotlib.pyplot as plt import numpy as np import xarray as xr +from atlite.gis import shape_availability +from rasterio.plot import show from scripts._helpers import configure_logging, load_cutout, set_scenario_config @@ -73,7 +76,7 @@ from scripts._helpers import mock_snakemake snakemake = mock_snakemake( - "build_renewable_profiles", clusters=100, technology="onwind" + "determine_availability_matrix", clusters="adm", technology="offwind-dc" ) configure_logging(snakemake) set_scenario_config(snakemake) @@ -166,6 +169,16 @@ f"Completed landuse availability calculation for {technology} ({duration:2.2f}s)" ) + if params.get("plot_availability_matrix", False): + logger.info(f"Plotting landuse availability matrix for {technology}.") + band, transform = shape_availability( + regions.geometry.to_crs(excluder.crs), excluder + ) + fig, ax = plt.subplots(figsize=(10, 10)) + regions.to_crs(excluder.crs).plot(ax=ax, color="none") + show(band, transform=transform, cmap="Greens", ax=ax) + plt.savefig(snakemake.output[0].replace(".nc", ".png"), dpi=300) + # For Moldova and Ukraine: Overwrite parts not covered by Corine with # externally determined available areas if "availability_matrix_MD_UA" in snakemake.input.keys(): diff --git a/scripts/determine_availability_matrix_MD_UA.py b/scripts/determine_availability_matrix_MD_UA.py index 79b788e8fc..27a091db60 100644 --- a/scripts/determine_availability_matrix_MD_UA.py +++ b/scripts/determine_availability_matrix_MD_UA.py @@ -39,6 +39,9 @@ def get_wdpa_layer_name(wdpa_fn, layer_substring): configure_logging(snakemake) set_scenario_config(snakemake) + pts_tmp_fn = None + plg_tmp_fn = None + nprocesses = int(snakemake.threads) noprogress = not snakemake.config["atlite"].get("show_progress", True) config = snakemake.params["renewable"][snakemake.wildcards.technology] @@ -160,7 +163,7 @@ def get_wdpa_layer_name(wdpa_fn, layer_substring): availability = cutout.availabilitymatrix(regions, excluder, **kwargs) for fn in [pts_tmp_fn, plg_tmp_fn]: - if os.path.exists(fn): + if fn and os.path.exists(fn): os.remove(fn) availability = availability.sel(bus=buses) diff --git a/scripts/lib/validation/__init__.py b/scripts/lib/validation/__init__.py new file mode 100644 index 0000000000..3f0279ea2d --- /dev/null +++ b/scripts/lib/validation/__init__.py @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +import scripts.lib.validation.config_updates diff --git a/scripts/lib/validation/config/__init__.py b/scripts/lib/validation/config/__init__.py index 2a291001f1..4257752a97 100644 --- a/scripts/lib/validation/config/__init__.py +++ b/scripts/lib/validation/config/__init__.py @@ -5,240 +5,35 @@ """ Config validation for PyPSA-EUR. -The schema is exported to both `config/config.default.yaml` and `config/schema.json`. +The schema is exported to both `config/config.default.yaml` and `config/schema.default.json`. The json schema is also contributed to the schemastore.org and matches `**/pypsa-eur*/config/*.yaml` to get IDE support without additional configuration. """ import re -from typing import Literal -from pydantic import BaseModel, ConfigDict, Field, ValidationError, model_validator +from pydantic import ValidationError from ruamel.yaml import YAML -from scripts.lib.validation.config._base import ConfigModel -from scripts.lib.validation.config.adjustments import AdjustmentsConfig -from scripts.lib.validation.config.atlite import AtliteConfig -from scripts.lib.validation.config.biomass import BiomassConfig -from scripts.lib.validation.config.clustering import ClusteringConfig -from scripts.lib.validation.config.co2_budget import Co2BudgetConfig -from scripts.lib.validation.config.conventional import ConventionalConfig -from scripts.lib.validation.config.costs import CostsConfig -from scripts.lib.validation.config.countries import CountriesConfig -from scripts.lib.validation.config.data import DataConfig -from scripts.lib.validation.config.electricity import ElectricityConfig -from scripts.lib.validation.config.enable import EnableConfig -from scripts.lib.validation.config.energy import EnergyConfig -from scripts.lib.validation.config.existing_capacities import ExistingCapacitiesConfig -from scripts.lib.validation.config.foresight import ForesightConfig -from scripts.lib.validation.config.industry import IndustryConfig -from scripts.lib.validation.config.lines import LinesConfig -from scripts.lib.validation.config.links import LinksConfig -from scripts.lib.validation.config.load import LoadConfig -from scripts.lib.validation.config.overpass_api import OverpassApiConfig -from scripts.lib.validation.config.pypsa_eur import PypsaEurConfig -from scripts.lib.validation.config.renewable import RenewableConfig -from scripts.lib.validation.config.run import RunConfig -from scripts.lib.validation.config.scenario import ScenarioConfig -from scripts.lib.validation.config.sector import SectorConfig -from scripts.lib.validation.config.snapshots import SnapshotsConfig -from scripts.lib.validation.config.solar_thermal import SolarThermalConfig -from scripts.lib.validation.config.solving import SolvingConfig -from scripts.lib.validation.config.transformers import TransformersConfig -from scripts.lib.validation.config.transmission_projects import ( - TransmissionProjectsConfig, -) - - -class LoggingConfig(ConfigModel): - """Configuration for top level `logging` settings.""" - - level: Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] = Field( - "INFO", - description="Restrict console outputs to all infos, warning or errors only", - ) - format: str = Field( - "%(levelname)s:%(name)s:%(message)s", - description="Custom format for log messages. See `LogRecord `_ attributes.", - ) - - -class RemoteConfig(ConfigModel): - """Configuration for top level `remote` settings.""" - - ssh: str = Field( - "", - description="Optionally specify the SSH of a remote cluster to be synchronized.", - ) - path: str = Field( - "", - description="Optionally specify the file path within the remote cluster to be synchronized.", - ) - - -class ConfigSchema(BaseModel): - """ - Combined configuration schema for PyPSA-EUR. - """ - - # TODO Change to extra='forbid' once schema covers all config options - # For soft-forks it is recommended to either extend the schema for full config - # coverage or allow extra fields with extra='allow' - model_config = ConfigDict(extra="allow", title="PyPSA-Eur Configuration") - - # Top-level fields (from TopLevelConfig) - version: str = Field( - "v2025.07.0", description="Version of PyPSA-Eur. Descriptive only." - ) - tutorial: bool = Field( - False, - description="Switch to retrieve the tutorial data set instead of the full data set.", - ) - logging: LoggingConfig = Field( - default_factory=LoggingConfig, - description="Logging configuration for the workflow", - ) - remote: RemoteConfig = Field( - default_factory=RemoteConfig, - description="Configuration for remote workflow execution", - ) - - run: RunConfig = Field( - default_factory=RunConfig, - description="Run configuration for PyPSA-EUR workflow execution.", - ) - foresight: ForesightConfig = Field( - default_factory=ForesightConfig, - description="Foresight mode for the optimization. See Foresight Options for detailed explanations.", - ) - scenario: ScenarioConfig = Field( - default_factory=ScenarioConfig, - description="Scenario configuration defining wildcards for the workflow.", - ) - countries: CountriesConfig = Field( - default_factory=CountriesConfig, - description="European countries defined by their Two-letter country codes (ISO 3166-1) which should be included in the energy system model.", - ) - snapshots: SnapshotsConfig = Field( - default_factory=SnapshotsConfig, - description="Configuration for the time period snapshots.", - ) - enable: EnableConfig = Field( - default_factory=EnableConfig, - description="Flags to enable/disable workflow features.", - ) - co2_budget: Co2BudgetConfig | None = Field( - default_factory=Co2BudgetConfig, - description="CO2 budget as fraction of 1990 emissions per planning horizon year.", - ) - electricity: ElectricityConfig = Field( - default_factory=ElectricityConfig, - description="Electricity sector configuration.", - ) - atlite: AtliteConfig = Field( - default_factory=AtliteConfig, - description="Atlite cutout configuration for weather data.", - ) - renewable: RenewableConfig = Field( - default_factory=RenewableConfig, - description="Renewable energy technologies configuration.", - ) - conventional: ConventionalConfig = Field( - default_factory=ConventionalConfig, - description="Conventional power plants configuration.", - ) - lines: LinesConfig = Field( - default_factory=LinesConfig, - description="Transmission lines configuration.", - ) - links: LinksConfig = Field( - default_factory=LinksConfig, - description="HVDC links configuration.", - ) - transmission_projects: TransmissionProjectsConfig = Field( - default_factory=TransmissionProjectsConfig, - description="Transmission projects configuration.", - ) - transformers: TransformersConfig = Field( - default_factory=TransformersConfig, - description="Transformers configuration.", - ) - load: LoadConfig = Field( - default_factory=LoadConfig, - description="Electrical load configuration.", - ) - pypsa_eur: PypsaEurConfig = Field( - default_factory=PypsaEurConfig, - description="PyPSA-Eur component filtering configuration.", - ) - energy: EnergyConfig = Field( - default_factory=EnergyConfig, - description="Energy totals configuration.", - ) - biomass: BiomassConfig = Field( - default_factory=BiomassConfig, - description="Biomass configuration.", - ) - solar_thermal: SolarThermalConfig = Field( - default_factory=SolarThermalConfig, - description="Solar thermal configuration.", - ) - existing_capacities: ExistingCapacitiesConfig = Field( - default_factory=ExistingCapacitiesConfig, - description="Existing capacities grouping configuration.", - ) - sector: SectorConfig = Field( - default_factory=SectorConfig, - description="Sector coupling configuration.", - ) - industry: IndustryConfig = Field( - default_factory=IndustryConfig, - description="Industry sector configuration.", - ) - costs: CostsConfig = Field( - default_factory=CostsConfig, - description="Cost assumptions configuration.", - ) - clustering: ClusteringConfig = Field( - default_factory=ClusteringConfig, - description="Network clustering configuration.", - ) - adjustments: AdjustmentsConfig = Field( - default_factory=AdjustmentsConfig, - description="Network adjustments configuration.", - ) - solving: SolvingConfig = Field( - default_factory=SolvingConfig, - description="Solver and optimization configuration.", - ) - data: DataConfig = Field( - default_factory=DataConfig, - description="Data source configuration.", - ) - overpass_api: OverpassApiConfig = Field( - default_factory=OverpassApiConfig, - description="Overpass API configuration for OSM data retrieval.", - ) - - @model_validator(mode="before") - @classmethod - def check_no_secrets_section(cls, data): - """Prevent secrets from being stored in config.""" - if isinstance(data, dict) and "secrets" in data: - raise ValueError( - "The 'secrets:' section is no longer supported in config to avoid " - "leaking credentials. Use environment variables instead (e.g., " - "CORINE_API_TOKEN). You can set these in a .env file in the project root." - ) - return data +from scripts.lib.validation.config._base import _registry +from scripts.lib.validation.config._schema import ConfigSchema def validate_config(config: dict) -> ConfigSchema: """Validate config dict against schema.""" - return ConfigSchema(**config) - - -def generate_config_defaults(path: str = "config/config.default.yaml") -> dict: + config_schema = ConfigSchema + name = config_schema._name.default + for item in _registry: + updater_config = item(config_schema) + config_schema = updater_config.update() + if updater_config.name: + name += f".{updater_config.name}" + validated_config = config_schema(**config) + validated_config._name = name + return validated_config + + +def generate_config_defaults(path: str = "config/config.{configname}.yaml") -> dict: """Generate config defaults YAML file and return the defaults dict.""" from ruamel.yaml.comments import CommentedMap @@ -248,7 +43,8 @@ def convert_to_field_name(key: str) -> str: # by_alias is needed to export dash-case instead of snake_case (which are some set aliases) # the goal should be to use snake_case consistently - defaults = ConfigSchema().model_dump(by_alias=True) + config = validate_config({}) + defaults = config.model_dump(by_alias=True) # Create YAML instance with custom settings yaml_writer = YAML() @@ -273,7 +69,9 @@ def str_representer(dumper, data): data = CommentedMap() # Add yaml-language-server comment at the very top (before first key) - data.yaml_set_start_comment("yaml-language-server: $schema=./schema.json") + data.yaml_set_start_comment( + f"yaml-language-server: $schema=./schema.{config._name}.json" + ) for key, value in defaults.items(): data[key] = value @@ -283,13 +81,13 @@ def str_representer(dumper, data): data.yaml_set_comment_before_after_key(key, before=f"\ndocs in {docs_url}") # Write to file - with open(path, "w") as f: + with open(path.format(configname=config._name), "w") as f: yaml_writer.dump(data, f) return defaults -def generate_config_schema(path: str = "config/schema.json") -> dict: +def generate_config_schema(path: str = "config/schema.{configname}.json") -> dict: """Generate JSON schema file and return the schema dict.""" import json import math @@ -376,14 +174,15 @@ def rst_to_md(text): return [convert_rst_to_markdown(item) for item in obj] return obj - schema = ConfigSchema.model_json_schema() + config = validate_config({}) + schema = config.model_json_schema() defs = schema.get("$defs", {}) schema = resolve_refs(schema, defs) schema = sanitize_for_json(schema) schema = remove_nested_titles(schema) schema = remove_object_type(schema) schema = convert_rst_to_markdown(schema) - with open(path, "w") as f: + with open(path.format(configname=config._name), "w") as f: json.dump(schema, f, indent=2) f.write("\n") return schema diff --git a/scripts/lib/validation/config/_base.py b/scripts/lib/validation/config/_base.py index e9606d6890..fcdad15207 100644 --- a/scripts/lib/validation/config/_base.py +++ b/scripts/lib/validation/config/_base.py @@ -4,10 +4,17 @@ """Base classes for config validation models.""" +from abc import ABC, abstractmethod from collections.abc import Iterator -from typing import Any +from typing import TYPE_CHECKING, Any, TypeVar, overload -from pydantic import BaseModel +from pydantic import BaseModel, create_model + +if TYPE_CHECKING: + from scripts.lib.validation.config import ConfigSchema + +_registry: list[type["ConfigUpdater"]] = [] +T = TypeVar("T", bound=type[BaseModel]) class ConfigModel(BaseModel): @@ -36,3 +43,79 @@ def values(self) -> Iterator[Any]: def items(self) -> Iterator[tuple[str, Any]]: """Enable: config.items().""" return ((k, getattr(self, k)) for k in self.model_fields.keys()) + + +class ConfigUpdater(ABC): + """Abstract base class for updating the PyPSA-Eur base config""" + + def __init__(self, base_config: type["ConfigSchema"]): + self.base_config = base_config + + def __init_subclass__(cls): + """Register any subclasses so they are automatically captured for use later.""" + super().__init_subclass__() + _registry.append(cls) + + @property + @abstractmethod + def name(self) -> str: + """ + Name of custom config. + If not an empty string, this name will be appended to the default config filename when the config file is saved, i.e.: + + `config.default..{self.name}..yaml` + """ + + @abstractmethod + def update(self) -> type["ConfigSchema"]: + """Function in which the custom config schema is created and returned.""" + + @overload + def _apply_updates( + self, + __base__: None = None, + __doc__: str | None = None, + **updates: tuple[Any, Any], + ) -> type["ConfigSchema"]: ... + + @overload + def _apply_updates( + self, __base__: T, __doc__: str | None = None, **updates: tuple[Any, Any] + ) -> T: ... + + def _apply_updates( + self, + __base__: T | None = None, + __doc__: str | None = None, + **updates: tuple[Any, Any], + ) -> T: + """ + Helper function to apply updates to a pydantic model. + + Updates should come in the form of a type (can be another pydantic model) and a pydantic.Field with at least a default value. + + Parameters + ---------- + __base__ : type[pydantic.BaseModel] | None, optional + Optional base model to use instead of the class-level base config. + __doc__ : str, optional + Optional docstring for the new config model. + If not provided, the docstring of the base model will be used. + **updates : tuple[Any, Any] + The actual updates to apply, in the form of field_name=(type, Field(...)). + + Returns + ------- + Updated config model with the new fields included. + """ + base: T | type[ConfigSchema] + if __base__ is None: + base = self.base_config + else: + base = __base__ + return create_model( + base.__name__, + __doc__=__doc__ or base.__doc__, + __base__=base, + **updates, + ) diff --git a/scripts/lib/validation/config/_schema.py b/scripts/lib/validation/config/_schema.py new file mode 100644 index 0000000000..15e3543424 --- /dev/null +++ b/scripts/lib/validation/config/_schema.py @@ -0,0 +1,227 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + + +from typing import Literal + +from pydantic import BaseModel, ConfigDict, Field, model_validator + +from scripts.lib.validation.config._base import ConfigModel +from scripts.lib.validation.config.adjustments import AdjustmentsConfig +from scripts.lib.validation.config.atlite import AtliteConfig +from scripts.lib.validation.config.biomass import BiomassConfig +from scripts.lib.validation.config.clustering import ClusteringConfig +from scripts.lib.validation.config.co2_budget import Co2BudgetConfig +from scripts.lib.validation.config.conventional import ConventionalConfig +from scripts.lib.validation.config.costs import CostsConfig +from scripts.lib.validation.config.countries import CountriesConfig +from scripts.lib.validation.config.data import DataConfig +from scripts.lib.validation.config.electricity import ElectricityConfig +from scripts.lib.validation.config.enable import EnableConfig +from scripts.lib.validation.config.energy import EnergyConfig +from scripts.lib.validation.config.existing_capacities import ExistingCapacitiesConfig +from scripts.lib.validation.config.foresight import ForesightConfig +from scripts.lib.validation.config.industry import IndustryConfig +from scripts.lib.validation.config.lines import LinesConfig +from scripts.lib.validation.config.links import LinksConfig +from scripts.lib.validation.config.load import LoadConfig +from scripts.lib.validation.config.overpass_api import OverpassApiConfig +from scripts.lib.validation.config.pypsa_eur import PypsaEurConfig +from scripts.lib.validation.config.renewable import RenewableConfig +from scripts.lib.validation.config.run import RunConfig +from scripts.lib.validation.config.scenario import ScenarioConfig +from scripts.lib.validation.config.sector import SectorConfig +from scripts.lib.validation.config.snapshots import SnapshotsConfig +from scripts.lib.validation.config.solar_thermal import SolarThermalConfig +from scripts.lib.validation.config.solving import SolvingConfig +from scripts.lib.validation.config.transformers import TransformersConfig +from scripts.lib.validation.config.transmission_projects import ( + TransmissionProjectsConfig, +) + + +class LoggingConfig(ConfigModel): + """Configuration for top level `logging` settings.""" + + level: Literal["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"] = Field( + "INFO", + description="Restrict console outputs to all infos, warning or errors only", + ) + format: str = Field( + "%(levelname)s:%(name)s:%(message)s", + description="Custom format for log messages. See `LogRecord `_ attributes.", + ) + + +class RemoteConfig(ConfigModel): + """Configuration for top level `remote` settings.""" + + ssh: str = Field( + "", + description="Optionally specify the SSH of a remote cluster to be synchronized.", + ) + path: str = Field( + "", + description="Optionally specify the file path within the remote cluster to be synchronized.", + ) + + +class ConfigSchema(BaseModel): + """ + Combined configuration schema for PyPSA-EUR. + """ + + # TODO Change to extra='forbid' once schema covers all config options + # For soft-forks it is recommended to either extend the schema for full config + # coverage or allow extra fields with extra='allow' + model_config = ConfigDict(extra="allow", title="PyPSA-Eur Configuration") + + _name: str = "default" + """internal attribute to track the config filename following the application of config updates""" + + # Top-level fields (from TopLevelConfig) + version: str = Field( + "v2026.02.0", description="Version of PyPSA-Eur. Descriptive only." + ) + tutorial: bool = Field( + False, + description="Switch to retrieve the tutorial data set instead of the full data set.", + ) + logging: LoggingConfig = Field( + default_factory=LoggingConfig, + description="Logging configuration for the workflow", + ) + remote: RemoteConfig = Field( + default_factory=RemoteConfig, + description="Configuration for remote workflow execution", + ) + + run: RunConfig = Field( + default_factory=RunConfig, + description="Run configuration for PyPSA-EUR workflow execution.", + ) + foresight: ForesightConfig = Field( + default_factory=ForesightConfig, + description="Foresight mode for the optimization. See Foresight Options for detailed explanations.", + ) + scenario: ScenarioConfig = Field( + default_factory=ScenarioConfig, + description="Scenario configuration defining wildcards for the workflow.", + ) + countries: CountriesConfig = Field( + default_factory=CountriesConfig, + description="European countries defined by their Two-letter country codes (ISO 3166-1) which should be included in the energy system model.", + ) + snapshots: SnapshotsConfig = Field( + default_factory=SnapshotsConfig, + description="Configuration for the time period snapshots.", + ) + enable: EnableConfig = Field( + default_factory=EnableConfig, + description="Flags to enable/disable workflow features.", + ) + co2_budget: Co2BudgetConfig | None = Field( + default_factory=Co2BudgetConfig, + description="CO2 budget as fraction of 1990 emissions per planning horizon year.", + ) + electricity: ElectricityConfig = Field( + default_factory=ElectricityConfig, + description="Electricity sector configuration.", + ) + atlite: AtliteConfig = Field( + default_factory=AtliteConfig, + description="Atlite cutout configuration for weather data.", + ) + renewable: RenewableConfig = Field( + default_factory=RenewableConfig, + description="Renewable energy technologies configuration.", + ) + conventional: ConventionalConfig = Field( + default_factory=ConventionalConfig, + description="Conventional power plants configuration.", + ) + lines: LinesConfig = Field( + default_factory=LinesConfig, + description="Transmission lines configuration.", + ) + links: LinksConfig = Field( + default_factory=LinksConfig, + description="HVDC links configuration.", + ) + transmission_projects: TransmissionProjectsConfig = Field( + default_factory=TransmissionProjectsConfig, + description="Transmission projects configuration.", + ) + transformers: TransformersConfig = Field( + default_factory=TransformersConfig, + description="Transformers configuration.", + ) + load: LoadConfig = Field( + default_factory=LoadConfig, + description="Electrical load configuration.", + ) + pypsa_eur: PypsaEurConfig = Field( + default_factory=PypsaEurConfig, + description="PyPSA-Eur component filtering configuration.", + ) + energy: EnergyConfig = Field( + default_factory=EnergyConfig, + description="Energy totals configuration.", + ) + biomass: BiomassConfig = Field( + default_factory=BiomassConfig, + description="Biomass configuration.", + ) + solar_thermal: SolarThermalConfig = Field( + default_factory=SolarThermalConfig, + description="Solar thermal configuration.", + ) + existing_capacities: ExistingCapacitiesConfig = Field( + default_factory=ExistingCapacitiesConfig, + description="Existing capacities grouping configuration.", + ) + sector: SectorConfig = Field( + default_factory=SectorConfig, + description="Sector coupling configuration.", + ) + industry: IndustryConfig = Field( + default_factory=IndustryConfig, + description="Industry sector configuration.", + ) + costs: CostsConfig = Field( + default_factory=CostsConfig, + description="Cost assumptions configuration.", + ) + clustering: ClusteringConfig = Field( + default_factory=ClusteringConfig, + description="Network clustering configuration.", + ) + adjustments: AdjustmentsConfig = Field( + default_factory=AdjustmentsConfig, + description="Network adjustments configuration.", + ) + solving: SolvingConfig = Field( + default_factory=SolvingConfig, + description="Solver and optimization configuration.", + ) + data: DataConfig = Field( + default_factory=DataConfig, + description="Data source configuration.", + ) + overpass_api: OverpassApiConfig = Field( + default_factory=OverpassApiConfig, + description="Overpass API configuration for OSM data retrieval.", + ) + + @model_validator(mode="before") + @classmethod + def check_no_secrets_section(cls, data): + """Prevent secrets from being stored in config.""" + if isinstance(data, dict) and "secrets" in data: + raise ValueError( + "The 'secrets:' section is no longer supported in config to avoid " + "leaking credentials. Use environment variables instead (e.g., " + "CORINE_API_TOKEN). You can set these in a .env file in the project root." + ) + return data diff --git a/scripts/lib/validation/config/atlite.py b/scripts/lib/validation/config/atlite.py index cce1a04283..61b101e12e 100644 --- a/scripts/lib/validation/config/atlite.py +++ b/scripts/lib/validation/config/atlite.py @@ -121,6 +121,10 @@ class AtliteConfig(BaseModel): False, description="Whether progressbar for atlite conversion processes should be shown. False saves time.", ) + plot_availability_matrix: bool = Field( + False, + description="Whether to plot the landuse availability matrix.", + ) cutouts: dict[str, _CutoutConfig] = Field( default_factory=lambda: { "europe-1940-2024-era5": _CutoutConfig( diff --git a/scripts/lib/validation/config/clustering.py b/scripts/lib/validation/config/clustering.py index b367a46793..ccc412631e 100644 --- a/scripts/lib/validation/config/clustering.py +++ b/scripts/lib/validation/config/clustering.py @@ -48,10 +48,6 @@ class _SimplifyNetworkConfig(BaseModel): False, description="Aggregates all nodes without power injection (positive or negative, i.e. demand or generation) to electrically closest ones.", ) - exclude_carriers: list[str] = Field( - default_factory=list, - description="List of carriers which will not be aggregated. If empty, all carriers will be aggregated.", - ) remove_stubs: bool = Field( True, description="Controls whether radial parts of the network should be recursively aggregated. Defaults to true.", @@ -142,9 +138,9 @@ class ClusteringConfig(BaseModel): default_factory=list, description="List of carriers which will not be aggregated. If empty, all carriers will be aggregated.", ) - consider_efficiency_classes: bool = Field( + consider_efficiency_classes: bool | list[float] = Field( False, - description="Aggregated each carriers into the top 10-quantile (high), the bottom 90-quantile (low), and everything in between (medium).", + description="Aggregate each carrier into efficiency classes defined by quantile boundaries. If True, uses [0.1, 0.9] as default quantiles (labels: Q0, Q10, Q90). If a list of floats, defines custom quantile boundaries, e.g. [0.1, 0.5, 0.9].", ) aggregation_strategies: _AggregationStrategiesConfig = Field( default_factory=_AggregationStrategiesConfig, diff --git a/scripts/lib/validation/config/conventional.py b/scripts/lib/validation/config/conventional.py index eccc2654a4..7094aa8a94 100644 --- a/scripts/lib/validation/config/conventional.py +++ b/scripts/lib/validation/config/conventional.py @@ -26,6 +26,11 @@ class ConventionalConfig(ConfigModel): False, description="Consider the monthly fluctuating fuel prices for each conventional generator. Refer to the CSV file 'data/validation/monthly_fuel_price.csv'.", ) + fuel_price_rolling_window: int = Field( + 6, + description="Monthly rolling mean window for fossil fuel prices smoothing.", + ge=1, + ) nuclear: dict[str, str | float] = Field( default_factory=lambda: {"p_max_pu": "data/nuclear_p_max_pu.csv"}, description="For any carrier/technology overwrite attributes as listed below.", diff --git a/scripts/lib/validation/config/costs.py b/scripts/lib/validation/config/costs.py index 3790742801..68069fda82 100644 --- a/scripts/lib/validation/config/costs.py +++ b/scripts/lib/validation/config/costs.py @@ -24,9 +24,13 @@ class _EmissionPricesConfig(ConfigModel): 0.0, description="Exogenous price of carbon-dioxide. In electricity-only runs it is added to the marginal costs of fossil-fuelled generators according to their carbon intensity, while for sector networks it applies to emissions ending up in CO2 atmosphere.", ) - co2_monthly_prices: bool = Field( + dynamic: bool = Field( False, - description="Add monthly cost for a carbon-dioxide price based on historical values built by the rule `build_monthly_prices`.", + description="Add time-varying cost for a carbon-dioxide price based on historical values built by the rule `build_co2_prices`.", + ) + rolling_window: int = Field( + 90, + description="Rolling window (in days) for smoothing the historical CO2 prices when `dynamic` is set to True.", ) diff --git a/scripts/lib/validation/config/data.py b/scripts/lib/validation/config/data.py index 3b814f8500..ae56656912 100644 --- a/scripts/lib/validation/config/data.py +++ b/scripts/lib/validation/config/data.py @@ -47,6 +47,10 @@ class DataConfig(BaseModel): default_factory=_DataSourceConfig, description="World Bank urban population data source configuration.", ) + worldbank_commodity_prices: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="World Bank commodity prices data source configuration.", + ) gem_europe_gas_tracker: _DataSourceConfig = Field( default_factory=_DataSourceConfig, description="GEM Europe Gas Tracker data source configuration.", @@ -55,6 +59,10 @@ class DataConfig(BaseModel): default_factory=_DataSourceConfig, description="GEM Global Cement and Concrete Tracker data source configuration.", ) + instrat_co2_prices: _DataSourceConfig = Field( + default_factory=lambda: _DataSourceConfig(source="primary"), + description="Instrat CO2 prices data source configuration.", + ) co2stop: _DataSourceConfig = Field( default_factory=_DataSourceConfig, description="CO2Stop data source configuration.", @@ -103,6 +111,10 @@ class DataConfig(BaseModel): default_factory=_DataSourceConfig, description="Seawater temperature data source configuration.", ) + swiss_energy_balances: _DataSourceConfig = Field( + default_factory=lambda: _DataSourceConfig(source="primary"), + description="Swiss energy balances data source configuration.", + ) synthetic_electricity_demand: _DataSourceConfig = Field( default_factory=lambda: _DataSourceConfig(source="primary"), description="Synthetic electricity demand data source configuration.", @@ -188,11 +200,11 @@ class DataConfig(BaseModel): description="TYNDP data source configuration.", ) powerplants: _DataSourceConfig = Field( - default_factory=lambda: _DataSourceConfig(source="primary"), + default_factory=_DataSourceConfig, description="Powerplants data source configuration.", ) costs: _DataSourceConfig = Field( - default_factory=lambda: _DataSourceConfig(source="primary"), + default_factory=_DataSourceConfig, description="Costs data source configuration.", ) country_runoff: _DataSourceConfig = Field( @@ -235,6 +247,18 @@ class DataConfig(BaseModel): default_factory=_DataSourceConfig, description="JRC ARDECO data source configuration.", ) + jrc_energy_atlas: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="JRC Energy Atlas data source configuration.", + ) + desnz_electricity_consumption: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="DESNZ (UK Department for Energy Security and Net Zero) electricity consumption data source configuration.", + ) + ons_lad: _DataSourceConfig = Field( + default_factory=_DataSourceConfig, + description="ONS (Office for National Statistics) Local Authority District data source configuration.", + ) bidding_zones_electricitymaps: _DataSourceConfig = Field( default_factory=_DataSourceConfig, description="Electricitymaps bidding zones data source configuration.", diff --git a/scripts/lib/validation/config/electricity.py b/scripts/lib/validation/config/electricity.py index 2fc9dd2b10..d343cb06cd 100644 --- a/scripts/lib/validation/config/electricity.py +++ b/scripts/lib/validation/config/electricity.py @@ -129,12 +129,16 @@ class _EstimateRenewableCapacitiesConfig(BaseModel): True, description="Activate routine to estimate renewable capacities in rule `add_electricity`. This option should not be used in combination with pathway planning `foresight: myopic` or `foresight: perfect` as renewable capacities are added differently in `add_existing_baseyear`.", ) - from_gem: bool = Field( + from_powerplantmatching: bool = Field( True, - description="Add renewable capacities from `Global Energy Monitor's Global Solar Power Tracker `_ and `Global Energy Monitor's Global Wind Power Tracker `_.", + description="Add renewable capacities from powerplantmatching dataset.", + ) + from_irenastat: bool = Field( + False, + description="Supplement powerplantmatching dataset with heuristics based on country-level renewable capacities from IRENA (IRENASTAT).", ) year: int = Field( - 2020, + 2024, description="Renewable capacities are based on existing capacities reported by IRENA (IRENASTAT) for the specified year.", ) expansion_limit: float | bool = Field( @@ -204,7 +208,7 @@ class ElectricityConfig(BaseModel): description="Defines which carriers are extendable during optimization.", ) powerplants_filter: str | bool = Field( - "(DateOut >= 2024 or DateOut != DateOut) and not (Country == 'Germany' and Fueltype == 'Nuclear')", + "(DateOut > 2025 or DateOut != DateOut) and (DateIn < 2026 or DateIn != DateIn)", description="Filter query for the default powerplant database.", ) custom_powerplants: str | bool = Field( @@ -224,6 +228,7 @@ class ElectricityConfig(BaseModel): "coal", "lignite", "geothermal", + "waste", "biomass", ], description="List of conventional power plants to include in the model from `resources/powerplants_s_{clusters}.csv`. If an included carrier is also listed in `extendable_carriers`, the capacity is taken as a lower bound.", @@ -244,6 +249,10 @@ class ElectricityConfig(BaseModel): default_factory=_EstimateRenewableCapacitiesConfig, description="Configuration for estimating renewable capacities.", ) + estimate_battery_capacities: bool = Field( + False, + description="Enable estimation of existing battery storage capacities.", + ) autarky: _AutarkyConfig = Field( default_factory=_AutarkyConfig, description="Autarky configuration.", diff --git a/scripts/lib/validation/config/energy.py b/scripts/lib/validation/config/energy.py index 29898c600e..df3a184ae2 100644 --- a/scripts/lib/validation/config/energy.py +++ b/scripts/lib/validation/config/energy.py @@ -17,7 +17,7 @@ class EnergyConfig(ConfigModel): """Configuration for `energy` settings.""" energy_totals_year: int = Field( - 2019, + 2023, description="The year for the sector energy use. The year must be available in the Eurostat report.", ) base_emissions_year: int = Field( diff --git a/scripts/lib/validation/config/existing_capacities.py b/scripts/lib/validation/config/existing_capacities.py index 1057602117..b98419ff38 100644 --- a/scripts/lib/validation/config/existing_capacities.py +++ b/scripts/lib/validation/config/existing_capacities.py @@ -35,6 +35,7 @@ class ExistingCapacitiesConfig(ConfigModel): 2015, 2020, 2025, + 2030, ], description="Intervals to group existing capacities for power.", ) diff --git a/scripts/lib/validation/config/industry.py b/scripts/lib/validation/config/industry.py index 9af8d343df..4919c6b737 100644 --- a/scripts/lib/validation/config/industry.py +++ b/scripts/lib/validation/config/industry.py @@ -186,11 +186,11 @@ class IndustryConfig(ConfigModel): ) MWh_elec_per_tMeOH: float = Field( 0.167, - description="The energy amount of electricity needed to produce a ton of methanol. From `DECHEMA (2017) `_, Table 14, page 65.", + description="The energy amount of electricity needed to produce a ton of methanol from fossil gas. From `DECHEMA (2017) `_, Table 14, page 65.", ) MWh_CH4_per_tMeOH: float = Field( 10.25, - description="The energy amount of methane needed to produce a ton of methanol. From `DECHEMA (2017) `_, Table 14, page 65.", + description="The energy amount of methane needed to produce a ton of methanol from fossil gas. From `DECHEMA (2017) `_, Table 14, page 65.", ) MWh_MeOH_per_tMeOH: float = Field( 5.528, diff --git a/scripts/lib/validation/config/load.py b/scripts/lib/validation/config/load.py index 13805be3af..f4819a1e71 100644 --- a/scripts/lib/validation/config/load.py +++ b/scripts/lib/validation/config/load.py @@ -66,6 +66,10 @@ class LoadConfig(BaseModel): True, description="Whether to supplement missing data for selected time period should be supplemented by synthetic data from `Zenodo `_.", ) + substation_only: bool = Field( + True, + description="Whether to only consider substations for the spatial disaggregation of the per-country electricity demand data.", + ) distribution_key: _DistributionKeyConfig = Field( default_factory=_DistributionKeyConfig, description="Distribution key for spatially disaggregating the per-country electricity demand data.", diff --git a/scripts/lib/validation/config/renewable.py b/scripts/lib/validation/config/renewable.py index 7d549419f3..0778260401 100644 --- a/scripts/lib/validation/config/renewable.py +++ b/scripts/lib/validation/config/renewable.py @@ -151,7 +151,7 @@ class _OffwindConfig(BaseModel): 0.8855, description="Correction factor for capacity factor time series." ) corine: bool | list[int] = Field( - default_factory=lambda: [44, 255], + default=False, description="Specifies areas according to CORINE Land Cover codes which are generally eligible for AC-connected offshore wind turbine placement.", ) luisa: bool | list[int] = Field( diff --git a/scripts/lib/validation/config/sector.py b/scripts/lib/validation/config/sector.py index a5ca40f8ee..d59da70a24 100644 --- a/scripts/lib/validation/config/sector.py +++ b/scripts/lib/validation/config/sector.py @@ -47,8 +47,8 @@ class _PtesConfig(BaseModel): description="If True, enables boosting by resistive heaters instead of heat pumps. " "`prepare_sector_network` then adds the links ` urban central water pits resistive booster` " "and ` urban central water pits resistive heater stand-alone` and reroutes heat generation " - "from resistive heaters accordingly. The required boosting energy is computed in `build_ptes_operations` " - "as `ptes_boost_per_discharge_profiles_base_s_.nc`.", + "from resistive heaters accordingly. The required boosting alpha is computed from the unified " + "heat source utilisation profiles in `build_heat_source_utilisation_profiles`.", ) top_temperature: float | Literal["forward"] = Field( 90, @@ -682,19 +682,6 @@ def validate_heat_sources_for_system_type( description="The efficiency of oil-powered machinery in the conversion of oil to meet agricultural needs.", ) - MWh_MeOH_per_MWh_H2: float = Field( - 0.8787, - description="The energy amount of the produced methanol per energy amount of hydrogen. From `DECHEMA (2017) `_, page 64.", - ) - MWh_MeOH_per_tCO2: float = Field( - 4.0321, - description="The energy amount of the produced methanol per ton of CO2. From `DECHEMA (2017) `_, page 66.", - ) - MWh_MeOH_per_MWh_e: float = Field( - 3.6907, - description="The energy amount of the produced methanol per energy amount of electricity. From `DECHEMA (2017) `_, page 64.", - ) - shipping_hydrogen_liquefaction: bool = Field( False, description="Whether to include liquefaction costs for hydrogen demand in shipping.", diff --git a/scripts/lib/validation/config/solving.py b/scripts/lib/validation/config/solving.py index f44ba56faf..442cb253e0 100644 --- a/scripts/lib/validation/config/solving.py +++ b/scripts/lib/validation/config/solving.py @@ -10,7 +10,7 @@ from typing import Any -from pydantic import BaseModel, Field, field_validator +from pydantic import BaseModel, Field, field_validator, model_validator from scripts.lib.validation.config._base import ConfigModel @@ -113,6 +113,10 @@ class _SolvingOptionsConfig(BaseModel): 365, description="Number of snapshots to consider in each iteration. Defaults to 100.", ) + overlap: int = Field( + 0, + description="Number of overlapping snapshots between consecutive iterations in rolling horizon optimization. Defaults to 0, which means no overlap.", + ) post_discretization: _PostDiscretizationConfig = Field( default_factory=_PostDiscretizationConfig, description="Post-discretization settings.", @@ -120,10 +124,20 @@ class _SolvingOptionsConfig(BaseModel): keep_files: bool = Field( False, description="Whether to keep LPs and MPS files after solving." ) + store_model: bool = Field( + False, + description="Store the linopy model to a NetCDF file after solving. Not supported with rolling_horizon. Not scenario-aware.", + ) model_kwargs: _ModelKwargsConfig = Field( default_factory=_ModelKwargsConfig, description="Model kwargs for linopy." ) + @model_validator(mode="after") + def check_store_model_rolling_horizon(self): + if self.rolling_horizon and self.store_model: + raise ValueError("store_model is not supported with rolling_horizon") + return self + class _AggPNomLimitsConfig(BaseModel): """Configuration for `solving.agg_p_nom_limits` settings.""" diff --git a/scripts/lib/validation/config_updates.py b/scripts/lib/validation/config_updates.py new file mode 100644 index 0000000000..3bf79ade86 --- /dev/null +++ b/scripts/lib/validation/config_updates.py @@ -0,0 +1,10 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Config validation update record for PyPSA-EUR. + +Any imports included in this file will be automatically registered as config updaters and applied to the base config schema. +See the docs for more details: https://pypsa-eur.readthedocs.io/en/latest/validation_dev.html#soft-fork-ext +""" diff --git a/scripts/make_network_comparison.py b/scripts/make_network_comparison.py new file mode 100644 index 0000000000..846e06fa8a --- /dev/null +++ b/scripts/make_network_comparison.py @@ -0,0 +1,407 @@ +# SPDX-FileCopyrightText: Contributors to PyPSA-Eur +# +# SPDX-License-Identifier: MIT + +""" +Creates plots to compare transmission line lengths between two PyPSA networks. +Uses spatial intersection with country shapes for accurate country attribution. + +""" + +import logging + +import geopandas as gpd +import matplotlib.pyplot as plt +import matplotlib.ticker as mtick +import pandas as pd +import pypsa +import seaborn as sns +from matplotlib.figure import Figure +from shapely import wkt +from shapely.geometry import LineString + +from scripts._helpers import configure_logging, set_scenario_config + +logger = logging.getLogger(__name__) + + +def thousands_formatter(x: float, pos: int) -> str: + """Format axis values as thousands with 'k' suffix.""" + return f"{x * 1e-3:.0f}k" + + +def prepare_line_geometries( + network: pypsa.Network, carrier: str = "AC" +) -> gpd.GeoDataFrame: + """ + Prepare line geometries from PyPSA network. + + Parameters + ---------- + network : pypsa.Network + PyPSA network to extract lines from. + carrier : str, default "AC" + Carrier type - "AC" for lines, "DC" for links. + + Returns + ------- + gpd.GeoDataFrame + GeoDataFrame with line geometries and attributes. + """ + if carrier == "AC": + df = network.lines[["bus0", "bus1", "length", "num_parallel"]].copy() + geom_source = network.lines + else: # DC + df = network.links[network.links["carrier"] == "DC"].copy() + if len(df) == 0: + return gpd.GeoDataFrame( + columns=["length", "num_parallel", "geometry"], crs="EPSG:4326" + ) + df = df[["bus0", "bus1", "length"]].copy() + df["num_parallel"] = 1 + geom_source = network.links[network.links["carrier"] == "DC"] + + # Use existing geometry if available + if "geometry" in geom_source.columns and len(geom_source) > 0: + geoms = geom_source["geometry"] + # Handle WKT strings + if isinstance(geoms.iloc[0], str): + df["geometry"] = geoms.apply(wkt.loads) + else: + df["geometry"] = geoms.values + else: + # Fallback to straight line between buses + logger.warning( + f"No geometry column found for {carrier}, using straight-line approximation" + ) + bus_coords = network.buses[["x", "y"]] + df["geometry"] = df.apply( + lambda row: LineString( + [ + (bus_coords.loc[row.bus0, "x"], bus_coords.loc[row.bus0, "y"]), + (bus_coords.loc[row.bus1, "x"], bus_coords.loc[row.bus1, "y"]), + ] + ), + axis=1, + ) + + return gpd.GeoDataFrame( + df[["length", "num_parallel"]], geometry=df["geometry"], crs="EPSG:4326" + ) + + +def get_lines_by_country( + network: pypsa.Network, country_shapes: gpd.GeoDataFrame +) -> pd.DataFrame: + """ + Calculate transmission line route and circuit lengths by country using spatial intersection. + + This function clips transmission lines at country boundaries to accurately attribute + line lengths to countries, including cross-border lines. Uses spatial indexing and + vectorized operations for performance. + + Parameters + ---------- + network : pypsa.Network + PyPSA network to analyze. + country_shapes : gpd.GeoDataFrame + GeoDataFrame with country geometries and 'name' column containing country codes. + + Returns + ------- + pd.DataFrame + DataFrame with columns ['length_routes', 'length_circuits'] indexed by country. + """ + + # Prepare AC lines and DC links + gdf_ac = prepare_line_geometries(network, carrier="AC") + gdf_dc = prepare_line_geometries(network, carrier="DC") + + # Combine if both exist + if len(gdf_ac) > 0 and len(gdf_dc) > 0: + gdf_lines = pd.concat([gdf_ac, gdf_dc], ignore_index=True) + elif len(gdf_ac) > 0: + gdf_lines = gdf_ac + elif len(gdf_dc) > 0: + gdf_lines = gdf_dc + else: + logger.warning("No lines or links found in network") + return pd.DataFrame(columns=["length_routes", "length_circuits"]).rename_axis( + "country" + ) + + # Project to EPSG:3035 for accurate length calculations + gdf_lines_proj = gdf_lines.to_crs("EPSG:3035") + country_shapes_proj = country_shapes.to_crs("EPSG:3035") + + overlay = gpd.overlay( + gdf_lines_proj, + country_shapes_proj[["name", "geometry"]], + how="intersection", + keep_geom_type=True, # Keep only LineString/MultiLineString + ) + + # Calculate lengths of clipped geometries + overlay["clipped_length_km"] = overlay.geometry.length / 1000 + + # Calculate route and circuit lengths + overlay["length_routes"] = overlay["clipped_length_km"] + overlay["length_circuits"] = overlay["clipped_length_km"] * overlay["num_parallel"] + + # Aggregate by country + result = ( + overlay.groupby("name", observed=True) + .agg({"length_routes": "sum", "length_circuits": "sum"}) + .rename_axis("country") + ) + + logger.info(f"Calculated line statistics for {len(result)} countries") + logger.info(f"Total route length: {result['length_routes'].sum():.0f} km") + logger.info(f"Total circuit length: {result['length_circuits'].sum():.0f} km") + + return result + + +def prepare_comparison_data( + lines_incumbent: pd.DataFrame, + lines_release: pd.DataFrame, + countries: list, + version: str, +) -> tuple[pd.DataFrame, pd.DataFrame, pd.DataFrame]: + """ + Merge and prepare line length data for plotting. + + Parameters + ---------- + lines_incumbent : pd.DataFrame + Line lengths from baseline network, indexed by country. + lines_release : pd.DataFrame + Line lengths from new release network, indexed by country. + countries : list + Countries to include in comparison. + version : str + Version label for baseline network. + + Returns + ------- + tuple of (pd.DataFrame, pd.DataFrame, pd.DataFrame) + - routes_long: Long-format DataFrame for route lengths + - circuits_long: Long-format DataFrame for circuit lengths + - lines_merged: Wide-format merged DataFrame + """ + # Merge datasets + lines_merged = lines_incumbent.merge( + lines_release, on="country", how="outer", suffixes=("_incumbent", "_release") + ) + + # Filter and sort by country + lines_merged = ( + lines_merged.loc[lines_merged.index.intersection(countries)] + .sort_index() + .fillna(0) + ) + + # Label mapping + label_map = { + "incumbent": f"Incumbent network ({version})", + "release": "New release", + } + + def to_long_format(metric: str) -> pd.DataFrame: + """Convert wide format to long format for a given metric.""" + col_prefix = f"length_{metric}_" + return ( + lines_merged.reset_index() + .melt( + id_vars=["country"], + value_vars=[f"{col_prefix}incumbent", f"{col_prefix}release"], + var_name="parameter", + value_name="length", + ) + .assign( + parameter=lambda df: df["parameter"] + .str.replace(col_prefix, "", regex=False) + .map(label_map) + ) + ) + + return to_long_format("routes"), to_long_format("circuits"), lines_merged + + +def plot_comparison( + routes_data: pd.DataFrame, circuits_data: pd.DataFrame, fontsize: int = 10 +) -> Figure: + """ + Create comparison bar plots for route and circuit lengths. + + Parameters + ---------- + routes_data : pd.DataFrame + Long-format route length data with columns ['country', 'length', 'parameter']. + circuits_data : pd.DataFrame + Long-format circuit length data with columns ['country', 'length', 'parameter']. + fontsize : int, default 10 + Font size for labels. + + Returns + ------- + matplotlib.figure.Figure + The created figure. + """ + palette = sns.color_palette("flare", n_colors=2)[::-1] + + fig, axes = plt.subplots(2, 1, figsize=(10, 6), sharex=True) + + # Create bar plots + for ax, data, ylabel in zip( + axes, + [routes_data, circuits_data], + ["a. Route length (km)", "b. Circuit length (km)"], + ): + sns.barplot( + data=data, x="country", y="length", hue="parameter", ax=ax, palette=palette + ) + ax.set_ylabel(ylabel, fontsize=fontsize) + ax.yaxis.set_major_formatter(mtick.FuncFormatter(thousands_formatter)) + ax.legend().remove() + + # Add percentage change labels + countries = data["country"].unique() + for i, country in enumerate(countries): + country_data = data[data["country"] == country] + values = country_data.set_index("parameter")["length"] + + # Get comparison and release values + incumbent_vals = values[values.index.str.contains("Incumbent")] + release_vals = values[values.index.str.contains("New release")] + + if len(incumbent_vals) > 0 and len(release_vals) > 0: + incumbent_val = incumbent_vals.iloc[0] + release_val = release_vals.iloc[0] + + # Calculate percentage change + if incumbent_val > 0: + pct_change = ((release_val - incumbent_val) / incumbent_val) * 100 + y_pos = max(incumbent_val, release_val) + + # Add text annotation + ax.text( + i, + y_pos, + f"{pct_change:+.1f}%", + ha="center", + va="bottom", + fontsize=fontsize - 2, + rotation=90, + ) + + # Format x-axis + axes[1].set_xlabel("Country", fontsize=fontsize) + axes[1].tick_params(axis="x", rotation=45) + + # Adjust y-limits + for ax in axes: + ymax = ax.get_ylim()[1] + ax.set_ylim(0, ymax * 1.15) + + # Add legend + handles, labels = axes[0].get_legend_handles_labels() + fig.legend( + handles, + labels, + title="Route and circuit lengths", + loc="lower center", + bbox_to_anchor=(0.5, -0.08), + ncol=2, + fontsize=fontsize, + frameon=False, + ) + + plt.tight_layout() + plt.subplots_adjust(bottom=0.12) + + return fig + + +if __name__ == "__main__": + if "snakemake" not in globals(): + from scripts._helpers import mock_snakemake + + snakemake = mock_snakemake("make_network_comparison") + + configure_logging(snakemake) + set_scenario_config(snakemake) + + # Load networks + logger.info("Loading networks...") + n_release = pypsa.Network(snakemake.input.n_release) + n_incumbent = pypsa.Network(snakemake.input.n_incumbent) + countries = snakemake.params.countries + version = snakemake.params.compare_to_version + + # Load and prepare country shapes + logger.info(f"Loading country shapes from {snakemake.input.country_shapes}") + country_shapes = gpd.read_file(snakemake.input.country_shapes) + + logger.info(f"Loading offshore regions from {snakemake.input.regions_offshore}") + regions_offshore = gpd.read_file(snakemake.input.regions_offshore)[ + ["country", "geometry"] + ] + + # Prepare offshore regions + regions_offshore = regions_offshore.dissolve(by="country", as_index=False).rename( + columns={"country": "name"} + ) + regions_offshore = gpd.GeoDataFrame(regions_offshore) + + # Ensure country_shapes has the right columns + country_shapes = gpd.GeoDataFrame( + country_shapes[["name"]], + geometry=country_shapes.geometry, + crs=country_shapes.crs, + ) + + # Combine onshore and offshore regions + regions = gpd.GeoDataFrame( + pd.concat([country_shapes, regions_offshore], ignore_index=True), + crs=country_shapes.crs, + ).dissolve(by="name", as_index=False) + + # Filter to countries of interest + if countries: + regions = regions[regions["name"].isin(countries)] + logger.info(f"Filtered to {len(regions)} countries/regions") + + # Calculate line statistics using spatial intersection + logger.info("Calculating line statistics for incumbent network...") + lines_incumbent = get_lines_by_country(n_incumbent, regions) + + logger.info("Calculating line statistics for release network...") + lines_release = get_lines_by_country(n_release, regions) + + # Prepare comparison data + routes_long, circuits_long, lines_merged = prepare_comparison_data( + lines_incumbent, + lines_release, + countries, + version, + ) + + # Calculate and log correlations + pcc_routes = lines_merged["length_routes_incumbent"].corr( + lines_merged["length_routes_release"] + ) + pcc_circuits = lines_merged["length_circuits_incumbent"].corr( + lines_merged["length_circuits_release"] + ) + + logger.info(f"Pearson correlation (route length): {pcc_routes:.4f}") + logger.info(f"Pearson correlation (circuit length): {pcc_circuits:.4f}") + + # Create and save plot + logger.info("Creating comparison plot...") + fig = plot_comparison(routes_long, circuits_long, fontsize=10) + + logger.info(f"Exporting figure to {snakemake.output.lengths}") + fig.savefig(snakemake.output.lengths, format="pdf", bbox_inches="tight", dpi=300) + plt.close(fig) diff --git a/scripts/make_summary.py b/scripts/make_summary.py index 7d098e1c8a..bb91830094 100644 --- a/scripts/make_summary.py +++ b/scripts/make_summary.py @@ -40,14 +40,18 @@ def assign_carriers(n: pypsa.Network) -> None: def assign_locations(n: pypsa.Network) -> None: - for c in n.iterate_components(n.one_port_components): - c.df["location"] = c.df.bus.map(n.buses.location) - - for c in n.iterate_components(n.branch_components): - c_bus_cols = c.df.filter(regex="^bus") + for c in n.components[n.one_port_components]: + if c.static.empty: + continue + c.static["location"] = c.static.bus.map(n.buses.location) + + for c in n.components[n.branch_components]: + if c.static.empty: + continue + c_bus_cols = c.static.filter(regex="^bus") locs = c_bus_cols.apply(lambda c: c.map(n.buses.location)).sort_index(axis=1) # Use first location that is not "EU"; take "EU" if nothing else available - c.df["location"] = locs.apply( + c.static["location"] = locs.apply( lambda row: next( (loc for loc in row.dropna() if loc != "EU"), "EU", diff --git a/scripts/make_summary_perfect.py b/scripts/make_summary_perfect.py index d8b4e4c6ba..8016e99414 100644 --- a/scripts/make_summary_perfect.py +++ b/scripts/make_summary_perfect.py @@ -53,10 +53,14 @@ def calculate_costs(n, label, costs): costs = reindex_columns(costs, cols) - for c in n.iterate_components( + for c in n.components[ n.branch_components | n.controllable_one_port_components ^ {"Load"} - ): - capital_costs = c.df.capital_cost * c.df[opt_name.get(c.name, "p") + "_nom_opt"] + ]: + if c.static.empty: + continue + capital_costs = ( + c.static.capital_cost * c.static[opt_name.get(c.name, "p") + "_nom_opt"] + ) active = pd.concat( [ get_active_assets(n, c.name, inv_p).rename(inv_p) @@ -69,7 +73,9 @@ def calculate_costs(n, label, costs): n.investment_period_weightings["objective"] / n.investment_period_weightings["years"] ) - capital_costs_grouped = capital_costs.groupby(c.df.carrier).sum().mul(discount) + capital_costs_grouped = ( + capital_costs.groupby(c.static.carrier).sum().mul(discount) + ) capital_costs_grouped = pd.concat([capital_costs_grouped], keys=["capital"]) capital_costs_grouped = pd.concat([capital_costs_grouped], keys=[c.list_name]) @@ -80,19 +86,19 @@ def calculate_costs(n, label, costs): if c.name == "Link": p = ( - c.pnl.p0.multiply(n.snapshot_weightings.generators, axis=0) + c.dynamic.p0.multiply(n.snapshot_weightings.generators, axis=0) .groupby(level=0) .sum() ) elif c.name == "Line": continue elif c.name == "StorageUnit": - p_all = c.pnl.p.multiply(n.snapshot_weightings.stores, axis=0) + p_all = c.dynamic.p.multiply(n.snapshot_weightings.stores, axis=0) p_all[p_all < 0.0] = 0.0 p = p_all.groupby(level=0).sum() else: p = ( - round(c.pnl.p, ndigits=2) + round(c.dynamic.p, ndigits=2) .multiply(n.snapshot_weightings.generators, axis=0) .groupby(level=0) .sum() @@ -100,15 +106,15 @@ def calculate_costs(n, label, costs): # correct sequestration cost if c.name == "Store": - items = c.df.index[ - (c.df.carrier == "co2 stored") & (c.df.marginal_cost <= -100.0) + items = c.static.index[ + (c.static.carrier == "co2 stored") & (c.static.marginal_cost <= -100.0) ] - c.df.loc[items, "marginal_cost"] = -20.0 + c.static.loc[items, "marginal_cost"] = -20.0 - marginal_costs = p.mul(c.df.marginal_cost).T + marginal_costs = p.mul(c.static.marginal_cost).T # marginal_costs = active.mul(marginal_costs, axis=0) marginal_costs_grouped = ( - marginal_costs.groupby(c.df.carrier).sum().mul(discount) + marginal_costs.groupby(c.static.carrier).sum().mul(discount) ) marginal_costs_grouped = pd.concat([marginal_costs_grouped], keys=["marginal"]) @@ -159,10 +165,12 @@ def calculate_cumulative_cost(): def calculate_nodal_capacities(n, label, nodal_capacities): # Beware this also has extraneous locations for country (e.g. biomass) or continent-wide (e.g. fossil gas/oil) stuff - for c in n.iterate_components( + for c in n.components[ n.branch_components | n.controllable_one_port_components ^ {"Load"} - ): - nodal_capacities_c = c.df.groupby(["location", "carrier"])[ + ]: + if c.static.empty: + continue + nodal_capacities_c = c.static.groupby(["location", "carrier"])[ opt_name.get(c.name, "p") + "_nom_opt" ].sum() index = pd.MultiIndex.from_tuples( @@ -186,9 +194,11 @@ def calculate_capacities(n, label, capacities): ) capacities = reindex_columns(capacities, cols) - for c in n.iterate_components( + for c in n.components[ n.branch_components | n.controllable_one_port_components ^ {"Load"} - ): + ]: + if c.static.empty: + continue active = pd.concat( [ get_active_assets(n, c.name, inv_p).rename(inv_p) @@ -196,10 +206,10 @@ def calculate_capacities(n, label, capacities): ], axis=1, ).astype(int) - caps = c.df[opt_name.get(c.name, "p") + "_nom_opt"] + caps = c.static[opt_name.get(c.name, "p") + "_nom_opt"] caps = active.mul(caps, axis=0) capacities_grouped = ( - caps.groupby(c.df.carrier).sum().drop("load", errors="ignore") + caps.groupby(c.static.carrier).sum().drop("load", errors="ignore") ) capacities_grouped = pd.concat([capacities_grouped], keys=[c.list_name]) @@ -238,34 +248,36 @@ def calculate_energy(n, label, energy): ) energy = reindex_columns(energy, cols) - for c in n.iterate_components(n.one_port_components | n.branch_components): + for c in n.components[n.one_port_components | n.branch_components]: + if c.static.empty: + continue if c.name in n.one_port_components: c_energies = ( - c.pnl.p.multiply(n.snapshot_weightings.generators, axis=0) + c.dynamic.p.multiply(n.snapshot_weightings.generators, axis=0) .groupby(level=0) .sum() - .multiply(c.df.sign) - .T.groupby(c.df.carrier) + .multiply(c.static.sign) + .T.groupby(c.static.carrier) .sum() .T ) else: c_energies = pd.DataFrame( - 0.0, columns=c.df.carrier.unique(), index=n.investment_periods + 0.0, columns=c.static.carrier.unique(), index=n.investment_periods ) - for port in [col[3:] for col in c.df.columns if col[:3] == "bus"]: + for port in [col[3:] for col in c.static.columns if col[:3] == "bus"]: totals = ( - c.pnl["p" + port] + c.dynamic["p" + port] .multiply(n.snapshot_weightings.generators, axis=0) .groupby(level=0) .sum() ) # remove values where bus is missing (bug in nomopyomo) - no_bus = c.df.index[c.df["bus" + port] == ""] + no_bus = c.static.index[c.static["bus" + port] == ""] totals[no_bus] = float( n.component_attrs[c.name].loc["p" + port, "default"] ) - c_energies -= totals.T.groupby(c.df.carrier).sum().T + c_energies -= totals.T.groupby(c.static.carrier).sum().T c_energies = pd.concat([c_energies.T], keys=[c.list_name]) @@ -288,17 +300,19 @@ def calculate_supply(n, label, supply): bus_map = n.buses.carrier == i bus_map.at[""] = False - for c in n.iterate_components(n.one_port_components): - items = c.df.index[c.df.bus.map(bus_map).fillna(False)] + for c in n.components[n.one_port_components]: + if c.static.empty: + continue + items = c.static.index[c.static.bus.map(bus_map).fillna(False)] if len(items) == 0: continue s = ( - c.pnl.p[items] + c.dynamic.p[items] .max() - .multiply(c.df.loc[items, "sign"]) - .groupby(c.df.loc[items, "carrier"]) + .multiply(c.static.loc[items, "sign"]) + .groupby(c.static.loc[items, "carrier"]) .sum() ) s = pd.concat([s], keys=[c.list_name]) @@ -307,17 +321,19 @@ def calculate_supply(n, label, supply): supply = supply.reindex(s.index.union(supply.index)) supply.loc[s.index, label] = s - for c in n.iterate_components(n.branch_components): - for end in [col[3:] for col in c.df.columns if col[:3] == "bus"]: - items = c.df.index[c.df["bus" + end].map(bus_map).fillna(False)] + for c in n.components[n.branch_components]: + if c.static.empty: + continue + for end in [col[3:] for col in c.static.columns if col[:3] == "bus"]: + items = c.static.index[c.static["bus" + end].map(bus_map).fillna(False)] if len(items) == 0: continue # lots of sign compensation for direction and to do maximums s = (-1) ** (1 - int(end)) * ( - (-1) ** int(end) * c.pnl["p" + end][items] - ).max().groupby(c.df.loc[items, "carrier"]).sum() + (-1) ** int(end) * c.dynamic["p" + end][items] + ).max().groupby(c.static.loc[items, "carrier"]).sum() s.index = s.index + end s = pd.concat([s], keys=[c.list_name]) s = pd.concat([s], keys=[i]) @@ -351,8 +367,10 @@ def calculate_supply_energy(n, label, supply_energy): bus_map = n.buses.carrier == i bus_map.at[""] = False - for c in n.iterate_components(n.one_port_components): - items = c.df.index[c.df.bus.map(bus_map).fillna(False)] + for c in n.components[n.one_port_components]: + if c.static.empty: + continue + items = c.static.index[c.static.bus.map(bus_map).fillna(False)] if len(items) == 0: continue @@ -364,18 +382,18 @@ def calculate_supply_energy(n, label, supply_energy): if i in ["oil", "co2", "H2"]: if c.name == "Load": - c.df.loc[items, "carrier"] = [ + c.static.loc[items, "carrier"] = [ load.split("-202")[0] for load in items ] if i == "oil" and c.name == "Generator": - c.df.loc[items, "carrier"] = "imported oil" + c.static.loc[items, "carrier"] = "imported oil" s = ( - c.pnl.p[items] + c.dynamic.p[items] .multiply(weightings, axis=0) .groupby(level=0) .sum() - .multiply(c.df.loc[items, "sign"]) - .T.groupby(c.df.loc[items, "carrier"]) + .multiply(c.static.loc[items, "sign"]) + .T.groupby(c.static.loc[items, "carrier"]) .sum() ) s = pd.concat([s], keys=[c.list_name]) @@ -386,16 +404,20 @@ def calculate_supply_energy(n, label, supply_energy): ) supply_energy.loc[s.index, label] = s.values - for c in n.iterate_components(n.branch_components): - for end in [col[3:] for col in c.df.columns if col[:3] == "bus"]: - items = c.df.index[c.df[f"bus{str(end)}"].map(bus_map).fillna(False)] + for c in n.components[n.branch_components]: + if c.static.empty: + continue + for end in [col[3:] for col in c.static.columns if col[:3] == "bus"]: + items = c.static.index[ + c.static[f"bus{str(end)}"].map(bus_map).fillna(False) + ] if len(items) == 0: continue - s = (-1) * c.pnl["p" + end].reindex(items, axis=1).multiply( + s = (-1) * c.dynamic["p" + end].reindex(items, axis=1).multiply( n.snapshot_weightings.objective, axis=0 - ).groupby(level=0).sum().T.groupby(c.df.loc[items, "carrier"]).sum() + ).groupby(level=0).sum().T.groupby(c.static.loc[items, "carrier"]).sum() s.index = s.index + end s = pd.concat([s], keys=[c.list_name]) s = pd.concat([s], keys=[i]) diff --git a/scripts/plot_balance_map.py b/scripts/plot_balance_map.py index d09c49ec93..a58e82b658 100644 --- a/scripts/plot_balance_map.py +++ b/scripts/plot_balance_map.py @@ -80,7 +80,7 @@ n.buses["x"] = n.buses.location.map(n.buses.x) n.buses["y"] = n.buses.location.map(n.buses.y) - # bus_sizes according to energy balance of bus carrier + # bus_size according to energy balance of bus carrier eb = n.statistics.energy_balance(bus_carrier=carrier, groupby=["bus", "carrier"]) # remove energy balance of transmission carriers which relate to losses @@ -95,15 +95,15 @@ eb.loc[components] = eb.loc[components].drop(index=carriers_in_eb, level="carrier") eb = eb.dropna() - bus_sizes = eb.groupby(level=["bus", "carrier"]).sum().div(unit_conversion) - bus_sizes = bus_sizes.sort_values(ascending=False) + bus_size = eb.groupby(level=["bus", "carrier"]).sum().div(unit_conversion) + bus_size = bus_size.sort_values(ascending=False) # Get colors for carriers n.carriers.update({"color": snakemake.params.plotting["tech_colors"]}) carrier_colors = n.carriers.color.copy().replace("", "grey") colors = ( - bus_sizes.index.get_level_values("carrier") + bus_size.index.get_level_values("carrier") .unique() .to_series() .map(carrier_colors) @@ -123,8 +123,8 @@ # if there are not lines or links for the bus carrier, use fallback for plotting fallback = pd.Series() - line_widths = flow.get("Line", fallback).abs() - link_widths = flow.get("Link", fallback).abs() + line_width = flow.get("Line", fallback).abs() + link_width = flow.get("Link", fallback).abs() # define maximal size of buses and branch width bus_size_factor = settings["bus_factor"] @@ -169,11 +169,11 @@ transformer_flow = flow.get("Transformer") n.plot( - bus_sizes=bus_sizes * bus_size_factor, - bus_colors=colors, - bus_split_circles=True, - line_widths=line_widths * branch_width_factor, - link_widths=link_widths * branch_width_factor, + bus_size=bus_size * bus_size_factor, + bus_color=colors, + bus_split_circle=True, + line_width=line_width * branch_width_factor, + link_width=link_width * branch_width_factor, line_flow=line_flow * flow_size_factor if line_flow is not None else None, link_flow=link_flow * flow_size_factor if link_flow is not None else None, link_color=branch_color, @@ -182,7 +182,7 @@ else None, ax=ax, margin=0.2, - geomap_colors={"border": "darkgrey", "coastline": "darkgrey"}, + geomap_color={"border": "darkgrey", "coastline": "darkgrey"}, geomap=True, boundaries=boundaries, ) @@ -226,14 +226,14 @@ n.carriers.loc["", "color"] = "None" # Get lists for supply and consumption carriers - pos_carriers = bus_sizes[bus_sizes > 0].index.unique("carrier") - neg_carriers = bus_sizes[bus_sizes < 0].index.unique("carrier") + pos_carriers = bus_size[bus_size > 0].index.unique("carrier") + neg_carriers = bus_size[bus_size < 0].index.unique("carrier") # Determine larger total absolute value for supply and consumption for a carrier if carrier exists as both supply and consumption common_carriers = pos_carriers.intersection(neg_carriers) def get_total_abs(carrier, sign): - values = bus_sizes.loc[:, carrier] + values = bus_size.loc[:, carrier] return values[values * sign > 0].abs().sum() supp_carriers = sorted( @@ -272,16 +272,16 @@ def get_total_abs(carrier, sign): ) # Add bus legend - legend_bus_sizes = settings["bus_sizes"] - unit = settings["unit"] - if legend_bus_sizes is not None: + legend_bus_size = settings["bus_sizes"] + carrier_unit = settings["unit"] + if legend_bus_size is not None: add_legend_semicircles( ax, [ s * bus_size_factor * SEMICIRCLE_CORRECTION_FACTOR - for s in legend_bus_sizes + for s in legend_bus_size ], - [f"{s} {unit}" for s in legend_bus_sizes], + [f"{s} {carrier_unit}" for s in legend_bus_size], patch_kw={"color": "#666"}, legend_kw={ "bbox_to_anchor": (0, 1), @@ -295,7 +295,7 @@ def get_total_abs(carrier, sign): add_legend_lines( ax, [s * branch_width_factor for s in legend_branch_sizes], - [f"{s} {unit}" for s in legend_branch_sizes], + [f"{s} {carrier_unit}" for s in legend_branch_sizes], patch_kw={"color": "#666"}, legend_kw={"bbox_to_anchor": (0.25, 1), **legend_kwargs}, ) diff --git a/scripts/plot_base_network.py b/scripts/plot_base_network.py index e781a29398..dd1bff188a 100644 --- a/scripts/plot_base_network.py +++ b/scripts/plot_base_network.py @@ -34,8 +34,8 @@ n.plot( ax=ax, margin=0.06, - line_widths=n.lines.s_nom / lw_factor, - link_widths=n.links.p_nom / lw_factor, + line_width=n.lines.s_nom / lw_factor, + link_width=n.links.p_nom / lw_factor, ) if not n.lines.empty: diff --git a/scripts/plot_gas_network.py b/scripts/plot_gas_network.py index fc03b21d53..c8eb44d919 100644 --- a/scripts/plot_gas_network.py +++ b/scripts/plot_gas_network.py @@ -87,25 +87,25 @@ def plot_ch4_map(n): # make a fake MultiIndex so that area is correct for legend biogas.index = pd.MultiIndex.from_product([biogas.index, ["biogas"]]) - bus_sizes = pd.concat([fossil_gas, methanation, biogas]) - non_buses = bus_sizes.index.unique(level=0).difference(n.buses.index) + bus_size = pd.concat([fossil_gas, methanation, biogas]) + non_buses = bus_size.index.unique(level=0).difference(n.buses.index) if any(non_buses): logger.info(f"Dropping non-buses {non_buses.tolist()} for CH4 network plot.") - bus_sizes = bus_sizes.drop(non_buses) - bus_sizes.sort_index(inplace=True) + bus_size = bus_size.drop(non_buses) + bus_size.sort_index(inplace=True) to_remove = n.links.index[~n.links.carrier.str.contains("gas pipeline")] n.links.drop(to_remove, inplace=True) - link_widths_rem = n.links.p_nom_opt / linewidth_factor - link_widths_rem[n.links.p_nom_opt < line_lower_threshold] = 0.0 + link_width_rem = n.links.p_nom_opt / linewidth_factor + link_width_rem[n.links.p_nom_opt < line_lower_threshold] = 0.0 - link_widths_orig = n.links.p_nom / linewidth_factor - link_widths_orig[n.links.p_nom < line_lower_threshold] = 0.0 + link_width_orig = n.links.p_nom / linewidth_factor + link_width_orig[n.links.p_nom < line_lower_threshold] = 0.0 max_usage = n.links_t.p0[n.links.index].abs().max(axis=0) - link_widths_used = max_usage / linewidth_factor - link_widths_used[max_usage < line_lower_threshold] = 0.0 + link_width_used = max_usage / linewidth_factor + link_width_used[max_usage < line_lower_threshold] = 0.0 tech_colors = snakemake.params.plotting["tech_colors"] @@ -121,7 +121,7 @@ def plot_ch4_map(n): n.links.bus0 = n.links.bus0.str.replace(" gas", "") n.links.bus1 = n.links.bus1.str.replace(" gas", "") - bus_colors = { + bus_color = { "fossil gas": tech_colors["fossil gas"], "methanation": tech_colors["methanation"], "biogas": "seagreen", @@ -130,10 +130,10 @@ def plot_ch4_map(n): fig, ax = plt.subplots(figsize=(7, 6), subplot_kw={"projection": proj}) n.plot( - bus_sizes=bus_sizes, - bus_colors=bus_colors, - link_colors=pipe_colors["gas pipeline (in 2020)"], - link_widths=link_widths_orig, + bus_size=bus_size, + bus_color=bus_color, + link_color=pipe_colors["gas pipeline (in 2020)"], + link_width=link_width_orig, branch_components=["Link"], ax=ax, **map_opts, @@ -141,21 +141,21 @@ def plot_ch4_map(n): n.plot( ax=ax, - bus_sizes=0.0, - link_colors=pipe_colors["gas pipeline (available)"], - link_widths=link_widths_rem, + bus_size=0.0, + link_color=pipe_colors["gas pipeline (available)"], + link_width=link_width_rem, branch_components=["Link"], - geomap_colors=False, + geomap_color=False, boundaries=map_opts["boundaries"], ) n.plot( ax=ax, - bus_sizes=0.0, - link_colors=link_color_used, - link_widths=link_widths_used, + bus_size=0.0, + link_color=link_color_used, + link_width=link_width_used, branch_components=["Link"], - geomap_colors=False, + geomap_color=False, boundaries=map_opts["boundaries"], ) @@ -203,8 +203,8 @@ def plot_ch4_map(n): legend_kw=legend_kw, ) - colors = list(pipe_colors.values()) + list(bus_colors.values()) - labels = list(pipe_colors.keys()) + list(bus_colors.keys()) + colors = list(pipe_colors.values()) + list(bus_color.values()) + labels = list(pipe_colors.keys()) + list(bus_color.keys()) # legend on the side # legend_kw = dict( diff --git a/scripts/plot_hydrogen_network.py b/scripts/plot_hydrogen_network.py index b88ab5ff49..350631841b 100644 --- a/scripts/plot_hydrogen_network.py +++ b/scripts/plot_hydrogen_network.py @@ -72,13 +72,13 @@ def plot_h2_map(n, regions): elec = n.links[n.links.carrier.isin(carriers)].index - bus_sizes = ( + bus_size = ( n.links.loc[elec, "p_nom_opt"].groupby([n.links["bus0"], n.links.carrier]).sum() / bus_size_factor ) # make a fake MultiIndex so that area is correct for legend - bus_sizes.rename(index=lambda x: x.replace(" H2", ""), level=0, inplace=True) + bus_size.rename(index=lambda x: x.replace(" H2", ""), level=0, inplace=True) # drop all links which are not H2 pipelines n.links.drop( n.links.index[~n.links.carrier.str.contains("H2 pipeline")], inplace=True @@ -127,7 +127,7 @@ def plot_h2_map(n, regions): else: h2_total = h2_new.p_nom_opt - link_widths_total = h2_total / linewidth_factor + link_width_total = h2_total / linewidth_factor n.links.rename(index=lambda x: x.split("-2")[0], inplace=True) # group links by summing up p_nom values and taking the first value of the rest of the columns @@ -136,14 +136,14 @@ def plot_h2_map(n, regions): {"p_nom_opt": "sum", "p_nom": "sum", **other_cols} ) - link_widths_total = link_widths_total.reindex(n.links.index).fillna(0.0) - link_widths_total[n.links.p_nom_opt < line_lower_threshold] = 0.0 + link_width_total = link_width_total.reindex(n.links.index).fillna(0.0) + link_width_total[n.links.p_nom_opt < line_lower_threshold] = 0.0 retro = n.links.p_nom_opt.where( n.links.carrier == "H2 pipeline retrofitted", other=0.0 ) - link_widths_retro = retro / linewidth_factor - link_widths_retro[n.links.p_nom_opt < line_lower_threshold] = 0.0 + link_width_retro = retro / linewidth_factor + link_width_retro[n.links.p_nom_opt < line_lower_threshold] = 0.0 n.links.bus0 = n.links.bus0.str.replace(" H2", "") n.links.bus1 = n.links.bus1.str.replace(" H2", "") @@ -155,14 +155,14 @@ def plot_h2_map(n, regions): color_h2_pipe = "#b3f3f4" color_retrofit = "#499a9c" - bus_colors = {"H2 Electrolysis": "#ff29d9", "H2 Fuel Cell": "#805394"} + bus_color = {"H2 Electrolysis": "#ff29d9", "H2 Fuel Cell": "#805394"} n.plot( geomap=True, - bus_sizes=bus_sizes, - bus_colors=bus_colors, - link_colors=color_h2_pipe, - link_widths=link_widths_total, + bus_size=bus_size, + bus_color=bus_color, + link_color=color_h2_pipe, + link_width=link_width_total, branch_components=["Link"], ax=ax, **map_opts, @@ -170,9 +170,9 @@ def plot_h2_map(n, regions): n.plot( geomap=True, - bus_sizes=0, - link_colors=color_retrofit, - link_widths=link_widths_retro, + bus_size=0, + link_color=color_retrofit, + link_width=link_width_retro, branch_components=["Link"], ax=ax, **map_opts, @@ -235,7 +235,7 @@ def plot_h2_map(n, regions): legend_kw=legend_kw, ) - colors = [bus_colors[c] for c in carriers] + [color_h2_pipe, color_retrofit] + colors = [bus_color[c] for c in carriers] + [color_h2_pipe, color_retrofit] labels = carriers + ["H2 pipeline (total)", "H2 pipeline (repurposed)"] legend_kw = dict( diff --git a/scripts/plot_power_network.py b/scripts/plot_power_network.py index da6c79ab2f..d04f37df1e 100644 --- a/scripts/plot_power_network.py +++ b/scripts/plot_power_network.py @@ -139,38 +139,38 @@ def plot_map( if snakemake.params.transmission_limit == "lv1.0": # should be zero - line_widths = n.lines.s_nom_opt - n.lines.s_nom - link_widths = n.links.p_nom_opt - n.links.p_nom + line_width = n.lines.s_nom_opt - n.lines.s_nom + link_width = n.links.p_nom_opt - n.links.p_nom if transmission: - line_widths = n.lines.s_nom_opt - link_widths = n.links.p_nom_opt + line_width = n.lines.s_nom_opt + link_width = n.links.p_nom_opt linewidth_factor = 2e3 line_lower_threshold = 0.0 title = "current grid" else: - line_widths = n.lines.s_nom_opt - n.lines.s_nom_min - link_widths = n.links.p_nom_opt - n.links.p_nom_min + line_width = n.lines.s_nom_opt - n.lines.s_nom_min + link_width = n.links.p_nom_opt - n.links.p_nom_min if transmission: - line_widths = n.lines.s_nom_opt - link_widths = n.links.p_nom_opt + line_width = n.lines.s_nom_opt + link_width = n.links.p_nom_opt title = "total grid" - line_widths = line_widths.clip(line_lower_threshold, line_upper_threshold) - link_widths = link_widths.clip(line_lower_threshold, line_upper_threshold) + line_width = line_width.clip(line_lower_threshold, line_upper_threshold) + link_width = link_width.clip(line_lower_threshold, line_upper_threshold) - line_widths = line_widths.replace(line_lower_threshold, 0) - link_widths = link_widths.replace(line_lower_threshold, 0) + line_width = line_width.replace(line_lower_threshold, 0) + link_width = link_width.replace(line_lower_threshold, 0) fig, ax = plt.subplots(subplot_kw={"projection": proj}) fig.set_size_inches(7, 6) n.plot( - bus_sizes=costs / bus_size_factor, - bus_colors=tech_colors, - line_colors=ac_color, - link_colors=dc_color, - line_widths=line_widths / linewidth_factor, - link_widths=link_widths / linewidth_factor, + bus_size=costs / bus_size_factor, + bus_color=tech_colors, + line_color=ac_color, + link_color=dc_color, + line_width=line_width / linewidth_factor, + link_width=link_width / linewidth_factor, ax=ax, **map_opts, ) diff --git a/scripts/plot_power_network_clustered.py b/scripts/plot_power_network_clustered.py index 920edb0a1b..67eef1e3ae 100644 --- a/scripts/plot_power_network_clustered.py +++ b/scripts/plot_power_network_clustered.py @@ -40,11 +40,11 @@ n.plot( ax=ax, margin=0.06, - line_widths=n.lines.s_nom / lw_factor, - link_colors=n.links.p_nom.apply( + line_width=n.lines.s_nom / lw_factor, + link_color=n.links.p_nom.apply( lambda x: "darkseagreen" if x > 0 else "skyblue" ), - link_widths=2.0, + link_width=2.0, ) sizes = [10, 20] diff --git a/scripts/plot_power_network_perfect.py b/scripts/plot_power_network_perfect.py index f506027376..ac2388b94e 100644 --- a/scripts/plot_power_network_perfect.py +++ b/scripts/plot_power_network_perfect.py @@ -36,7 +36,7 @@ def plot_map_perfect( costs = {} for comp in components: - df_c = n.df(comp) + df_c = n.components[comp].static if df_c.empty: continue df_c["nice_group"] = df_c.carrier.map(rename_techs_tyndp) @@ -47,10 +47,17 @@ def plot_map_perfect( [n.get_active_assets(comp, inv_p).rename(inv_p) for inv_p in investments], axis=1, ).astype(int) - capital_cost = n.df(comp)[attr] * n.df(comp).capital_cost + capital_cost = ( + n.components[comp].static[attr] * n.components[comp].static.capital_cost + ) capital_cost_t = ( (active.mul(capital_cost, axis=0)) - .groupby([n.df(comp).location, n.df(comp).nice_group]) + .groupby( + [ + n.components[comp].static.location, + n.components[comp].static.nice_group, + ] + ) .sum() ) @@ -96,17 +103,17 @@ def plot_map_perfect( ac_color = "gray" dc_color = "m" - line_widths = n.lines.s_nom_opt - link_widths = n.links.p_nom_opt + line_width = n.lines.s_nom_opt + link_width = n.links.p_nom_opt linewidth_factor = 2e3 line_lower_threshold = 0.0 title = "Today's transmission" - line_widths[line_widths < line_lower_threshold] = 0.0 - link_widths[link_widths < line_lower_threshold] = 0.0 + line_width[line_width < line_lower_threshold] = 0.0 + link_width[link_width < line_lower_threshold] = 0.0 - line_widths[line_widths > line_upper_threshold] = line_upper_threshold - link_widths[link_widths > line_upper_threshold] = line_upper_threshold + line_width[line_width > line_upper_threshold] = line_upper_threshold + link_width[link_width > line_upper_threshold] = line_upper_threshold for year in costs.columns: fig, ax = plt.subplots(subplot_kw={"projection": proj}) @@ -114,12 +121,12 @@ def plot_map_perfect( fig.suptitle(year) n.plot( - bus_sizes=costs[year] / bus_size_factor, - bus_colors=snakemake.config["plotting"]["tech_colors"], - line_colors=ac_color, - link_colors=dc_color, - line_widths=line_widths / linewidth_factor, - link_widths=link_widths / linewidth_factor, + bus_size=costs[year] / bus_size_factor, + bus_color=snakemake.config["plotting"]["tech_colors"], + line_color=ac_color, + link_color=dc_color, + line_width=line_width / linewidth_factor, + link_width=link_width / linewidth_factor, ax=ax, **map_opts, ) diff --git a/scripts/plot_summary.py b/scripts/plot_summary.py index 568e51972c..8cda4a6f02 100644 --- a/scripts/plot_summary.py +++ b/scripts/plot_summary.py @@ -270,7 +270,7 @@ def plot_balances(): ) fig.savefig( - snakemake.output.balances[:-10] + bus_carrier + ".svg", bbox_inches="tight" + snakemake.output.balances[:-10] + bus_carrier + ".pdf", bbox_inches="tight" ) plt.close(fig) @@ -482,7 +482,7 @@ def plot_carbon_budget_distribution(input_eurostat, options): ) plt.grid(axis="y") - path = snakemake.output.balances.split("balances")[0] + "carbon_budget.svg" + path = snakemake.output.balances.split("balances")[0] + "carbon_budget.pdf" plt.savefig(path, bbox_inches="tight") plt.close() diff --git a/scripts/prepare_network.py b/scripts/prepare_network.py index 9555a6e24a..7cf0e98f69 100755 --- a/scripts/prepare_network.py +++ b/scripts/prepare_network.py @@ -61,11 +61,13 @@ def modify_attribute(n, adjustments, investment_year, modification="factor"): logger.warning(f"{c} needs to be a PyPSA Component") continue for carrier in change_dict[c].keys(): - ind_i = n.df(c)[n.df(c).carrier == carrier].index + ind_i = ( + n.components[c].static[n.components[c].static.carrier == carrier].index + ) if ind_i.empty: continue for parameter in change_dict[c][carrier].keys(): - if parameter not in n.df(c).columns: + if parameter not in n.components[c].static.columns: logger.warning(f"Attribute {parameter} needs to be in {c} columns.") continue if investment_year: @@ -74,10 +76,10 @@ def modify_attribute(n, adjustments, investment_year, modification="factor"): factor = change_dict[c][carrier][parameter] if modification == "factor": logger.info(f"Modify {parameter} of {carrier} by factor {factor} ") - n.df(c).loc[ind_i, parameter] *= factor + n.components[c].static.loc[ind_i, parameter] *= factor elif modification == "absolute": logger.info(f"Set {parameter} of {carrier} to {factor} ") - n.df(c).loc[ind_i, parameter] = factor + n.components[c].static.loc[ind_i, parameter] = factor else: logger.warning( f"{modification} needs to be either 'absolute' or 'factor'." @@ -129,14 +131,14 @@ def add_emission_prices(n, emission_prices={"co2": 0.0}, exclude_co2=False): def add_dynamic_emission_prices(n, fn): - co2_price = pd.read_csv(fn, index_col=0, parse_dates=True) - co2_price = co2_price[~co2_price.index.duplicated()] - co2_price = co2_price.reindex(n.snapshots).ffill().bfill() + co2_price = ( + pd.read_csv(fn, index_col=0, parse_dates=True).squeeze().reindex(n.snapshots) + ) emissions = ( n.generators.carrier.map(n.carriers.co2_emissions) / n.generators.efficiency ) - co2_cost = expand_series(emissions, n.snapshots).T.mul(co2_price.iloc[:, 0], axis=0) + co2_cost = expand_series(emissions, n.snapshots).T.mul(co2_price, axis=0) static = n.generators.marginal_cost dynamic = n.get_switchable_as_dense("Generator", "marginal_cost") @@ -144,6 +146,10 @@ def add_dynamic_emission_prices(n, fn): marginal_cost = dynamic + co2_cost.reindex(columns=dynamic.columns, fill_value=0) n.generators_t.marginal_cost = marginal_cost.loc[:, marginal_cost.ne(static).any()] + # remove the static marginal cost from generators with dynamic marginal cost + affected = co2_cost.where(co2_cost > 0).dropna(axis=1).columns + n.generators.loc[affected, "marginal_cost"] = 0.0 + def set_line_s_max_pu(n, s_max_pu=0.7): n.lines["s_max_pu"] = s_max_pu @@ -202,9 +208,9 @@ def average_every_nhours(n, offset, drop_leap_day=False): m.set_snapshots(snapshot_weightings.index) m.snapshot_weightings = snapshot_weightings - for c in n.iterate_components(): + for c in n.components: pnl = getattr(m, c.list_name + "_t") - for k, df in c.pnl.items(): + for k, df in c.dynamic.items(): if not df.empty: pnl[k] = df.resample(offset).mean() @@ -300,8 +306,8 @@ def set_line_nom_max( snakemake = mock_snakemake( "prepare_network", - clusters="37", - opts="Co2L-4H", + clusters="50", + opts="", ) configure_logging(snakemake) # pylint: disable=E0606 set_scenario_config(snakemake) @@ -334,7 +340,7 @@ def set_line_nom_max( maybe_adjust_costs_and_potentials(n, snakemake.params["adjustments"]) emission_prices = snakemake.params.emission_prices - if emission_prices["co2_monthly_prices"]: + if emission_prices["dynamic"]: logger.info( "Setting time dependent emission prices according spot market price" ) diff --git a/scripts/prepare_osm_network_release.py b/scripts/prepare_osm_network_release.py index a3562d5949..7829e2b752 100644 --- a/scripts/prepare_osm_network_release.py +++ b/scripts/prepare_osm_network_release.py @@ -2,14 +2,18 @@ # # SPDX-License-Identifier: MIT +import json import logging +import re +from pathlib import Path -import folium import geopandas as gpd import numpy as np import pandas as pd +import pydeck as pdk import pypsa -from shapely.wkt import loads +from shapely import wkt +from shapely.geometry import LineString, Polygon from scripts._helpers import configure_logging, set_scenario_config from scripts.base_network import _get_linetype_by_voltage @@ -17,7 +21,11 @@ logger = logging.getLogger(__name__) +DISTANCE_CRS = "EPSG:3035" GEO_CRS = "EPSG:4326" +LINE_SIMPLIFY = 30 # meters +STATIONS_SIMPLIFY = 100 # meters +BUSES_POLYGON_SIMPLIFY = 5 # meters BUSES_COLUMNS = [ "bus_id", "voltage", @@ -77,146 +85,1157 @@ "p_nom", "geometry", ] +ROUNDING_DECIMALS = { + "s_nom": 3, + "r": 6, + "x": 6, + "b": 8, +} def export_clean_csv( - df: pd.DataFrame, columns: list[str], output_file: str, rename_idx: str -): + df: pd.DataFrame, + columns: list[str], + output_file: str | Path, + rename_idx: str, + export: bool = True, +) -> pd.DataFrame: """ Export a cleaned DataFrame to a CSV file. - Args: - df (pandas.DataFrame): The DataFrame to be exported. - columns (list): A list of column names to include in the exported CSV file. - output_file (str): The path to the output CSV file. - rename_idx (str): The name to use for renaming the index column. + This function renames the DataFrame index, applies column renaming, + selects specified columns, converts boolean values to 't'/'f', and + exports the result to a CSV file. + + Parameters + ---------- + df : pd.DataFrame + The DataFrame to be exported. + columns : list[str] + Column names to include in the exported CSV file. + output_file : str | Path + Path to the output CSV file. + rename_idx : str + Name to use for the renamed index column. + export : bool, optional + Whether to perform store the cleaned CSV in the output directory, by default True. + + Returns + ------- + df : pd.DataFrame + The cleaned DataFrame that was exported. - Returns: - None """ + rename_dict = { "v_nom": "voltage", "num_parallel": "circuits", } - df.rename_axis(index=rename_idx).reset_index().rename(columns=rename_dict).loc[ - :, columns - ].replace({True: "t", False: "f"}).to_csv(output_file, index=False, quotechar="'") + df = ( + df.rename_axis(index=rename_idx) + .reset_index() + .rename(columns=rename_dict) + .loc[:, columns] + .replace({True: "t", False: "f"}) + ) + + if export: + df.to_csv(output_file, index=False, quotechar="'") - return None + return df -def create_geometries(network, is_converter, crs=GEO_CRS): +def linestring_to_coords(linestring: LineString) -> list[list[float]]: """ - Create GeoDataFrames for different network components with specified coordinate reference system (CRS). + Convert shapely LineString to list of [lon, lat] coordinates. Parameters ---------- - network (PyPSA Network): The network object containing buses, lines, links, converters, and transformers data. - is_converter (bool): Boolean that specifies if link element is a converter. - crs (str, optional): Coordinate reference system to be used for the GeoDataFrames. Defaults to GEO_CRS. + linestring : LineString + A shapely LineString geometry object. Returns ------- - tuple: A tuple containing the following GeoDataFrames: - - buses (GeoDataFrame): GeoDataFrame containing bus data with geometries. - - lines (GeoDataFrame): GeoDataFrame containing line data with geometries. - - links (GeoDataFrame): GeoDataFrame containing link data with geometries. - - converters (GeoDataFrame): GeoDataFrame containing converter data with geometries. - - transformers (GeoDataFrame): GeoDataFrame containing transformer data with geometries. + list[list[float]] + List of [longitude, latitude] coordinate pairs. + """ + return [[coord[0], coord[1]] for coord in linestring.coords] - buses_cols = [ - "v_nom", - "dc", - "symbol", - "under_construction", - "tags", - "geometry", - ] - buses = network.buses[ - [c for c in buses_cols if c in network.buses.columns] - ].reset_index() - buses["geometry"] = buses.geometry.apply(lambda x: loads(x)) - buses = gpd.GeoDataFrame(buses, geometry="geometry", crs=crs) - - lines_cols = [ - "bus0", - "bus1", - "v_nom", - "i_nom", - "num_parallel", - "s_nom", - "r", - "x", - "b", - "length", - "underground", - "under_construction", - "type", - "tags", - "geometry", - ] - lines = network.lines[ - [c for c in lines_cols if c in network.lines.columns] - ].reset_index() - # Create shapely linestring from geometry column - lines["geometry"] = lines.geometry.apply(lambda x: loads(x)) - lines = gpd.GeoDataFrame(lines, geometry="geometry", crs=crs) - - links_cols = [ - "bus0", - "bus1", - "v_nom", - "p_nom", - "length", - "underground", - "under_construction", - "tags", - "geometry", + +def polygon_to_coords(polygon: Polygon) -> list[list[float]]: + """ + Convert shapely Polygon to coordinate list for PyDeck. + + Parameters + ---------- + polygon : Polygon + A shapely Polygon geometry object. + + Returns + ------- + list[list[float]] + List of [longitude, latitude] coordinate pairs from exterior ring. + + """ + return [[coord[0], coord[1]] for coord in polygon.exterior.coords] + + +def get_line_colors(voltages: pd.Series) -> list: + """ + Get RGB colors for transmission lines based on voltage level ranges (vectorized). + + Uses discrete color ranges: yellow (low) → orange → red (high) → magenta (ultra-high). + DC lines are colored neon green regardless of voltage. + + Parameters + ---------- + voltages : pd.Series + Voltage levels in kV. + + Returns + ------- + list + List of RGBA colors as [R, G, B, A] arrays. + + """ + voltages = voltages.to_numpy() + n = len(voltages) + colors = np.zeros((n, 4), dtype=int) + colors[:, 3] = 150 # Alpha channel + + # Format: (min_voltage, max_voltage, [R, G, B]) + voltage_ranges = [ + (0, 110, [255, 255, 0]), # < 110 kV: Bright yellow + (110, 150, [255, 235, 0]), # 110-150 kV: Light yellow + (151, 240, [0, 250, 0]), # 151-240 kV: Green + (241, 280, [255, 165, 0]), # 241-280 kV: Orange + (281, 330, [255, 120, 0]), # 281-330 kV: Dark orange + (331, 350, [255, 69, 0]), # 331-350 kV: Orange-red + (351, 420, [255, 40, 0]), # 351-420 kV: Red-orange + (421, 520, [220, 20, 60]), # 421-520 kV: Crimson + (521, np.inf, [255, 0, 255]), # > 520 kV: Magenta ] - links = ( - network.links[~is_converter] - .rename(columns={"voltage": "v_nom"})[ - [c for c in links_cols if c in network.links.columns] - ] - .reset_index() + + # Apply colors based on voltage ranges + for v_min, v_max, rgb in voltage_ranges: + if v_max == np.inf: + mask = voltages >= v_min + else: + mask = (voltages >= v_min) & (voltages <= v_max) + colors[mask, :3] = rgb + + return colors.tolist() + + +def inject_custom_controls(deck: pdk.Deck, release_version: str) -> str: + """ + Inject interactive controls and URL-based state management into PyDeck HTML. + + Adds layer toggles, voltage/text filtering, theme switching, click-based + tooltips with OSM links, and URL hash synchronization for map state. + + Parameters + ---------- + deck : pdk.Deck + PyDeck Deck instance to export with custom controls. + release_version : str + Release version string to include in HTML title. + + Returns + ------- + str + HTML string with injected interactive controls and state management. + + """ + html = deck.to_html(as_string=True) + + html = html.replace( + "});\n\n ", + "});\nwindow.deck = deckInstance;\n\n ", ) - links["geometry"] = links.geometry.apply(lambda x: loads(x)) - links = gpd.GeoDataFrame(links, geometry="geometry", crs=crs) - - converters_cols = [ - "bus0", - "bus1", - "v_nom", - "p_nom", - "geometry", - ] - converters = ( - network.links[is_converter] - .rename(columns={"voltage": "v_nom"})[ - [c for c in converters_cols if c in network.links.columns] - ] - .reset_index() + + controls = """ + + + + + + +
+ +
+ + +
+ Use & for AND, | for OR +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ + """ + + html = html.replace( + '
', + controls + '
', ) - converters["geometry"] = converters.geometry.apply(lambda x: loads(x)) - converters = gpd.GeoDataFrame(converters, geometry="geometry", crs=crs) - - transformers_cols = [ - "bus0", - "bus1", - "voltage_bus0", - "voltage_bus1", - "s_nom", - "geometry", - ] - transformers = network.transformers[ - [c for c in transformers_cols if c in network.transformers.columns] - ].reset_index() - transformers["geometry"] = transformers.geometry.apply(lambda x: loads(x)) - transformers = gpd.GeoDataFrame(transformers, geometry="geometry", crs=crs) - return buses, lines, links, converters, transformers + html = html.replace( + "pydeck", + "PyPSA network (OSM " + release_version + ")", + ) + + return html + + +def compress_html(html: str) -> str: + """ + Compress HTML by removing unnecessary whitespace and comments. + + Reduces file size by minifying HTML, CSS, and JavaScript content + while preserving functionality. Aggressively compresses JSON data. + + Parameters + ---------- + html : str + HTML string to compress. + + Returns + ------- + str + Compressed HTML string. + + """ + # Remove HTML comments + html = re.sub(r"", "", html, flags=re.DOTALL) + + # Minify CSS only + def minify_css(match): + css = match.group(1) + css = re.sub(r"\s+", " ", css) + css = re.sub(r"\s*([{};:,])\s*", r"\1", css) + css = css.strip() + return f"" + + html = re.sub(r"", minify_css, html, flags=re.DOTALL) + + # Compress JSON data in the main script tag + def compress_json_in_script(match): + script_content = match.group(0) # Get the entire match including ", + compress_json_in_script, + html, + flags=re.DOTALL, + ) + + # Remove extra whitespace in HTML (but NOT in script tags) + parts = re.split(r"()", html, flags=re.DOTALL | re.IGNORECASE) + + for i in range(len(parts)): + if not parts[i].startswith("